diff options
author | Alan Modra <amodra@gmail.com> | 2020-07-10 16:58:49 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-07-10 16:59:50 +0930 |
commit | d882c9889312591a8bfdbc1740938780cd4032bd (patch) | |
tree | 8623c118daa38f6a21475994b0e49ea058bd0957 /ld | |
parent | d3b10ee787216d304a858246656ed2fdaecdfd93 (diff) | |
download | fsf-binutils-gdb-d882c9889312591a8bfdbc1740938780cd4032bd.zip fsf-binutils-gdb-d882c9889312591a8bfdbc1740938780cd4032bd.tar.gz fsf-binutils-gdb-d882c9889312591a8bfdbc1740938780cd4032bd.tar.bz2 |
Document powerpc64 ld options
* ld.texi (PowerPC64 ELF64): Document --no-inline-optimize,
--power10-stubs and --no-power10-stubs.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/ld.texi | 27 |
2 files changed, 32 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index b9c844c..c0bbaf9 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,10 @@ 2020-07-10 Alan Modra <amodra@gmail.com> + * ld.texi (PowerPC64 ELF64): Document --no-inline-optimize, + --power10-stubs and --no-power10-stubs. + +2020-07-10 Alan Modra <amodra@gmail.com> + * emultempl/ppc64elf.em (params): Init new field. (enum ppc64_opt): Add OPTION_POWER10_STUBS and OPTION_NO_POWER10_STUBS. (PARSE_AND_LIST_LONGOPTS): Support --power10-stubs and @@ -7823,6 +7823,16 @@ reliably for compiler generated code, but may be incorrect if assembly code is used to insert TOC entries. Use this option to disable the optimization. +@cindex PowerPC64 inline PLT call optimization +@kindex --no-inline-optimize +@item --no-inline-optimize +PowerPC64 @command{ld} normally replaces inline PLT call sequences +marked with @code{R_PPC64_PLTSEQ}, @code{R_PPC64_PLTCALL}, +@code{R_PPC64_PLT16_HA} and @code{R_PPC64_PLT16_LO_DS} relocations by +a number of @code{nop}s and a direct call when the function is defined +locally and can't be overridden by some other definition. This option +disables that optimization. + @cindex PowerPC64 multi-TOC @kindex --no-multi-toc @item --no-multi-toc @@ -7904,6 +7914,23 @@ including system libraries, can cause a function that was localentry:0 to become localentry:8. This will result in a dynamic loader complaint and failure to run. The option is experimental, use with care. @option{--no-plt-localentry} is the default. + +@cindex PowerPC64 Power10 stubs +@kindex --power10-stubs +@kindex --no-power10-stubs +@item --power10-stubs +@itemx --no-power10-stubs +When PowerPC64 @command{ld} links input object files containing +relocations used on power10 prefixed instructions it normally creates +linkage stubs (PLT call and long branch) using power10 instructions. +In particular for @code{@@notoc} PLT calls where @code{r2} is not +known the power10 stubs are smaller and faster, so are preferred for +power10. @option{--power10-stubs} and @option{--no-power10-stubs} +allow you to override the linker's selection of stub instructions. +For example, when linking a shared library that contains cpu-optimized +versions of functions for both power9 and power10, you might use +@option{--no-power10-stubs} so that power9 code making calls doesn't +attempt to execute power10 instructions. @end table @ifclear GENERIC |