aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-linkonce
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2007-04-24 04:29:03 +0000
committerAlan Modra <amodra@gmail.com>2007-04-24 04:29:03 +0000
commit98f17e6e1ca620ec1f263a2a716b3ca7b7c3ffb7 (patch)
tree4b8e9cf807cd88291856fa2ddf0317a4f1be3ffc /ld/testsuite/ld-linkonce
parent64be15537dc7a4e427588885f7427eee894e529d (diff)
downloadfsf-binutils-gdb-98f17e6e1ca620ec1f263a2a716b3ca7b7c3ffb7.zip
fsf-binutils-gdb-98f17e6e1ca620ec1f263a2a716b3ca7b7c3ffb7.tar.gz
fsf-binutils-gdb-98f17e6e1ca620ec1f263a2a716b3ca7b7c3ffb7.tar.bz2
* ld-linkonce/x.s: Use .gcc_except_table instead of .eh_frame
to test that entry for deleted function is zeroed. Add a somewhat closer to normal .eh_frame to test that fde for deleted function is removed. * ld-linkonce/y.s: Likewise. * ld-linkonce/zeroeh.ld: Place .gcc_except_table too. * ld-linkonce/zeroehl32.d: Update.
Diffstat (limited to 'ld/testsuite/ld-linkonce')
-rw-r--r--ld/testsuite/ld-linkonce/x.s27
-rw-r--r--ld/testsuite/ld-linkonce/y.s35
-rw-r--r--ld/testsuite/ld-linkonce/zeroeh.ld3
-rw-r--r--ld/testsuite/ld-linkonce/zeroehl32.d7
4 files changed, 64 insertions, 8 deletions
diff --git a/ld/testsuite/ld-linkonce/x.s b/ld/testsuite/ld-linkonce/x.s
index 6807cfc..d07f73e 100644
--- a/ld/testsuite/ld-linkonce/x.s
+++ b/ld/testsuite/ld-linkonce/x.s
@@ -1,8 +1,7 @@
;# Main file, x.s, with the program (_start) referring to two
;# linkonce functions fn and fn2. The functions fn and fn2 are
;# supposed to be equivalent of C++ template instantiations; the
-;# main file instantiates fn. There's the equivalent of an FDE
-;# entry in .eh_frame, referring to fn via a local label.
+;# main file instantiates fn.
.text
.global _start
@@ -20,7 +19,29 @@ fn:
.Lb:
.size fn,.Lb-.La
- .section .eh_frame,"aw",@progbits
+ .section .gcc_except_table,"aw",@progbits
.long 2
.long .La
.long .Lb-.La
+
+ .section .eh_frame,"aw",@progbits
+.Lframe1:
+ .long .LECIE1-.LSCIE1
+.LSCIE1:
+ .long 0x0
+ .byte 0x1
+ .byte 0
+ .uleb128 0x1
+ .sleb128 -4
+ .byte 0
+ .p2align 2
+.LECIE1:
+
+.LSFDE1:
+ .long .LEFDE1-.LASFDE1
+.LASFDE1:
+ .long .LASFDE1-.Lframe1
+ .long .La
+ .long .Lb-.La
+ .p2align 2
+.LEFDE1:
diff --git a/ld/testsuite/ld-linkonce/y.s b/ld/testsuite/ld-linkonce/y.s
index b8ae3d2..c1eb511 100644
--- a/ld/testsuite/ld-linkonce/y.s
+++ b/ld/testsuite/ld-linkonce/y.s
@@ -2,7 +2,7 @@
;# that this version of fn has different code, as if compiled
;# with different optimization flags than the one in x.s (not
;# important for this test, though). The reference from
-;# .eh_frame to the linkonce-excluded fn2 must be zero, or g++
+;# .gcc_except_table to the linkonce-excluded fn2 must be zero, or g++
;# EH will not work.
.section .gnu.linkonce.t.fn2,"ax",@progbits
@@ -23,7 +23,7 @@ fn:
.Lf:
.size fn,.Lf-.Le
- .section .eh_frame,"aw",@progbits
+ .section .gcc_except_table,"aw",@progbits
.long 7
.long .Lc
.long .Ld-.Lc
@@ -31,3 +31,34 @@ fn:
.long 0x6066
.long .Le
.long .Lf-.Le
+
+ .section .eh_frame,"aw",@progbits
+.Lframe1:
+ .long .LECIE1-.LSCIE1
+.LSCIE1:
+ .long 0x0
+ .byte 0x1
+ .byte 0
+ .uleb128 0x1
+ .sleb128 -4
+ .byte 0
+ .p2align 2
+.LECIE1:
+
+.LSFDE1:
+ .long .LEFDE1-.LASFDE1
+.LASFDE1:
+ .long .LASFDE1-.Lframe1
+ .long .Lc
+ .long .Ld-.Lc
+ .p2align 2
+.LEFDE1:
+
+.LSFDE2:
+ .long .LEFDE2-.LASFDE2
+.LASFDE2:
+ .long .LASFDE2-.Lframe1
+ .long .Le
+ .long .Lf-.Le
+ .p2align 2
+.LEFDE2:
diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
index 6550c17..b22eaa1 100644
--- a/ld/testsuite/ld-linkonce/zeroeh.ld
+++ b/ld/testsuite/ld-linkonce/zeroeh.ld
@@ -1,4 +1,5 @@
SECTIONS {
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
- .eh_frame 0x2000 : { *(.eh_frame) }
+ .gcc_except_table 0x2000 : { *(.gcc_except_table) }
+ .eh_frame 0x4000 : { *(.eh_frame) }
}
diff --git a/ld/testsuite/ld-linkonce/zeroehl32.d b/ld/testsuite/ld-linkonce/zeroehl32.d
index b84ebed..5b51836 100644
--- a/ld/testsuite/ld-linkonce/zeroehl32.d
+++ b/ld/testsuite/ld-linkonce/zeroehl32.d
@@ -11,8 +11,11 @@
Contents of section \.text:
0a00 080a0000 100a0000 01000000 02000000 .*
0a10 03000000 .*
-Contents of section \.eh_frame:
+Contents of section \.gcc_except_table:
2000 02000000 080a0000 08000000 07000000 .*
2010 100a0000 04000000 66600000 00000000 .*
2020 04000000 .*
-#pass
+Contents of section \.eh_frame:
+ 4000 0c000000 00000000 0100017c 00000000 .*
+ 4010 0c000000 14000000 080a0000 08000000 .*
+ 4020 0c000000 24000000 100a0000 04000000 .*