diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2014-08-07 09:53:46 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2014-08-07 10:28:48 +0930 |
commit | db7129469b10a701659f0e38e3edeb2191236831 (patch) | |
tree | 7434faef30933c44ba6d79bc9f9f4b136f07f928 /ld | |
parent | 59c2656733ccb54660f48c10608f4c1753dcaf01 (diff) | |
download | gdb-db7129469b10a701659f0e38e3edeb2191236831.zip gdb-db7129469b10a701659f0e38e3edeb2191236831.tar.gz gdb-db7129469b10a701659f0e38e3edeb2191236831.tar.bz2 |
Don't issue a warning for references in LTO IR to warning symbols
bfd/
PR ld/16746
* linker.c (_bfd_generic_link_add_one_symbol): Don't issue a
warning for references in LTO IR to warning symbols.
ld/testsuite/
PR ld/16746
* ld-plugin/lto.exp: Add 4 tests for PR ld/16746.
* ld-plugin/pr16746a.c: New file.
* ld-plugin/pr16746b.c: Likewise.
* ld-plugin/pr16746c.c: Likewise.
* ld-plugin/pr16746d.c: Likewise.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/lto.exp | 26 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr16746a.c | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr16746b.c | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr16746c.c | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr16746d.c | 8 |
6 files changed, 59 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index da8f2f5..bcddeac 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2014-08-07 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/16746 + * ld-plugin/lto.exp: Add 4 tests for PR ld/16746. + * ld-plugin/pr16746a.c: New file. + * ld-plugin/pr16746b.c: Likewise. + * ld-plugin/pr16746c.c: Likewise. + * ld-plugin/pr16746d.c: Likewise. + 2014-08-06 Alan Modra <amodra@gmail.com> * lib/ld-lib.exp (check_lto_fat_available): New. diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp index 432c753..7ff5bfb 100644 --- a/ld/testsuite/ld-plugin/lto.exp +++ b/ld/testsuite/ld-plugin/lto.exp @@ -232,6 +232,18 @@ set lto_link_elf_tests [list \ [list "Build libpr15146d.a" \ "$plug_opt" "-flto -O2" \ {pr15146d.c} {} "lib15146d.a"] \ + [list "Build libpr16746a.a" \ + "" "" \ + {pr16746a.c pr16746b.c} {} "lib15146a.a"] \ + [list "Build libpr16746b.a" \ + "$plug_opt" "-O2 -flto" \ + {pr16746c.c pr16746d.c} {} "lib15146b.a"] \ + [list "PR ld/16746 (1)" \ + "-O2 -flto -fuse-linker-plugin tmpdir/pr16746a.o tmpdir/pr16746c.o" "-O2 -flto" \ + {dummy.c} {} "pr16746a.exe"] \ + [list "PR ld/16746 (2)" \ + "-O2 -flto -fuse-linker-plugin tmpdir/pr16746c.o tmpdir/pr16746a.o" "-O2 -flto" \ + {dummy.c} {} "pr16746b.exe"] \ ] # Check final symbols in executables. @@ -335,6 +347,20 @@ if { [is_elf_format] && [check_lto_shared_available] } { } { fail $testname } + set testname "PR ld/16746 (3)" + set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746b.o tmpdir/pr16746d.o"] + if { [ regexp "warning: foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } { + pass $testname + } { + fail $testname + } + set testname "PR ld/16746 (4)" + set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746d.o tmpdir/pr16746b.o"] + if { [ regexp "warning: foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } { + pass $testname + } { + fail $testname + } } set testname "Build liblto-11.a" diff --git a/ld/testsuite/ld-plugin/pr16746a.c b/ld/testsuite/ld-plugin/pr16746a.c new file mode 100644 index 0000000..1705ef1 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr16746a.c @@ -0,0 +1,3 @@ +static const char __evoke_link_warning_foobar[] + __attribute__ ((used, section (".gnu.warning.foobar\n\t#"))) + = "foobar"; diff --git a/ld/testsuite/ld-plugin/pr16746b.c b/ld/testsuite/ld-plugin/pr16746b.c new file mode 100644 index 0000000..c3b7a78 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr16746b.c @@ -0,0 +1,5 @@ +static const char __evoke_link_warning_foobar[] + __attribute__ ((used, section (".gnu.warning.foobar\n\t#"))) + = "foobar"; + +void foobar (void) {} diff --git a/ld/testsuite/ld-plugin/pr16746c.c b/ld/testsuite/ld-plugin/pr16746c.c new file mode 100644 index 0000000..fb68ab7 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr16746c.c @@ -0,0 +1,8 @@ +extern void foobar (void); +int +main (int argc, char **argv) +{ + if (__builtin_constant_p (argc)) + foobar (); + return 0; +} diff --git a/ld/testsuite/ld-plugin/pr16746d.c b/ld/testsuite/ld-plugin/pr16746d.c new file mode 100644 index 0000000..1fee4dd --- /dev/null +++ b/ld/testsuite/ld-plugin/pr16746d.c @@ -0,0 +1,8 @@ +extern void foobar (void); +int +main (int argc, char **argv) +{ + if (!__builtin_constant_p (argc)) + foobar (); + return 0; +} |