* 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.
This commit is contained in:
Alan Modra 2007-04-24 04:29:03 +00:00
parent 64be15537d
commit 98f17e6e1c
5 changed files with 74 additions and 8 deletions

View File

@ -1,3 +1,13 @@
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.

View File

@ -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:

View File

@ -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:

View File

@ -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) }
}

View File

@ -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 .*