This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: Function arguments question on ARM (RaspPi)
- From: fche at redhat dot com (Frank Ch. Eigler)
- To: Thomas Winkler <tom dot winkler at gmail dot com>
- Cc: systemtap at sourceware dot org
- Date: Mon, 21 Dec 2015 10:17:26 -0500
- Subject: Re: Function arguments question on ARM (RaspPi)
- Authentication-results: sourceware.org; auth=none
- References: <CA+y5ay7Jbg6PfaEGQd6tRXNoK9ZL6Gi6SaUU9WNu1OPoDewZ4Q at mail dot gmail dot com>
Hi, Thomas -
tom.winkler wrote:
> [...]
> static int mydrv_i2c_read(struct i2c_client *client, uint8_t reg,
> uint8_t *buf, uint8_t count);
> [...]
> The output I get is as follows:
>
> client=0x80576a00 reg=0x80 buf=0x9553be68 count=0x57
> u_arg_1: 0xb5e1f800
> u_arg_2: 0x24
> u_arg_3: 0x9553bea7
> u_arg_4: 0x1
> [...] I would have expected that the values I get when printing out
> $$parms are identical to those when using the _arg() functions. I
> know that the values I get via the _arg() functions are the correct
> ones but I don't understand why $$parms is wrong. [...]
Yeah, assumig you're right about the _arg* ones being correct, this
should not be happening. $$parms works based on dwarf debuginfo;
_arg* works on hard-coded-in-tapset abi assumptions. They should
normally match.
To diagnose further, we'd need to see more info, such as a disassembly
of the first part of that function, the debuginfo for same (readelf -w)
including related location-list data, stap/kernel version, stap -p3 output.
- FChE