diff options
author | Alan Modra <amodra@gmail.com> | 2007-04-24 04:29:03 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2007-04-24 04:29:03 +0000 |
commit | 98f17e6e1ca620ec1f263a2a716b3ca7b7c3ffb7 (patch) | |
tree | 4b8e9cf807cd88291856fa2ddf0317a4f1be3ffc /ld/testsuite/ld-linkonce | |
parent | 64be15537dc7a4e427588885f7427eee894e529d (diff) | |
download | fsf-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.s | 27 | ||||
-rw-r--r-- | ld/testsuite/ld-linkonce/y.s | 35 | ||||
-rw-r--r-- | ld/testsuite/ld-linkonce/zeroeh.ld | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-linkonce/zeroehl32.d | 7 |
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 .* |