From: H.J. Lu Date: Fri, 2 Jun 2017 21:49:37 +0000 (-0700) Subject: x86: Remove linker option: -z prefix-nop X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=4a4a4a27ba5c731044d3d3594545e6f06b0ec0e5;p=deliverable%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. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index e2d549643b..ee9fff0c60 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-06-01 Alan Modra * emultempl/ppc64elf.em (params): Init plt_localentry0 field. diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh index fee4a8154e..d45806ca94 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 9a72cb9e4d..edf1e31a8b 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1250,14 +1250,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 0fdbee454a..f869dcc886 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 7fe8056e49..70933daa10 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