From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28189 invoked by alias); 23 Sep 2009 18:00:34 -0000 Received: (qmail 28173 invoked by uid 22791); 23 Sep 2009 18:00:33 -0000 X-SWARE-Spam-Status: No, hits=-3.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from c2beaomr07.btconnect.com (HELO c2beaomr07.btconnect.com) (213.123.26.185) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 23 Sep 2009 18:00:29 +0000 Received: from [192.168.1.100] (host81-138-1-83.in-addr.btopenworld.com [81.138.1.83]) by c2beaomr07.btconnect.com with ESMTP id DOL92721; Wed, 23 Sep 2009 19:00:24 +0100 (BST) Mime-Version: 1.0 (Apple Message framework v753.1) Content-Transfer-Encoding: 7bit Message-Id: Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed To: GCC Development From: IainS Subject: question on dwarf2 debug-frame. Date: Wed, 23 Sep 2009 18:00:00 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2009-09/txt/msg00476.txt.bz2 Hello, I have this scenario: using "dwarfdump --debug-frame" in a very simple object generated with current trunk. I am trying to figure out (with the dwarf3 spec) wether the problem is in the tool (dwarfdump), or what we're emitting. Can anyone more knowledgeable comment? Iain. ---------------------------------------------------------------------- File: simplistic.o { mach32-i386 } ---------------------------------------------------------------------- .debug_frame contents: 0x00000000: CIE length: 0x00000010 CIE_id: 0xffffffff version: 0x01 augmentation: "" code_align: 1 data_align: -4 ra_register: 0x08 Initial Inst: DW_CFA_def_cfa (4, 4) DW_CFA_offset (8, 0) DW_CFA_nop DW_CFA_nop Init State: CFA( R4+4 ) R8=+0 0x00000014: FDE length: 0x00000028 CIE_pointer: 0x00000000 start_addr: 0x00000000 range_size: 0x00000012 Instructions: 0x00000000: CFA( R4+4 ) R8=+0 DW_CFA_advance_loc4 (1) DW_CFA_def_cfa_offset (8) DW_CFA_offset (5, -8) 0x00000001: CFA( R4+8 ) R5=-8 R8=+0 DW_CFA_advance_loc4 (2) DW_CFA_def_cfa_register (5) 0x00000003: CFA( R5+8 ) R5=-8 R8=+0 DW_CFA_advance_loc4 (14) DW_CFA_restore (5) Assertion failed: (reg_state_pos != cie->initial_state.regs.end()), function ParseInstructions, file /SourceCache/dwarf_utilities/ dwarf_utilities-49/source/DWARFDebugFrame.cpp, line 353. Abort trap ==== the -save-temps -dA output for this is: .section __DWARF,__debug_frame,regular,debug Lframe0: .set L$set$0,LECIE0-LSCIE0 .long L$set$0 # Length of Common Information Entry LSCIE0: .long 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor .byte 0x7c # sleb128 -4; CIE Data Alignment Factor .byte 0x8 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .byte 0x4 # uleb128 0x4 .byte 0x4 # uleb128 0x4 .byte 0x88 # DW_CFA_offset, column 0x8 .byte 0x1 # uleb128 0x1 .align 2 LECIE0: LSFDE0: .set L$set$1,LEFDE0-LASFDE0 .long L$set$1 # FDE Length LASFDE0: .set L$set$2,Lframe0-Lsection__debug_frame .long L$set$2 # FDE CIE offset .long LFB0 # FDE initial location .set L$set$3,LFE0-LFB0 .long L$set$3 # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .set L$set$4,LCFI0-LFB0 .long L$set$4 .byte 0xe # DW_CFA_def_cfa_offset .byte 0x8 # uleb128 0x8 .byte 0x85 # DW_CFA_offset, column 0x5 .byte 0x2 # uleb128 0x2 .byte 0x4 # DW_CFA_advance_loc4 .set L$set$5,LCFI1-LCFI0 .long L$set$5 .byte 0xd # DW_CFA_def_cfa_register .byte 0x5 # uleb128 0x5 .byte 0x4 # DW_CFA_advance_loc4 .set L$set$6,LCFI3-LCFI1 .long L$set$6 .byte 0xc5 # DW_CFA_restore, column 0x5 .byte 0xc # DW_CFA_def_cfa .byte 0x4 # uleb128 0x4 .byte 0x4 # uleb128 0x4 .align 2 LEFDE0: