+2007-04-24 Alan Modra <amodra@bigpond.net.au>
+
+ * 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.
+
2007-04-21 Richard Earnshaw <rearnsha@arm.com>
* ld-arm/arm-app-abs32.d: Convert to unified syntax.
;# 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
.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:
;# 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
.Lf:
.size fn,.Lf-.Le
- .section .eh_frame,"aw",@progbits
+ .section .gcc_except_table,"aw",@progbits
.long 7
.long .Lc
.long .Ld-.Lc
.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:
SECTIONS {
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
- .eh_frame 0x2000 : { *(.eh_frame) }
+ .gcc_except_table 0x2000 : { *(.gcc_except_table) }
+ .eh_frame 0x4000 : { *(.eh_frame) }
}
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 .*