diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-04-11 07:34:49 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-04-11 07:56:48 -0700 |
commit | e3c0e327923e27c7d96e6e44e22e10998ff158d7 (patch) | |
tree | d4dfd7ed0875d03e7b6c8f1cd51b855fe07d80fb /ld | |
parent | fbed9c2759d43ea6991264c2e963660b5e9202d1 (diff) | |
download | gdb-e3c0e327923e27c7d96e6e44e22e10998ff158d7.zip gdb-e3c0e327923e27c7d96e6e44e22e10998ff158d7.tar.gz gdb-e3c0e327923e27c7d96e6e44e22e10998ff158d7.tar.bz2 |
Replace SYMBOLIC_BIND with SYMBOL_REFERENCES_LOCAL
When checking R_386_GOTOFF/R_X86_64_GOTOFF64 for building shared library,
we should check SYMBOL_REFERENCES_LOCAL instead of SYMBOLIC_BIND to cover
more cases.
bfd/
* elf32-i386.c (elf_i386_relocate_section): Replace SYMBOLIC_BIND
with SYMBOL_REFERENCES_LOCAL when checking R_386_GOTOFF against
protected data symbol when building shared library.
* elf64-x86-64.c (elf_x86_64_relocate_section): Check
R_X86_64_GOTOFF64 against undefined symbol and replace
SYMBOLIC_BIND with SYMBOL_REFERENCES_LOCAL when checking
R_X86_64_GOTOFF64 against protected data symbol when building
shared library.
ld/testsuite/
* ld-i386/i386.exp: Run protected6a.
* ld-i386/protected6.d: Renamed to ...
* ld-i386/protected6a.d: This.
* ld-x86-64/hidden4.d: New file.
* ld-x86-64/hidden4.s: Likewise.
* ld-x86-64/hidden5.d: Likewise.
* ld-x86-64/hidden5.s: Likewise.
* ld-x86-64/protected6.d: Renamed to ...
* ld-x86-64/protected6a.d: This.
* ld-x86-64/x86-64.exp: Run hidden4, hidden5, protected6a,
protected7a and protected7b.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ChangeLog | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/protected6a.d (renamed from ld/testsuite/ld-i386/protected6.d) | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/hidden4.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/hidden4.s | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/hidden5.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/hidden5.s | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/protected6a.d (renamed from ld/testsuite/ld-x86-64/protected6.d) | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/x86-64.exp | 4 |
9 files changed, 41 insertions, 2 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index c4bc387..8b45279 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,17 @@ +2015-04-11 H.J. Lu <hongjiu.lu@intel.com> + + * ld-i386/i386.exp: Run protected6a. + * ld-i386/protected6.d: Renamed to ... + * ld-i386/protected6a.d: This. + * ld-x86-64/hidden4.d: New file. + * ld-x86-64/hidden4.s: Likewise. + * ld-x86-64/hidden5.d: Likewise. + * ld-x86-64/hidden5.s: Likewise. + * ld-x86-64/protected6.d: Renamed to ... + * ld-x86-64/protected6a.d: This. + * ld-x86-64/x86-64.exp: Run hidden4, hidden5, protected6a, + protected7a and protected7b. + 2015-04-10 H.J. Lu <hongjiu.lu@intel.com> PR ld/pr17709 diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 3dd1139..0c0fd96 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -236,7 +236,7 @@ run_dump_test "protected2" run_dump_test "protected3" run_dump_test "protected4" run_dump_test "protected5" -run_dump_test "protected6" +run_dump_test "protected6a" run_dump_test "tlspie1" run_dump_test "tlspie2" run_dump_test "nogot1" diff --git a/ld/testsuite/ld-i386/protected6.d b/ld/testsuite/ld-i386/protected6a.d index 37d5132..7dc3504 100644 --- a/ld/testsuite/ld-i386/protected6.d +++ b/ld/testsuite/ld-i386/protected6a.d @@ -1,3 +1,4 @@ +#source: protected6.s #as: --32 #ld: -shared -melf_i386 #error: .*relocation R_386_GOTOFF against protected data `foo' can not be used when making a shared object diff --git a/ld/testsuite/ld-x86-64/hidden4.d b/ld/testsuite/ld-x86-64/hidden4.d new file mode 100644 index 0000000..2f36d008 --- /dev/null +++ b/ld/testsuite/ld-x86-64/hidden4.d @@ -0,0 +1,3 @@ +#as: --64 +#ld: -shared -melf_x86_64 +#error: .*relocation R_X86_64_GOTOFF64 against undefined hidden symbol `foo' can not be used when making a shared object diff --git a/ld/testsuite/ld-x86-64/hidden4.s b/ld/testsuite/ld-x86-64/hidden4.s new file mode 100644 index 0000000..3e6a2a1 --- /dev/null +++ b/ld/testsuite/ld-x86-64/hidden4.s @@ -0,0 +1,8 @@ + .text +.globl bar + .type bar, @function +bar: + movabsq $foo@GOTOFF, %rax + .size bar, .-bar + .weak foo + .hidden foo diff --git a/ld/testsuite/ld-x86-64/hidden5.d b/ld/testsuite/ld-x86-64/hidden5.d new file mode 100644 index 0000000..2f36d008 --- /dev/null +++ b/ld/testsuite/ld-x86-64/hidden5.d @@ -0,0 +1,3 @@ +#as: --64 +#ld: -shared -melf_x86_64 +#error: .*relocation R_X86_64_GOTOFF64 against undefined hidden symbol `foo' can not be used when making a shared object diff --git a/ld/testsuite/ld-x86-64/hidden5.s b/ld/testsuite/ld-x86-64/hidden5.s new file mode 100644 index 0000000..f356076 --- /dev/null +++ b/ld/testsuite/ld-x86-64/hidden5.s @@ -0,0 +1,7 @@ + .text +.globl bar + .type bar, @function +bar: + movabsq $foo@GOTOFF, %rax + .size bar, .-bar + .hidden foo diff --git a/ld/testsuite/ld-x86-64/protected6.d b/ld/testsuite/ld-x86-64/protected6a.d index 872a9f6..3a7963f 100644 --- a/ld/testsuite/ld-x86-64/protected6.d +++ b/ld/testsuite/ld-x86-64/protected6a.d @@ -1,3 +1,4 @@ +#source: protected6.s #as: --64 #ld: -shared -melf_x86_64 #error: .*relocation R_X86_64_GOTOFF64 against protected data `foo' can not be used when making a shared object diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 63754ef..213a4c0 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -211,6 +211,8 @@ run_dump_test "tlsie3" run_dump_test "hidden1" run_dump_test "hidden2" run_dump_test "hidden3" +run_dump_test "hidden4" +run_dump_test "hidden5" run_dump_test "protected1" run_dump_test "protected2" run_dump_test "protected2-l1om" @@ -218,7 +220,7 @@ run_dump_test "protected3" run_dump_test "protected3-l1om" run_dump_test "protected4" run_dump_test "protected5" -run_dump_test "protected6" +run_dump_test "protected6a" run_dump_test "protected7a" run_dump_test "protected7b" run_dump_test "tlsle1" |