bfd/
* elf32-vax.c (elf_vax_adjust_dynamic_symbol): Don't allocate PLT slots for local symbols. ld/testsuite/ * ld-vax-elf: New directory. * ld-vax-elf/plt-local-lib.dd: New test. * ld-vax-elf/plt-local-lib.ld: New test linker script. * ld-vax-elf/plt-local-lib.s: New test source. * ld-vax-elf/plt-local.dd: New test. * ld-vax-elf/plt-local.ld: New test linker script. * ld-vax-elf/plt-local.s: New test source. * ld-vax-elf/plt-local-hidden-pic.s: New test source. * ld-vax-elf/plt-local-rehidden-pic.s: New test source. * ld-vax-elf/vax-elf.exp: New test script.
This commit is contained in:
parent
1e5901e69d
commit
a22a803903
|
@ -1,3 +1,8 @@
|
||||||
|
2012-08-05 Maciej W. Rozycki <macro@linux-mips.org>
|
||||||
|
|
||||||
|
* elf32-vax.c (elf_vax_adjust_dynamic_symbol): Don't allocate
|
||||||
|
PLT slots for local symbols.
|
||||||
|
|
||||||
2012-08-03 Maciej W. Rozycki <macro@codesourcery.com>
|
2012-08-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||||
|
|
||||||
* elf64-mips.c (mips16_elf64_howto_table_rela): Correct src_mask
|
* elf64-mips.c (mips16_elf64_howto_table_rela): Correct src_mask
|
||||||
|
|
|
@ -933,39 +933,21 @@ elf_vax_adjust_dynamic_symbol (info, h)
|
||||||
if (h->type == STT_FUNC
|
if (h->type == STT_FUNC
|
||||||
|| h->needs_plt)
|
|| h->needs_plt)
|
||||||
{
|
{
|
||||||
if (! info->shared
|
if (h->plt.refcount <= 0
|
||||||
&& !h->def_dynamic
|
|| SYMBOL_CALLS_LOCAL (info, h)
|
||||||
&& !h->ref_dynamic
|
|| (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
|
||||||
/* We must always create the plt entry if it was referenced
|
&& h->root.type == bfd_link_hash_undefweak))
|
||||||
by a PLTxxO relocation. In this case we already recorded
|
|
||||||
it as a dynamic symbol. */
|
|
||||||
&& h->dynindx == -1)
|
|
||||||
{
|
{
|
||||||
/* This case can occur if we saw a PLTxx reloc in an input
|
/* This case can occur if we saw a PLTxx reloc in an input
|
||||||
file, but the symbol was never referred to by a dynamic
|
file, but the symbol was never referred to by a dynamic
|
||||||
object. In such a case, we don't actually need to build
|
object, or if all references were garbage collected. In
|
||||||
a procedure linkage table, and we can just do a PCxx
|
such a case, we don't actually need to build a procedure
|
||||||
reloc instead. */
|
linkage table, and we can just do a PCxx reloc instead. */
|
||||||
BFD_ASSERT (h->needs_plt);
|
|
||||||
h->plt.offset = (bfd_vma) -1;
|
h->plt.offset = (bfd_vma) -1;
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* GC may have rendered this entry unused. */
|
|
||||||
if (h->plt.refcount <= 0)
|
|
||||||
{
|
|
||||||
h->needs_plt = 0;
|
h->needs_plt = 0;
|
||||||
h->plt.offset = (bfd_vma) -1;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure this symbol is output as a dynamic symbol. */
|
|
||||||
if (h->dynindx == -1)
|
|
||||||
{
|
|
||||||
if (! bfd_elf_link_record_dynamic_symbol (info, h))
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = bfd_get_linker_section (dynobj, ".plt");
|
s = bfd_get_linker_section (dynobj, ".plt");
|
||||||
BFD_ASSERT (s != NULL);
|
BFD_ASSERT (s != NULL);
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,16 @@
|
||||||
|
2012-08-05 Maciej W. Rozycki <macro@linux-mips.org>
|
||||||
|
|
||||||
|
* ld-vax-elf: New directory.
|
||||||
|
* ld-vax-elf/plt-local-lib.dd: New test.
|
||||||
|
* ld-vax-elf/plt-local-lib.ld: New test linker script.
|
||||||
|
* ld-vax-elf/plt-local-lib.s: New test source.
|
||||||
|
* ld-vax-elf/plt-local.dd: New test.
|
||||||
|
* ld-vax-elf/plt-local.ld: New test linker script.
|
||||||
|
* ld-vax-elf/plt-local.s: New test source.
|
||||||
|
* ld-vax-elf/plt-local-hidden-pic.s: New test source.
|
||||||
|
* ld-vax-elf/plt-local-rehidden-pic.s: New test source.
|
||||||
|
* ld-vax-elf/vax-elf.exp: New test script.
|
||||||
|
|
||||||
2012-08-03 Maciej W. Rozycki <macro@codesourcery.com>
|
2012-08-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||||
|
|
||||||
* lib/ld-lib.exp (at_least_gcc_version): Accept more version
|
* lib/ld-lib.exp (at_least_gcc_version): Accept more version
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
.text
|
||||||
|
|
||||||
|
.hidden foo_hidden
|
||||||
|
.globl foo_hidden
|
||||||
|
.type foo_hidden, @function
|
||||||
|
foo_hidden:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_hidden, . - foo_hidden
|
|
@ -0,0 +1,91 @@
|
||||||
|
.*: +file format .*vax.*
|
||||||
|
|
||||||
|
Disassembly of section \.plt:
|
||||||
|
|
||||||
|
00001000 <foo_local@plt-0xc>:
|
||||||
|
1000: dd ef 76 20 pushl 307c <_GLOBAL_OFFSET_TABLE_\+0x4>
|
||||||
|
1004: 00 00
|
||||||
|
1006: 17 ff 74 20 jmp \*3080 <_GLOBAL_OFFSET_TABLE_\+0x8>
|
||||||
|
100a: 00 00
|
||||||
|
|
||||||
|
0000100c <foo_local@plt>:
|
||||||
|
100c: fc 0f \.word 0x0ffc # Entry mask: < r11 r10 r9 r8 r7 r6 r5 r4 r3 r2 >
|
||||||
|
100e: 16 ef ec ff jsb 1000 <foo_local@plt-0xc>
|
||||||
|
1012: ff ff
|
||||||
|
1014: 00 00 00 00 \.long 0x00000000
|
||||||
|
|
||||||
|
00001018 <foo_extern@plt>:
|
||||||
|
1018: fc 0f \.word 0x0ffc # Entry mask: < r11 r10 r9 r8 r7 r6 r5 r4 r3 r2 >
|
||||||
|
101a: 16 ef e0 ff jsb 1000 <foo_local@plt-0xc>
|
||||||
|
101e: ff ff
|
||||||
|
1020: 0c 00 00 00 \.long 0x0000000c
|
||||||
|
|
||||||
|
00001024 <foo_rehidden@plt>:
|
||||||
|
1024: fc 0f \.word 0x0ffc # Entry mask: < r11 r10 r9 r8 r7 r6 r5 r4 r3 r2 >
|
||||||
|
1026: 16 ef d4 ff jsb 1000 <foo_local@plt-0xc>
|
||||||
|
102a: ff ff
|
||||||
|
102c: 18 00 00 00 \.long 0x00000018
|
||||||
|
|
||||||
|
00001030 <foo_global@plt>:
|
||||||
|
1030: fc 0f \.word 0x0ffc # Entry mask: < r11 r10 r9 r8 r7 r6 r5 r4 r3 r2 >
|
||||||
|
1032: 16 ef c8 ff jsb 1000 <foo_local@plt-0xc>
|
||||||
|
1036: ff ff
|
||||||
|
1038: 24 00 00 00 \.long 0x00000024
|
||||||
|
|
||||||
|
Disassembly of section \.text:
|
||||||
|
|
||||||
|
00002000 <foo_extern>:
|
||||||
|
2000: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
2002: fb 00 ff 7f calls \$0x0,\*3088 <_GLOBAL_OFFSET_TABLE_\+0x10>
|
||||||
|
2006: 10 00 00
|
||||||
|
2009: fb 00 ff 80 calls \$0x0,\*3090 <_GLOBAL_OFFSET_TABLE_\+0x18>
|
||||||
|
200d: 10 00 00
|
||||||
|
2010: fb 00 ff 6d calls \$0x0,\*3084 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
2014: 10 00 00
|
||||||
|
2017: fb 00 ef 2e calls \$0x0,204c <foo_hidden>
|
||||||
|
201b: 00 00 00
|
||||||
|
201e: fb 00 ff 67 calls \$0x0,\*308c <_GLOBAL_OFFSET_TABLE_\+0x14>
|
||||||
|
2022: 10 00 00
|
||||||
|
2025: 04 ret
|
||||||
|
|
||||||
|
00002026 <foo_local>:
|
||||||
|
2026: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
2028: fb 00 ff 59 calls \$0x0,\*3088 <_GLOBAL_OFFSET_TABLE_\+0x10>
|
||||||
|
202c: 10 00 00
|
||||||
|
202f: fb 00 ff 5a calls \$0x0,\*3090 <_GLOBAL_OFFSET_TABLE_\+0x18>
|
||||||
|
2033: 10 00 00
|
||||||
|
2036: fb 00 ff 47 calls \$0x0,\*3084 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
203a: 10 00 00
|
||||||
|
203d: fb 00 ef 08 calls \$0x0,204c <foo_hidden>
|
||||||
|
2041: 00 00 00
|
||||||
|
2044: fb 00 ff 41 calls \$0x0,\*308c <_GLOBAL_OFFSET_TABLE_\+0x14>
|
||||||
|
2048: 10 00 00
|
||||||
|
204b: 04 ret
|
||||||
|
|
||||||
|
0000204c <foo_hidden>:
|
||||||
|
204c: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
204e: fb 00 ff 33 calls \$0x0,\*3088 <_GLOBAL_OFFSET_TABLE_\+0x10>
|
||||||
|
2052: 10 00 00
|
||||||
|
2055: fb 00 ff 34 calls \$0x0,\*3090 <_GLOBAL_OFFSET_TABLE_\+0x18>
|
||||||
|
2059: 10 00 00
|
||||||
|
205c: fb 00 ff 21 calls \$0x0,\*3084 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
2060: 10 00 00
|
||||||
|
2063: fb 00 ef e2 calls \$0x0,204c <foo_hidden>
|
||||||
|
2067: ff ff ff
|
||||||
|
206a: fb 00 ff 1b calls \$0x0,\*308c <_GLOBAL_OFFSET_TABLE_\+0x14>
|
||||||
|
206e: 10 00 00
|
||||||
|
2071: 04 ret
|
||||||
|
|
||||||
|
00002072 <foo_rehidden>:
|
||||||
|
2072: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
2074: fb 00 ff 0d calls \$0x0,\*3088 <_GLOBAL_OFFSET_TABLE_\+0x10>
|
||||||
|
2078: 10 00 00
|
||||||
|
207b: fb 00 ff 0e calls \$0x0,\*3090 <_GLOBAL_OFFSET_TABLE_\+0x18>
|
||||||
|
207f: 10 00 00
|
||||||
|
2082: fb 00 ff fb calls \$0x0,\*3084 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
2086: 0f 00 00
|
||||||
|
2089: fb 00 ef bc calls \$0x0,204c <foo_hidden>
|
||||||
|
208d: ff ff ff
|
||||||
|
2090: fb 00 ff f5 calls \$0x0,\*308c <_GLOBAL_OFFSET_TABLE_\+0x14>
|
||||||
|
2094: 0f 00 00
|
||||||
|
2097: 04 ret
|
|
@ -0,0 +1,18 @@
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = 0;
|
||||||
|
.hash : { *(.hash) }
|
||||||
|
.dynsym : { *(.dynsym) }
|
||||||
|
.dynstr : { *(.dynstr) }
|
||||||
|
.rela.plt : { *(.rela.plt) }
|
||||||
|
|
||||||
|
. = 0x1000;
|
||||||
|
.plt : { *(.plt) }
|
||||||
|
|
||||||
|
. = 0x2000;
|
||||||
|
.text : { *(.text) }
|
||||||
|
|
||||||
|
. = 0x3000;
|
||||||
|
.dynamic : { *(.dynamic) }
|
||||||
|
.got : { *(.got.plt) }
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
.text
|
||||||
|
|
||||||
|
.globl foo_extern
|
||||||
|
.type foo_extern, @function
|
||||||
|
foo_extern:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_extern, . - foo_extern
|
||||||
|
|
||||||
|
.globl foo_local
|
||||||
|
.type foo_local, @function
|
||||||
|
foo_local:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_local, . - foo_local
|
||||||
|
|
||||||
|
.hidden foo_hidden
|
||||||
|
.globl foo_hidden
|
||||||
|
.type foo_hidden, @function
|
||||||
|
foo_hidden:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_hidden, . - foo_hidden
|
||||||
|
|
||||||
|
.globl foo_rehidden
|
||||||
|
.type foo_rehidden, @function
|
||||||
|
foo_rehidden:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_rehidden, . - foo_rehidden
|
|
@ -0,0 +1,14 @@
|
||||||
|
.text
|
||||||
|
|
||||||
|
.hidden foo_rehidden
|
||||||
|
.globl foo_rehidden
|
||||||
|
.type foo_rehidden, @function
|
||||||
|
foo_rehidden:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_rehidden, . - foo_rehidden
|
|
@ -0,0 +1,73 @@
|
||||||
|
.*: +file format .*vax.*
|
||||||
|
|
||||||
|
Disassembly of section \.plt:
|
||||||
|
|
||||||
|
00001000 <foo_extern@plt-0xc>:
|
||||||
|
1000: dd ef 86 20 pushl 308c <_GLOBAL_OFFSET_TABLE_\+0x4>
|
||||||
|
1004: 00 00
|
||||||
|
1006: 17 ff 84 20 jmp \*3090 <_GLOBAL_OFFSET_TABLE_\+0x8>
|
||||||
|
100a: 00 00
|
||||||
|
|
||||||
|
0000100c <foo_extern@plt>:
|
||||||
|
100c: fc 0f \.word 0x0ffc # Entry mask: < r11 r10 r9 r8 r7 r6 r5 r4 r3 r2 >
|
||||||
|
100e: 16 ef ec ff jsb 1000 <foo_extern@plt-0xc>
|
||||||
|
1012: ff ff
|
||||||
|
1014: 00 00 00 00 \.long 0x00000000
|
||||||
|
|
||||||
|
Disassembly of section \.text:
|
||||||
|
|
||||||
|
00002000 <foo_hidden>:
|
||||||
|
2000: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
2002: fb 00 ff 8b calls \$0x0,\*3094 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
2006: 10 00 00
|
||||||
|
2009: fb 00 ef 3c calls \$0x0,204c <foo_global>
|
||||||
|
200d: 00 00 00
|
||||||
|
2010: fb 00 ef 5b calls \$0x0,2072 <foo_local>
|
||||||
|
2014: 00 00 00
|
||||||
|
2017: fb 00 ef e2 calls \$0x0,2000 <foo_hidden>
|
||||||
|
201b: ff ff ff
|
||||||
|
201e: fb 00 ef 01 calls \$0x0,2026 <foo_rehidden>
|
||||||
|
2022: 00 00 00
|
||||||
|
2025: 04 ret
|
||||||
|
|
||||||
|
00002026 <foo_rehidden>:
|
||||||
|
2026: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
2028: fb 00 ff 65 calls \$0x0,\*3094 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
202c: 10 00 00
|
||||||
|
202f: fb 00 ef 16 calls \$0x0,204c <foo_global>
|
||||||
|
2033: 00 00 00
|
||||||
|
2036: fb 00 ef 35 calls \$0x0,2072 <foo_local>
|
||||||
|
203a: 00 00 00
|
||||||
|
203d: fb 00 ef bc calls \$0x0,2000 <foo_hidden>
|
||||||
|
2041: ff ff ff
|
||||||
|
2044: fb 00 ef db calls \$0x0,2026 <foo_rehidden>
|
||||||
|
2048: ff ff ff
|
||||||
|
204b: 04 ret
|
||||||
|
|
||||||
|
0000204c <foo_global>:
|
||||||
|
204c: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
204e: fb 00 ff 3f calls \$0x0,\*3094 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
2052: 10 00 00
|
||||||
|
2055: fb 00 ef f0 calls \$0x0,204c <foo_global>
|
||||||
|
2059: ff ff ff
|
||||||
|
205c: fb 00 ef 0f calls \$0x0,2072 <foo_local>
|
||||||
|
2060: 00 00 00
|
||||||
|
2063: fb 00 ef 96 calls \$0x0,2000 <foo_hidden>
|
||||||
|
2067: ff ff ff
|
||||||
|
206a: fb 00 ef b5 calls \$0x0,2026 <foo_rehidden>
|
||||||
|
206e: ff ff ff
|
||||||
|
2071: 04 ret
|
||||||
|
|
||||||
|
00002072 <foo_local>:
|
||||||
|
2072: 00 00 \.word 0x0000 # Entry mask: < >
|
||||||
|
2074: fb 00 ff 19 calls \$0x0,\*3094 <_GLOBAL_OFFSET_TABLE_\+0xc>
|
||||||
|
2078: 10 00 00
|
||||||
|
207b: fb 00 ef ca calls \$0x0,204c <foo_global>
|
||||||
|
207f: ff ff ff
|
||||||
|
2082: fb 00 ef e9 calls \$0x0,2072 <foo_local>
|
||||||
|
2086: ff ff ff
|
||||||
|
2089: fb 00 ef 70 calls \$0x0,2000 <foo_hidden>
|
||||||
|
208d: ff ff ff
|
||||||
|
2090: fb 00 ef 8f calls \$0x0,2026 <foo_rehidden>
|
||||||
|
2094: ff ff ff
|
||||||
|
2097: 04 ret
|
|
@ -0,0 +1,34 @@
|
||||||
|
ENTRY (foo_global)
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = 0;
|
||||||
|
.interp : { *(.interp) }
|
||||||
|
.hash : { *(.hash) }
|
||||||
|
.dynsym : { *(.dynsym) }
|
||||||
|
.dynstr : { *(.dynstr) }
|
||||||
|
.gnu.version : { *(.gnu.version) }
|
||||||
|
.gnu.version_d : { *(.gnu.version_d) }
|
||||||
|
.rela.plt : { *(.rela.plt) }
|
||||||
|
|
||||||
|
. = 0x1000;
|
||||||
|
.plt : { *(.plt) }
|
||||||
|
|
||||||
|
. = 0x2000;
|
||||||
|
.text : { *(.text) }
|
||||||
|
|
||||||
|
. = 0x3000;
|
||||||
|
.dynamic : { *(.dynamic) }
|
||||||
|
.got : { *(.got.plt) }
|
||||||
|
};
|
||||||
|
VERSION
|
||||||
|
{
|
||||||
|
{
|
||||||
|
global:
|
||||||
|
foo_extern;
|
||||||
|
foo_global;
|
||||||
|
foo_hidden;
|
||||||
|
foo_rehidden;
|
||||||
|
local:
|
||||||
|
foo_local;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
.text
|
||||||
|
|
||||||
|
.globl foo_global
|
||||||
|
.type foo_global, @function
|
||||||
|
foo_global:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_global, . - foo_global
|
||||||
|
|
||||||
|
.globl foo_local
|
||||||
|
.type foo_local, @function
|
||||||
|
foo_local:
|
||||||
|
.word 0
|
||||||
|
calls $0, foo_extern
|
||||||
|
calls $0, foo_global
|
||||||
|
calls $0, foo_local
|
||||||
|
calls $0, foo_hidden
|
||||||
|
calls $0, foo_rehidden
|
||||||
|
ret
|
||||||
|
.size foo_local, . - foo_local
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Expect script for VAX ELF linker tests
|
||||||
|
# Copyright 2012 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is part of the GNU Binutils.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||||
|
# MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
|
||||||
|
if { ![istarget vax-*-*] || ![is_elf_format] } {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
run_ld_link_tests [list \
|
||||||
|
[list "PLT test (shared library)" \
|
||||||
|
"-shared -T plt-local-lib.ld" \
|
||||||
|
"-k" \
|
||||||
|
{ plt-local-lib.s } \
|
||||||
|
{ { objdump -d plt-local-lib.dd } } \
|
||||||
|
"plt-local-lib.so"] \
|
||||||
|
[list "PLT test (object 1)" \
|
||||||
|
"-r" \
|
||||||
|
"-k" \
|
||||||
|
{ plt-local-hidden-pic.s } \
|
||||||
|
{} \
|
||||||
|
"plt-local-hidden-pic-r.o"] \
|
||||||
|
[list "PLT test (object 2)" \
|
||||||
|
"-r" \
|
||||||
|
"-k" \
|
||||||
|
{ plt-local-rehidden-pic.s } \
|
||||||
|
{} \
|
||||||
|
"plt-local-rehidden-pic-r.o"] \
|
||||||
|
[list "PLT test (executable)" \
|
||||||
|
"-T plt-local.ld tmpdir/plt-local-hidden-pic-r.o tmpdir/plt-local-rehidden-pic-r.o tmpdir/plt-local-lib.so" \
|
||||||
|
"" \
|
||||||
|
{ plt-local.s } \
|
||||||
|
{ { objdump -d plt-local.dd } } \
|
||||||
|
"plt-local"]]
|
Loading…
Reference in New Issue