This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Re: Section .debug_info in object file


On Thu, Sep 12, 2002 at 11:42:33AM +0200, Pierre Habraken wrote:
> A few days ago I posted a message about the fact that after launching
> gdb to debug a program made of several C and Arm assembly language
> files, the command 'info sources' lists C files only.

I have attached a far from complete patch. It adds the first source file
name in the .debug_info section. This patch will not help you much, but
it solves a bug when both gcc and gas are used with dwarf2 support on. In the
latter case readelf reports garbage such as:

<0><bf>: Abbrev Number: 1 (DW_TAG_compile_unit)
DW_AT_stmt_list   : 0      
DW_AT_high_pc     : 0x8048410 134513680    
DW_AT_low_pc      : 0x804841a 134513690    
DW_AT_name        : /home/anteater/test    
DW_AT_comp_dir    : GNU AS 2.11.90.0.8     
DW_AT_producer    : €=     
DW_AT_language    : 0      (Unknown: 0)

I check that with gcc 2.96. 

Elias

gas/ChangeLog

2002-09-12  Elias Athanasopoulos  <eathan@otenet.gr>

	* dwarf2dbg.c (out_debug_abbrev): Add support for the DW_AT_name field.
	(out_debug_info): Likewise.


--- dwarf2dbg.c.orig	Thu Sep 12 20:05:23 2002
+++ dwarf2dbg.c	Thu Sep 12 21:38:21 2002
@@ -1149,6 +1149,7 @@
       out_abbrev (DW_AT_low_pc, DW_FORM_addr);
       out_abbrev (DW_AT_high_pc, DW_FORM_addr);
     }
+  out_abbrev (DW_AT_name, DW_FORM_string);
   out_abbrev (DW_AT_comp_dir, DW_FORM_string);
   out_abbrev (DW_AT_producer, DW_FORM_string);
   out_abbrev (DW_AT_language, DW_FORM_data2);
@@ -1224,6 +1225,15 @@
       emit_expr (&expr, sizeof_address);
     }
 
+  /* DW_AT_name 
+   * FIXME: we only store the first source
+   * file, but we should add more records to
+   * .debug_info for each source file we assemble.
+   */  
+  len = strlen (files[1].filename) + 1;
+  p = frag_more (len);
+  memcpy (p, files[1].filename, len);
+                 
   /* DW_AT_comp_dir */
   comp_dir = getpwd ();
   len = strlen (comp_dir) + 1;


-- 
http://gnewtellium.sourceforge.net			MP3 is not a crime.	


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]