This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
v8.S dwarf2 eh frame issues again :(
- From: "David S. Miller" <davem at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Cc: jakub at redhat dot com, jsturm at one-point dot com
- Date: Fri, 19 Apr 2002 19:23:57 -0700 (PDT)
- Subject: v8.S dwarf2 eh frame issues again :(
Dwarf2 unwinds from libjava/testsuite/libjava.lang/invokethrow.java
fail to work unless I make the change at the end of thie email to the
.eh_frame information added recently to libffi/src/sparc/v8.S
I don't understand the .eh_frame format at all, basically what I did
was compile a dummy "extern int bar(void); int foo(void) { bar(); }"
with -g -fexceptions and copied the .eh_frame section code into v8.S
and then the test started working.
Either it is a bug in binutils eh frame optimizations, the .eh_frame
specification currently in v8.S, or the runtime unwinder itself has an
.eh_frame decoding bug of some sort.
--- v8.S Wed Apr 10 19:57:34 2002
+++ v8.S.NEW Fri Apr 19 10:26:03 2002
@@ -106,36 +106,32 @@
.section ".eh_frame",#alloc,#write
.LLframe1:
- .uaword .LLECIE1-.LLSCIE1 ! Length of Common Information Entry
+ .uaword .LLECIE1-.LLSCIE1
.LLSCIE1:
- .uaword 0x0 ! CIE Identifier Tag
- .byte 0x1 ! CIE Version
- .ascii "zR\0" ! CIE Augmentation
- .byte 0x1 ! uleb128 0x1; CIE Code Alignment Factor
- .byte 0x80-WS ! sleb128 -WS; CIE Data Alignment Factor
- .byte 0xf ! CIE RA Column
- .byte 0x1 ! uleb128 0x1; Augmentation size
- .byte 0x50 ! FDE Encoding (aligned absolute)
- .byte 0xc ! DW_CFA_def_cfa
- .byte 0xe ! uleb128 0xe
- .byte 0x0 ! uleb128 0x0
- .align WS
+ .uaword 0x0
+ .byte 0x1
+ .asciz ""
+ .byte 0x1
+ .byte 0x80-WS
+ .byte 0xf
+ .byte 0xc
+ .byte 0xe
+ .byte 0x0
+ .align WS
.LLECIE1:
.LLSFDE1:
- .uaword .LLEFDE1-.LLASFDE1 ! FDE Length
+ .uaword .LLEFDE1-.LLASFDE1
.LLASFDE1:
- .uaword .LLASFDE1-.LLframe1 ! FDE CIE offset
- .align WS
+ .uaword .LLASFDE1-.LLframe1
.nword .LLFB1
- .uanword .LLFE1-.LLFB1 ! FDE address range
- .byte 0x0 ! uleb128 0x0; Augmentation size
- .byte 0x4 ! DW_CFA_advance_loc4
+ .uanword .LLFE1-.LLFB1
+ .byte 0x4
.uaword .LLCFI0-.LLFB1
- .byte 0xd ! DW_CFA_def_cfa_register
- .byte 0x1e ! uleb128 0x1e
- .byte 0x2d ! DW_CFA_GNU_window_save
- .byte 0x9 ! DW_CFA_register
- .byte 0xf ! uleb128 0xf
- .byte 0x1f ! uleb128 0x1f
- .align WS
+ .byte 0xd
+ .byte 0x1e
+ .byte 0x2d
+ .byte 0x9
+ .byte 0xf
+ .byte 0x1f
+ .align 4
.LLEFDE1: