Browse Source
* ld-vax-elf/export-class-call.rd: New test. * ld-vax-elf/export-class-call.xd: New test. * ld-vax-elf/export-class-data.dd: New test. * ld-vax-elf/export-class-data.rd: New test. * ld-vax-elf/export-class-data.xd: New test. * ld-vax-elf/export-class.ld: New test linker script. * ld-vax-elf/export-class-call.s: New test source. * ld-vax-elf/export-class-data.s: New test source. * ld-vax-elf/export-class-def.s: New test source. * ld-vax-elf/vax-elf.exp: Run the new tests. * ld-vax-elf/vax-export-class.rd: New test. * ld-vax-elf/vax-export-class.xd: New test. * ld-vax-elf/export-class.exp: New test script.binutils-2_24-branch
15 changed files with 262 additions and 0 deletions
@ -0,0 +1,26 @@ |
|||||
|
|
||||
|
.*: +file format .*vax.* |
||||
|
|
||||
|
Disassembly of section \.text: |
||||
|
|
||||
|
12340000 <foo>: |
||||
|
12340000: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
12340002: fb 00 ef 0f calls \$0x0,12340018 <protected_foo> |
||||
|
12340006: 00 00 00 |
||||
|
12340009: fb 00 ef 0b calls \$0x0,1234001b <hidden_foo> |
||||
|
1234000d: 00 00 00 |
||||
|
12340010: fb 00 ef 07 calls \$0x0,1234001e <internal_foo> |
||||
|
12340014: 00 00 00 |
||||
|
12340017: 04 ret |
||||
|
|
||||
|
12340018 <protected_foo>: |
||||
|
12340018: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
1234001a: 04 ret |
||||
|
|
||||
|
1234001b <hidden_foo>: |
||||
|
1234001b: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
1234001d: 04 ret |
||||
|
|
||||
|
1234001e <internal_foo>: |
||||
|
1234001e: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
12340020: 04 ret |
||||
@ -0,0 +1 @@ |
|||||
|
There are no relocations in this file\. |
||||
@ -0,0 +1,10 @@ |
|||||
|
.text |
||||
|
.globl foo |
||||
|
.type foo, @function |
||||
|
foo: |
||||
|
.word 0 |
||||
|
calls $0, protected_foo |
||||
|
calls $0, hidden_foo |
||||
|
calls $0, internal_foo |
||||
|
ret |
||||
|
.size foo, . - foo |
||||
@ -0,0 +1,2 @@ |
|||||
|
Hex dump of section '\.got': |
||||
|
0x12340024 34003412 00000000 00000000 00000000 .* |
||||
@ -0,0 +1,26 @@ |
|||||
|
|
||||
|
.*: +file format .*vax.* |
||||
|
|
||||
|
Disassembly of section \.text: |
||||
|
|
||||
|
12340000 <foo>: |
||||
|
12340000: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
12340002: 9e ff 2c 00 movab \*12340034 <_GLOBAL_OFFSET_TABLE_\+0x10>,r0 |
||||
|
12340006: 00 00 50 |
||||
|
12340009: 9e ef 0c 00 movab 1234001b <hidden_foo>,r0 |
||||
|
1234000d: 00 00 50 |
||||
|
12340010: 9e ef 08 00 movab 1234001e <internal_foo>,r0 |
||||
|
12340014: 00 00 50 |
||||
|
12340017: 04 ret |
||||
|
|
||||
|
12340018 <protected_foo>: |
||||
|
12340018: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
1234001a: 04 ret |
||||
|
|
||||
|
1234001b <hidden_foo>: |
||||
|
1234001b: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
1234001d: 04 ret |
||||
|
|
||||
|
1234001e <internal_foo>: |
||||
|
1234001e: 00 00 \.word 0x0000 # Entry mask: < > |
||||
|
12340020: 04 ret |
||||
@ -0,0 +1,3 @@ |
|||||
|
Relocation section '\.rela\.got' at offset 0x[0-9a-f]+ contains 1 entries: |
||||
|
* Offset * Info * Type * Sym\. *Value * Sym\. * Name * \+ * Addend |
||||
|
12340034 [0-9a-f]+14 R_VAX_GLOB_DAT 12340018 protected_foo \+ 0 |
||||
@ -0,0 +1,10 @@ |
|||||
|
.text |
||||
|
.globl foo |
||||
|
.type foo, @function |
||||
|
foo: |
||||
|
.word 0 |
||||
|
movab protected_foo, %r0 |
||||
|
movab hidden_foo, %r0 |
||||
|
movab internal_foo, %r0 |
||||
|
ret |
||||
|
.size foo, . - foo |
||||
@ -0,0 +1,4 @@ |
|||||
|
Hex dump of section '\.got': |
||||
|
NOTE: This section has relocations against it, but these have NOT been applied to this dump\. |
||||
|
0x12340024 38003412 00000000 00000000 00000000 .* |
||||
|
0x12340034 00000000 .* |
||||
@ -0,0 +1,22 @@ |
|||||
|
.text |
||||
|
.globl protected_foo |
||||
|
.type protected_foo, @function |
||||
|
.protected protected_foo |
||||
|
protected_foo: |
||||
|
.word 0 |
||||
|
ret |
||||
|
.size protected_foo, . - protected_foo |
||||
|
.globl hidden_foo |
||||
|
.type hidden_foo, @function |
||||
|
.hidden hidden_foo |
||||
|
hidden_foo: |
||||
|
.word 0 |
||||
|
ret |
||||
|
.size hidden_foo, . - hidden_foo |
||||
|
.globl internal_foo |
||||
|
.type internal_foo, @function |
||||
|
.internal internal_foo |
||||
|
internal_foo: |
||||
|
.word 0 |
||||
|
ret |
||||
|
.size internal_foo, . - internal_foo |
||||
@ -0,0 +1,80 @@ |
|||||
|
# Expect script for symbol export classes, VAX variation. |
||||
|
# |
||||
|
# Copyright 2013 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. |
||||
|
# |
||||
|
|
||||
|
# |
||||
|
# Written by Maciej W. Rozycki <macro@codesourcery.com> |
||||
|
# |
||||
|
|
||||
|
# Exclude non-Linux targets; feel free to include your favorite one |
||||
|
# if you like. |
||||
|
if { ![istarget vax*-*-linux*] } { |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
set testname "VAX symbol export class test" |
||||
|
|
||||
|
# Build an auxiliary shared object with conflicting versioned symbol |
||||
|
# definitions. |
||||
|
run_ld_link_tests [list \ |
||||
|
[list \ |
||||
|
"$testname (auxiliary shared object)" \ |
||||
|
"-shared -version-script ../ld-elf/export-class-lib.ver" "" \ |
||||
|
"-k" \ |
||||
|
{ ../ld-elf/export-class-lib.s } \ |
||||
|
{} \ |
||||
|
"vax-export-class-lib.so" \ |
||||
|
] \ |
||||
|
] |
||||
|
|
||||
|
# Build a static object that pulls symbol definitions. It has to come |
||||
|
# first before the auxiliary shared object and other static objects on |
||||
|
# the linker's command line and hence we need to build it separately. |
||||
|
run_ld_link_tests [list \ |
||||
|
[list \ |
||||
|
"$testname (initial static object)" \ |
||||
|
"-r" "" \ |
||||
|
"" \ |
||||
|
{ ../ld-elf/export-class-ref.s } \ |
||||
|
{} \ |
||||
|
"vax-export-class-ref-r.o" \ |
||||
|
] \ |
||||
|
] |
||||
|
|
||||
|
# Build static objects that satisfy symbol dependencies and preempt |
||||
|
# shared-object symbol definitions, and link all the objects built into |
||||
|
# the final shared object. The command-line order of objects linked is |
||||
|
# important to make sure the linker correctly preempts versioned symbols |
||||
|
# from the auxiliary shared object and is as follows: ref, lib, dep, def. |
||||
|
# Get a dump to make sure symbol dependencies are resolved internally. |
||||
|
run_ld_link_tests [list \ |
||||
|
[list \ |
||||
|
"$testname (final shared object)" \ |
||||
|
"-shared -Tdata=0x12340000 tmpdir/vax-export-class-ref-r.o tmpdir/vax-export-class-lib.so" "" \ |
||||
|
"-k" \ |
||||
|
{ ../ld-elf/export-class-dep.s ../ld-elf/export-class-def.s } \ |
||||
|
[list \ |
||||
|
[list readelf -r vax-export-class.rd] \ |
||||
|
[list readelf "-x .data" vax-export-class.xd] \ |
||||
|
] \ |
||||
|
"vax-export-class.so" \ |
||||
|
] \ |
||||
|
] |
||||
@ -0,0 +1,16 @@ |
|||||
|
ENTRY (foo); |
||||
|
SECTIONS |
||||
|
{ |
||||
|
.text : { *(.text) } |
||||
|
.got : { *(.got.plt) *(.got) } |
||||
|
.dynamic : { *(.dynamic) } |
||||
|
.rela.got : { *(.rela.got) } |
||||
|
.plt : { *(.plt) } |
||||
|
.hash : { *(.hash) } |
||||
|
.dynsym : { *(.dynsym) } |
||||
|
.dynstr : { *(.dynstr) } |
||||
|
.shstrtab : { *(.shstrtab) } |
||||
|
.symtab : { *(.symtab) } |
||||
|
.strtab : { *(.strtab) } |
||||
|
/DISCARD/ : { *(*) } |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains [0-9]+ entries: |
||||
|
* Offset * Info * Type * Sym\. *Value * Sym\. * Name * \+ * Addend |
||||
|
12340010 00000016 R_VAX_RELATIVE * 123400a0 |
||||
|
12340020 00000016 R_VAX_RELATIVE * 123400a0 |
||||
|
12340060 00000016 R_VAX_RELATIVE * 123400a0 |
||||
|
12340070 00000016 R_VAX_RELATIVE * 123400a0 |
||||
|
12340080 00000016 R_VAX_RELATIVE * 123400a0 |
||||
|
12340090 00000016 R_VAX_RELATIVE * 123400a0 |
||||
|
12340000 [0-9a-f]+01 R_VAX_32 * 123400a0 protected_baz \+ 0 |
||||
|
12340040 [0-9a-f]+01 R_VAX_32 * 123400a0 protected_foo \+ 0 |
||||
|
12340050 [0-9a-f]+01 R_VAX_32 * 123400a0 protected_bar \+ 0 |
||||
@ -0,0 +1,11 @@ |
|||||
|
Hex dump of section '\.data': |
||||
|
0x12340000 00000000 00000000 00000000 00000000 .* |
||||
|
0x12340010 a0003412 00000000 00000000 00000000 .* |
||||
|
0x12340020 a0003412 00000000 00000000 00000000 .* |
||||
|
0x12340030 00000000 00000000 00000000 00000000 .* |
||||
|
0x12340040 00000000 00000000 00000000 00000000 .* |
||||
|
0x12340050 00000000 00000000 00000000 00000000 .* |
||||
|
0x12340060 a0003412 00000000 00000000 00000000 .* |
||||
|
0x12340070 a0003412 00000000 00000000 00000000 .* |
||||
|
0x12340080 a0003412 00000000 00000000 00000000 .* |
||||
|
0x12340090 a0003412 00000000 00000000 00000000 .* |
||||
Loading…
Reference in new issue