This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: stap make check - process_test and sched_test failure
- From: Li Guanglei <guanglei at cn dot ibm dot com>
- To: Roland McGrath <roland at redhat dot com>
- Cc: Hien Nguyen <hien at us dot ibm dot com>, SystemTAP <systemtap at sources dot redhat dot com>
- Date: Wed, 26 Jul 2006 17:25:00 +0800
- Subject: Re: stap make check - process_test and sched_test failure
- Organization: IBM CSTL
- References: <20060725205855.4458618003A@magilla.sf.frob.com>
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