[Dwarf-discuss] Difference in DWARF Info generated by GCC 3.4.6 and GCC 4.1.1
Rohit Arul Raj
rohitarulraj@gmail.com
Mon Apr 16 11:52:15 GMT 2007
Hello all,
I ran a sample program with gcc 3.4.6 and gcc 4.1.1 compiler. I need
some clarifications regarding the DWARFinfo generated by these 2
compilers.
Sample Program:
#include <stdio.h>
int fun(const char*, ...);
/* Variadic function */
int fun(const char *raj,...)
{
return 9;
}
int main()
{
fun("Hello world",3,2);
return 0;
}
################# Readelf O/P for 3.4.6 ##############
<1><e3>: Abbrev Number: 6 (DW_TAG_subprogram)
DW_AT_sibling : <10e>
DW_AT_external : 1
DW_AT_name : fun
DW_AT_decl_file : 7
DW_AT_decl_line : 7
DW_AT_prototyped : 1
DW_AT_type : <4c>
DW_AT_low_pc : 0
DW_AT_high_pc : 0x14
DW_AT_frame_base : 1 byte block: 5e (DW_OP_reg14)
<2><fe>: Abbrev Number: 7 (DW_TAG_formal_parameter)
DW_AT_name : raj
DW_AT_decl_file : 7
DW_AT_decl_line : 6
DW_AT_type : <a8>
DW_AT_location : 2 byte block: 91 4 (DW_OP_fbreg: 4)
################# Readelf O/P for 4.1.1 ##############
1><103>: Abbrev Number: 6 (DW_TAG_subprogram)
DW_AT_sibling : <12e>
DW_AT_external : 1
DW_AT_name : fun
DW_AT_decl_file : 10
DW_AT_decl_line : 7
DW_AT_prototyped : 1
DW_AT_type : <53>
DW_AT_low_pc : 0
DW_AT_high_pc : 0x14
DW_AT_frame_base : 1 byte block: 5f (DW_OP_reg15)
<2><11e>: Abbrev Number: 7 (DW_TAG_formal_parameter)
DW_AT_name : raj
DW_AT_decl_file : 10
DW_AT_decl_line : 6
DW_AT_type : <b9>
DW_AT_location : 2 byte block: 91 0 (DW_OP_fbreg: 0)
###########################################################
1. In DIE for fun, with 3.4.6, the frame base is taken in terms of
Frame Pointer (DW_OP_reg14), where is in 4.1.1, it is taken in terms
of Stack Pointer (DW_OP_reg15).
(For my backend, reg-no 14 is Frame Pointer and reg-no 15 is Stack Pointer)
Is this the expected behavior?
2. For the variable, const char *raj, the DIE for 3.4.6 has the
location mentioned as (fbreg + 4 [offset] ) whereas for 4.1.1,
location is mentioned as (fbreg + 0).
Any specific reason for this behavior in GCC 4.1.1
Regards,
Rohit
More information about the Dwarf-discuss
mailing list