X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fld.texinfo;h=067f1f6436a3d39fe6eb2a49a8d76b3b102a2a16;hb=b354976135880498dc76cb68e9ab47520205081b;hp=835482d1c294e24609539fe441e36be78e7a9428;hpb=c17d87de17351aed016a9d0b0712cdee4cca5f9e;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/ld.texinfo b/ld/ld.texinfo index 835482d1c2..067f1f6436 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -487,9 +487,9 @@ back to the symbols defined by the program, rather than some other dynamic object, then you will probably need to use this option when linking the program itself. -You can also use the version script to control what symbols should +You can also use the dynamic list to control what symbols should be added to the dynamic symbol table if the output format supports it. -See the description of @samp{--version-script} in @ref{VERSION}. +See the description of @samp{--dynamic-list}. @ifclear SingleFormat @cindex big-endian objects @@ -909,11 +909,11 @@ Delete all local symbols. @kindex -X @kindex --discard-locals @cindex local symbols, deleting -@cindex L, deleting symbols beginning @item -X @itemx --discard-locals -Delete all temporary local symbols. For most targets, this is all local -symbols whose names begin with @samp{L}. +Delete all temporary local symbols. (These symbols start with +system-specific local label prefixes, typically @samp{.L} for ELF systems +or @samp{L} for traditional a.out systems.) @kindex -y @var{symbol} @kindex --trace-symbol=@var{symbol} @@ -1130,6 +1130,23 @@ for a program linked against a shared library to override the definition within the shared library. This option is only meaningful on ELF platforms which support shared libraries. +@kindex --dynamic-list=@var{dynamic-list-file} +@item --dynamic-list=@var{dynamic-list-file} +Specify the name of a dynamic list file to the linker. This is +typically used when creating shared libraries to specify a list of +global symbols whose references shouldn't be bound to the definition +within the shared library, or creating dynamically linked executables +to specify a list of symbols which should be added to the symbol table +in the executable. This option is only meaningful on ELF platforms +which support shared libraries. + +The format of the dynamic list is the same as the version node without +scope and node name. See @ref{VERSION} for more information. + +@kindex --dynamic-list-cpp-typeinfo +@item --dynamic-list-cpp-typeinfo +Provide the builtin dynamic list for C++ runtime type identification. + @kindex --check-sections @kindex --no-check-sections @item --check-sections @@ -1234,9 +1251,9 @@ it ends in a @code{.exe} suffix. @itemx --no-gc-sections Enable garbage collection of unused input sections. It is ignored on targets that do not support this option. This option is not compatible -with @samp{-r}. The default behaviour (of not performing this garbage -collection) can be restored by specifying @samp{--no-gc-sections} on -the command line. +with @samp{-r} or @samp{--emit-relocs}. The default behaviour (of not +performing this garbage collection) can be restored by specifying +@samp{--no-gc-sections} on the command line. @kindex --print-gc-sections @kindex --no-print-gc-sections @@ -3667,19 +3684,23 @@ scripts. @cindex discarding sections @cindex sections, discarding @cindex removing sections -The linker will not create output section which do not have any -contents. This is for convenience when referring to input sections that -may or may not be present in any of the input files. For example: +The linker will not create output sections with no contents. This is +for convenience when referring to input sections that may or may not +be present in any of the input files. For example: @smallexample -.foo @{ *(.foo) @} +.foo : @{ *(.foo) @} @end smallexample @noindent will only create a @samp{.foo} section in the output file if there is a -@samp{.foo} section in at least one input file. +@samp{.foo} section in at least one input file, and if the input +sections are not all empty. Other link script directives that allocate +space in an output section will also create the output section. -If you use anything other than an input section description as an output -section command, such as a symbol assignment, then the output section -will always be created, even if there are no matching input sections. +The linker will ignore address assignments (@xref{Output Section Address}) +on discarded output sections, except when the linker script defines +symbols in the output section. In that case the linker will obey +the address assignments, possibly advancing dot and/or current lma +even though the section is discarded. @cindex /DISCARD/ The special output section name @samp{/DISCARD/} may be used to discard @@ -3764,15 +3785,20 @@ Every section has a virtual address (VMA) and a load address (LMA); see an output section description sets the VMA (@pxref{Output Section Address}). -The linker will normally set the LMA equal to the VMA. You can change -that by using the @code{AT} keyword. The expression @var{lma} that -follows the @code{AT} keyword specifies the load address of the -section. +The expression @var{lma} that follows the @code{AT} keyword specifies +the load address of the section. Alternatively, with @samp{AT>@var{lma_region}} expression, you may specify a memory region for the section's load address. @xref{MEMORY}. Note that if the section has not had a VMA assigned to it then the linker will use the @var{lma_region} as the VMA region as well. + +If neither @code{AT} nor @code{AT>} is specified for an allocatable +section, the linker will set the LMA such that the difference between +VMA and LMA for the section is the same as the preceding output +section in the same region. If there is no preceding output section +or the section is not allocatable, the linker will set the LMA equal +to the VMA. @xref{Output Section Region}. @cindex ROM initialized data @@ -4586,7 +4612,9 @@ anywhere that an ordinary symbol is allowed in an expression. @cindex holes Assigning a value to @code{.} will cause the location counter to be moved. This may be used to create holes in the output section. The -location counter may never be moved backwards. +location counter may not be moved backwards inside an output section, +and may not be moved backwards outside of an output section if so +doing creates areas with overlapping LMAs. @smallexample SECTIONS