Line 1... |
Line 1... |
\input texinfo
|
\input texinfo
|
@setfilename ld.info
|
@setfilename ld.info
|
@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
@c Free Software Foundation, Inc.
|
@c Free Software Foundation, Inc.
|
@syncodeindex ky cp
|
@syncodeindex ky cp
|
@c man begin INCLUDE
|
@c man begin INCLUDE
|
@include configdoc.texi
|
@include configdoc.texi
|
@c (configdoc.texi is generated by the Makefile)
|
@c (configdoc.texi is generated by the Makefile)
|
Line 6708... |
Line 6708... |
optimization.
|
optimization.
|
|
|
@cindex PowerPC64 multi-TOC
|
@cindex PowerPC64 multi-TOC
|
@kindex --no-multi-toc
|
@kindex --no-multi-toc
|
@item --no-multi-toc
|
@item --no-multi-toc
|
By default, PowerPC64 GCC generates code for a TOC model where TOC
|
If given any toc option besides @code{-mcmodel=medium} or
|
|
@code{-mcmodel=large}, PowerPC64 GCC generates code for a TOC model
|
|
where TOC
|
entries are accessed with a 16-bit offset from r2. This limits the
|
entries are accessed with a 16-bit offset from r2. This limits the
|
total TOC size to 64K. PowerPC64 @command{ld} extends this limit by
|
total TOC size to 64K. PowerPC64 @command{ld} extends this limit by
|
grouping code sections such that each group uses less than 64K for its
|
grouping code sections such that each group uses less than 64K for its
|
TOC entries, then inserts r2 adjusting stubs between inter-group
|
TOC entries, then inserts r2 adjusting stubs between inter-group
|
calls. @command{ld} does not split apart input sections, so cannot
|
calls. @command{ld} does not split apart input sections, so cannot
|
help if a single input file has a @code{.toc} section that exceeds
|
help if a single input file has a @code{.toc} section that exceeds
|
64K, most likely from linking multiple files with @command{ld -r}.
|
64K, most likely from linking multiple files with @command{ld -r}.
|
Use this option to turn off this feature.
|
Use this option to turn off this feature.
|
|
|
|
@cindex PowerPC64 TOC sorting
|
|
@kindex --no-toc-sort
|
|
@item --no-toc-sort
|
|
By default, @command{ld} sorts TOC sections so that those whose file
|
|
happens to have a section called @code{.init} or @code{.fini} are
|
|
placed first, followed by TOC sections referenced by code generated
|
|
with PowerPC64 gcc's @code{-mcmodel=small}, and lastly TOC sections
|
|
referenced only by code generated with PowerPC64 gcc's
|
|
@code{-mcmodel=medium} or @code{-mcmodel=large} options. Doing this
|
|
results in better TOC grouping for multi-TOC. Use this option to turn
|
|
off this feature.
|
|
|
|
@cindex PowerPC64 PLT stub alignment
|
|
@kindex --plt-align
|
|
@kindex --no-plt-align
|
|
@item --plt-align
|
|
@itemx --no-plt-align
|
|
Use these options to control whether individual PLT call stubs are
|
|
aligned to a 32-byte boundary, or to the specified power of two
|
|
boundary when using @code{--plt-align=}. By default PLT call stubs
|
|
are packed tightly.
|
|
|
|
@cindex PowerPC64 PLT call stub static chain
|
|
@kindex --plt-static-chain
|
|
@kindex --no-plt-static-chain
|
|
@item --plt-static-chain
|
|
@itemx --no-plt-static-chain
|
|
Use these options to control whether PLT call stubs load the static
|
|
chain pointer (r11). @code{ld} defaults to not loading the static
|
|
chain since there is never any need to do so on a PLT call.
|
|
|
|
@cindex PowerPC64 PLT call stub thread safety
|
|
@kindex --plt-thread-safe
|
|
@kindex --no-plt-thread-safe
|
|
@item --plt-thread-safe
|
|
@itemx --no-thread-safe
|
|
With power7's weakly ordered memory model, it is possible when using
|
|
lazy binding for ld.so to update a plt entry in one thread and have
|
|
another thread see the individual plt entry words update in the wrong
|
|
order, despite ld.so carefully writing in the correct order and using
|
|
memory write barriers. To avoid this we need some sort of read
|
|
barrier in the call stub, or use LD_BIND_NOW=1. By default, @code{ld}
|
|
looks for calls to commonly used functions that create threads, and if
|
|
seen, adds the necessary barriers. Use these options to change the
|
|
default behaviour.
|
@end table
|
@end table
|
|
|
@ifclear GENERIC
|
@ifclear GENERIC
|
@lowersections
|
@lowersections
|
@end ifclear
|
@end ifclear
|