diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2018-01-11 15:36:40 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-01-11 15:36:54 -0800 |
commit | d664fd41e15f058aab41b70c567ad09f2fab1115 (patch) | |
tree | a0afc6442dac6e36ef8351cdf17ddcb0d715767c /ld/testsuite | |
parent | 71d378ae60a4f072ce392046878d471255f6c8a1 (diff) | |
download | binutils-d664fd41e15f058aab41b70c567ad09f2fab1115.zip binutils-d664fd41e15f058aab41b70c567ad09f2fab1115.tar.gz binutils-d664fd41e15f058aab41b70c567ad09f2fab1115.tar.bz2 |
Ignore dynamic references on forced local symbols
We should ignore dynamic references on forced local symbols during
garbage collection since they can never be referenced dynamically.
bfd/
PR ld/22649
* elflink.c (bfd_elf_gc_mark_dynamic_ref_symbol): Ignore dynamic
references on forced local symbols.
ld/
PR ld/22649
* testsuite/ld-elf/pr22649-1.s: New file.
* testsuite/ld-elf/pr22649-2a.s: Likewise.
* testsuite/ld-elf/pr22649-2b.s: Likewise.
* testsuite/ld-elf/pr22649.msg: Likewise.
* testsuite/ld-elf/shared.exp: Run ld/22649 tests.
Diffstat (limited to 'ld/testsuite')
-rw-r--r-- | ld/testsuite/ld-elf/pr22649-1.s | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr22649-2a.s | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr22649-2b.s | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr22649.msg | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/shared.exp | 45 |
5 files changed, 65 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/pr22649-1.s b/ld/testsuite/ld-elf/pr22649-1.s new file mode 100644 index 0000000..9a7da7e --- /dev/null +++ b/ld/testsuite/ld-elf/pr22649-1.s @@ -0,0 +1,4 @@ + .data + .globl foo +foo: + .dc.a bar diff --git a/ld/testsuite/ld-elf/pr22649-2a.s b/ld/testsuite/ld-elf/pr22649-2a.s new file mode 100644 index 0000000..b5908b0 --- /dev/null +++ b/ld/testsuite/ld-elf/pr22649-2a.s @@ -0,0 +1,8 @@ + .data + .hidden foo + .hidden bar + .globl foo + .globl bar +foo: +bar: + .dc.a foo diff --git a/ld/testsuite/ld-elf/pr22649-2b.s b/ld/testsuite/ld-elf/pr22649-2b.s new file mode 100644 index 0000000..999686c --- /dev/null +++ b/ld/testsuite/ld-elf/pr22649-2b.s @@ -0,0 +1,7 @@ + .data + .hidden foo + .globl foo + .globl bar +foo: +bar: + .dc.a foo diff --git a/ld/testsuite/ld-elf/pr22649.msg b/ld/testsuite/ld-elf/pr22649.msg new file mode 100644 index 0000000..b4e45bd --- /dev/null +++ b/ld/testsuite/ld-elf/pr22649.msg @@ -0,0 +1 @@ +.*: Removing unused section '\.data' in file 'tmpdir/pr22649-2.*\.o' diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index 0c54568..95bac37 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -81,6 +81,51 @@ run_ld_link_tests [list \ {} \ "pr22471" \ ] \ + [list \ + "Build pr22649-1.so" \ + "$LFLAGS -shared" \ + "" \ + "$AFLAGS_PIC" \ + {pr22649-1.s} \ + {} \ + "pr22649-1.so" \ + ] \ + [list \ + "Build pr22649-2a.so" \ + "$LFLAGS -shared -gc-sections -print-gc-sections" \ + "" \ + "$AFLAGS_PIC" \ + {pr22649-2a.s} \ + {{ld pr22649.msg}} \ + "pr22649-2a.so" \ + ] \ + [list \ + "Build pr22649-2b.so" \ + "$LFLAGS -shared -gc-sections -print-gc-sections" \ + "tmpdir/pr22649-1.so" \ + "$AFLAGS_PIC" \ + {pr22649-2a.s} \ + {{ld pr22649.msg}} \ + "pr22649-2b.so" \ + ] \ + [list \ + "Build pr22649-2c.so" \ + "$LFLAGS -shared -gc-sections -print-gc-sections" \ + "" \ + "$AFLAGS_PIC" \ + {pr22649-2b.s} \ + {} \ + "pr22649-2b.so" \ + ] \ + [list \ + "Build pr22649-2d.so" \ + "$LFLAGS -shared -gc-sections -print-gc-sections" \ + "tmpdir/pr22649-1.so" \ + "$AFLAGS_PIC" \ + {pr22649-2b.s} \ + {} \ + "pr22649-2b.so" \ + ] \ ] run_ld_link_tests [list \ |