This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap 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]

Re: stap make check - process_test and sched_test failure


Roland McGrath ??:

Please sort out among these which ones are which. The ones that have no location might be inlined constant parameters or something. The compiler could do better on those. Or maybe it's just plain compiler bugs that cause them to be missing.


Thanks, Roland

Sorry, today when I tried objdump using the address of DW_AT_low_pc in DW_TAG_inlined_subroutine, I realized that I was looking at handle_signal for ppc32(signal_32.c). The following is the DWARF info for handle_signal on ppc64 kernel(signal_64.c). You can see that the compiler won't generate the arguments location info for this concrete instance of handle_signal.


The signature of handle_signal on ppc64 is:

static int handle_signal(unsigned long sig, struct k_sigaction *ka,
siginfo_t *info, sigset_t *oldset, struct pt_regs *regs)


...
 <1><b7ffb>: Abbrev Number: 65 (DW_TAG_subprogram)
     DW_AT_sibling     : <b8055>
     DW_AT_name        : (indirect string, offset: 0x5525): handle_signal
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 446
     DW_AT_prototyped  : 1
     DW_AT_type        : <afa76>
     DW_AT_inline      : 1      (inlined)
 <2><b800d>: Abbrev Number: 66 (DW_TAG_formal_parameter)
     DW_AT_name        : sig
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 444
     DW_AT_type        : <afa63>
 <2><b8019>: Abbrev Number: 66 (DW_TAG_formal_parameter)
     DW_AT_name        : ka
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 444
     DW_AT_type        : <b7ff5>
 <2><b8024>: Abbrev Number: 67 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0x68a62): info
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 445
     DW_AT_type        : <b31a1>
 <2><b8030>: Abbrev Number: 67 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0x5633): oldset
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 445
     DW_AT_type        : <b3165>
 <2><b803c>: Abbrev Number: 67 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0xa0700): regs
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 445
     DW_AT_type        : <b01b7>

...

 <3><b785d>: Abbrev Number: 56 (DW_TAG_inlined_subroutine)
     DW_AT_sibling     : <b7d86>
     DW_AT_abstract_origin: <b7ffb>
     DW_AT_low_pc      : 0x15928
     DW_AT_high_pc     : 0x15d30
     DW_AT_call_file   : 0
     DW_AT_call_line   : 0
 <4><b7878>: Abbrev Number: 57 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <b800d>
 <4><b787d>: Abbrev Number: 57 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <b8019>
 <4><b7882>: Abbrev Number: 57 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <b8024>
 <4><b7887>: Abbrev Number: 57 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <b8030>
 <4><b788c>: Abbrev Number: 57 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <b803c>


As a comparision, I also paste the DWARF info for handle_signal on ppc32. You can see that GCC generate the loc info for part of arguments of handle_signal:


handle_signal is declared as the following in ppc32:

static int handle_signal(unsigned long sig, struct k_sigaction *ka,
                siginfo_t *info, sigset_t *oldset, struct pt_regs *regs,
                unsigned long newsp)
...
 <1><671e1>: Abbrev Number: 77 (DW_TAG_subprogram)
     DW_AT_sibling     : <67316>
     DW_AT_name        : (indirect string, offset: 0x5525): handle_signal
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1008
     DW_AT_prototyped  : 1
     DW_AT_type        : <5e0be>
     DW_AT_inline      : 1      (inlined)
 <2><671f3>: Abbrev Number: 78 (DW_TAG_formal_parameter)
     DW_AT_name        : sig
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1005
     DW_AT_type        : <5e0ab>
 <2><671ff>: Abbrev Number: 78 (DW_TAG_formal_parameter)
     DW_AT_name        : ka
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1005
     DW_AT_type        : <64fd0>
 <2><6720a>: Abbrev Number: 79 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0x68a62): info
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1006
     DW_AT_type        : <6176a>
 <2><67216>: Abbrev Number: 79 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0x5633): oldset
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1006
     DW_AT_type        : <6172e>
 <2><67222>: Abbrev Number: 79 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0xa0700): regs
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1006
     DW_AT_type        : <5e787>
 <2><6722e>: Abbrev Number: 79 (DW_TAG_formal_parameter)
     DW_AT_name        : (indirect string, offset: 0x5606): newsp
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 1007
     DW_AT_type        : <5e0ab>
...
 <2><66bf9>: Abbrev Number: 48 (DW_TAG_inlined_subroutine)
     DW_AT_sibling     : <66d87>
     DW_AT_abstract_origin: <671e1>
     DW_AT_low_pc      : 0xda70
     DW_AT_high_pc     : 0xdbe4
     DW_AT_call_file   : 0
     DW_AT_call_line   : 0
 <3><66c14>: Abbrev Number: 54 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <671f3>
     DW_AT_location    : 66492  (location list)
 <3><66c1d>: Abbrev Number: 49 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <671ff>
 <3><66c22>: Abbrev Number: 49 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <6720a>
 <3><66c27>: Abbrev Number: 49 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <67216>
 <3><66c2c>: Abbrev Number: 54 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <67222>
     DW_AT_location    : 66527  (location list)
 <3><66c35>: Abbrev Number: 54 (DW_TAG_formal_parameter)
     DW_AT_abstract_origin: <6722e>
     DW_AT_location    : 66581  (location list)
...

- Guanglei


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