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