From: Alan Modra Date: Tue, 24 Apr 2007 04:29:03 +0000 (+0000) Subject: * ld-linkonce/x.s: Use .gcc_except_table instead of .eh_frame X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=98f17e6e1ca620ec1f263a2a716b3ca7b7c3ffb7;p=binutils-gdb.git * 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. --- diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index ad9bcbd9364..6915ea613f5 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2007-04-24 Alan Modra + + * 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 * ld-arm/arm-app-abs32.d: Convert to unified syntax. diff --git a/ld/testsuite/ld-linkonce/x.s b/ld/testsuite/ld-linkonce/x.s index 6807cfcdece..d07f73eefe5 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 b8ae3d29643..c1eb5113998 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 6550c17db9c..b22eaa12c9c 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 b84ebed3705..5b51836588c 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 .*