[Dwarf-Discuss] Alternate entry points

Rafik Zurob rzurob at ca.ibm.com
Tue Oct 23 22:00:26 PDT 2018


> I dug up gfortran 5.4, which does not emit DW_TAG_entry_point with my
> simple example program.  Does anybody actually use it?

IBM XL Fortran generates it.

$ cat entry.f
subroutine foo(a)
  integer a
  real b

  a = 5
  return
entry bar(b)
  b = 3.0
  return
end subroutine
$

Gets the following DWARF:

 <1><42>: Abbrev Number: 2 (DW_TAG_base_type)
    <43>   DW_AT_name        : INTEGER
    <4b>   DW_AT_byte_size   : 4
    <4c>   DW_AT_encoding    : 5        (signed)
 <1><51>: Abbrev Number: 2 (DW_TAG_base_type)
    <52>   DW_AT_name        : REAL
    <57>   DW_AT_byte_size   : 4
    <58>   DW_AT_encoding    : 4        (float)
 <1><59>: Abbrev Number: 4 (DW_TAG_subprogram)
    <5a>   DW_AT_name        : foo
    <5e>   DW_AT_low_pc      : 0x0
    <66>   DW_AT_high_pc     : 128
    <67>   DW_AT_decl_file   : 1
    <68>   DW_AT_decl_line   : 1
    <69>   DW_AT_external    : 1
    <6a>   DW_AT_frame_base  : 0x0 (location list)
 <2><72>: Abbrev Number: 5 (DW_TAG_formal_parameter)
    <73>   DW_AT_location    : 3 byte block: 91 20 6    (DW_OP_fbreg: 32; 
DW_OP_deref)
    <77>   DW_AT_name        : a
    <79>   DW_AT_type        : 0x42
 <2><81>: Abbrev Number: 5 (DW_TAG_formal_parameter)
    <82>   DW_AT_location    : 3 byte block: 91 28 6    (DW_OP_fbreg: 40; 
DW_OP_deref)
    <86>   DW_AT_name        : b
    <88>   DW_AT_type        : 0x51
 <2><90>: Abbrev Number: 6 (DW_TAG_entry_point)
    <91>   DW_AT_name        : bar
    <95>   DW_AT_low_pc      : 0x28
    <9d>   DW_AT_decl_file   : 1
    <9e>   DW_AT_decl_line   : 7
    <9f>   DW_AT_frame_base  : 1 byte block: 6e         (DW_OP_reg30 
(r30))





More information about the Dwarf-Discuss mailing list