From d882c9889312591a8bfdbc1740938780cd4032bd Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 10 Jul 2020 16:58:49 +0930 Subject: [PATCH] Document powerpc64 ld options * ld.texi (PowerPC64 ELF64): Document --no-inline-optimize, --power10-stubs and --no-power10-stubs. --- ld/ChangeLog | 5 +++++ ld/ld.texi | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/ld/ChangeLog b/ld/ChangeLog index b9c844ced36..c0bbaf95dfa 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2020-07-10 Alan Modra + + * ld.texi (PowerPC64 ELF64): Document --no-inline-optimize, + --power10-stubs and --no-power10-stubs. + 2020-07-10 Alan Modra * emultempl/ppc64elf.em (params): Init new field. diff --git a/ld/ld.texi b/ld/ld.texi index 40b042de9b9..165a3d935e1 100644 --- a/ld/ld.texi +++ b/ld/ld.texi @@ -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 -- 2.30.2