From: H.J. Lu Date: Fri, 2 Jun 2017 21:49:37 +0000 (-0700) Subject: x86: Remove linker option: -z prefix-nop X-Git-Tag: users/ARM/embedded-binutils-2_28-branch-2017q2~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=95ac14985ad46e61b8444603adec772d7241d7f0;p=thirdparty%2Fbinutils-gdb.git x86: Remove linker option: -z prefix-nop Since it is incorrect to convert bnd call *foo@GOTPCREL(%rip) to bnd nop call foo this patch removes the "-z prefix-nop" option from x86 linker. * emulparams/call_nop.sh: Remove -z prefix-nop. * ld.texinfo: Likewise. * testsuite/ld-i386/call3c.d: Check for linker error. * testsuite/ld-x86-64/call1c.d: Likewise. (cherry picked from commit 4a4a4a27ba5c731044d3d3594545e6f06b0ec0e5) --- diff --git a/ld/ChangeLog b/ld/ChangeLog index c3bdcbaf1dc..5a9544ebb68 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2017-06-02 H.J. Lu + + * emulparams/call_nop.sh: Remove -z prefix-nop. + * ld.texinfo: Likewise. + * testsuite/ld-i386/call3c.d: Check for linker error. + * testsuite/ld-x86-64/call1c.d: Likewise. + 2017-05-31 Alan Modra * emultempl/ppc64elf.em (plt-static-chain help): Fix quoting. diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh index fee4a8154e9..d45806ca94d 100644 --- a/ld/emulparams/call_nop.sh +++ b/ld/emulparams/call_nop.sh @@ -10,11 +10,6 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP=' link_info.call_nop_as_suffix = FALSE; link_info.call_nop_byte = 0x67; } - else if (strcmp (optarg + 9, "prefix-nop") == 0) - { - link_info.call_nop_as_suffix = FALSE; - link_info.call_nop_byte = 0x90; - } else if (strcmp (optarg + 9, "suffix-nop") == 0) { link_info.call_nop_as_suffix = TRUE; diff --git a/ld/ld.texinfo b/ld/ld.texinfo index d393acdd940..4b5046a6bbb 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1219,14 +1219,12 @@ relocation overflow check if there will be no dynamic relocation overflow at run-time. Supported for x86_64. @item call-nop=prefix-addr -@itemx call-nop=prefix-nop @itemx call-nop=suffix-nop @itemx call-nop=prefix-@var{byte} @itemx call-nop=suffix-@var{byte} Specify the 1-byte @code{NOP} padding when transforming indirect call to a locally defined function, foo, via its GOT slot. @option{call-nop=prefix-addr} generates @code{0x67 call foo}. -@option{call-nop=prefix-nop} generates @code{0x90 call foo}. @option{call-nop=suffix-nop} generates @code{call foo 0x90}. @option{call-nop=prefix-@var{byte}} generates @code{@var{byte} call foo}. @option{call-nop=suffix-@var{byte}} generates @code{call foo @var{byte}}. diff --git a/ld/testsuite/ld-i386/call3c.d b/ld/testsuite/ld-i386/call3c.d index 0fdbee454a3..f869dcc8861 100644 --- a/ld/testsuite/ld-i386/call3c.d +++ b/ld/testsuite/ld-i386/call3c.d @@ -1,14 +1,4 @@ #source: call3.s #as: --32 -mrelax-relocations=yes #ld: -melf_i386 -z call-nop=prefix-nop -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .text: - -#... -[ ]*[a-f0-9]+: 90 nop -[ ]*[a-f0-9]+: e8 ([0-9a-f]{2} ){4} * call +[a-f0-9]+ -#pass +#error: invalid number for -z call-nop=prefix-: nop diff --git a/ld/testsuite/ld-x86-64/call1c.d b/ld/testsuite/ld-x86-64/call1c.d index 7fe8056e49d..70933daa10a 100644 --- a/ld/testsuite/ld-x86-64/call1c.d +++ b/ld/testsuite/ld-x86-64/call1c.d @@ -1,14 +1,4 @@ #source: call1.s #as: --64 -mrelax-relocations=yes #ld: -melf_x86_64 -z call-nop=prefix-nop -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .text: - -#... -[ ]*[a-f0-9]+: 90 nop -[ ]*[a-f0-9]+: e8 ([0-9a-f]{2} ){4} * callq +[a-f0-9]+ -#pass +#error: invalid number for -z call-nop=prefix-: nop