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: SystemTap for Android - patchset


On 07/08/2016 12:38 AM, Alexander Lochmann wrote:
> On 07.07.2016 23:14, David Smith wrote:
>> On 07/07/2016 03:52 PM, Alexander Lochmann wrote:
>>> On 07.07.2016 19:39, David Smith wrote:
>>>> OK, I'll believe you. However, your fix above still isn't correct. The
>>>> whole point of autoconf-asm-syscall.c is to test if asm/syscall.h exists
>>>> and is usable. If so, STAPCONF_ASM_SYSCALL_H will get defined. If
>>>> autoconf-asm-syscall.c doesn't compile correctly, then
>>>> STAPCONF_ASM_SYSCALL_H won't be defined.
>>>>
>>>> What needs to happen next here is for you to back out this change,
>>>> recompile systemtap, then try to compile a few systemtap scripts. We'll
>>>> need to see the errors to know what to fix. I'd guess we'll need to test
>>>> STAPCONF_ASM_SYSCALL_H in some more places.
>>> Ok. Here is the error message I get:
>>> /tmp/stapE7HrAi/alexv9_src.c: In function
>>> 'function___global__stp_syscall_nr__overload_0':
>>> /tmp/stapE7HrAi/alexv9_src.c:7975:2: error: implicit declaration of
>>> function '_stp_syscall_get_nr'
>>>
>>> I tested three scripts so far. All of them do not compile due to the
>>> above error.
>>> Do you need one of the scripts?
>>
>> Nope.
>>
>> One of the reasons we include <asm/syscall.h> is to get the kernel's
>> syscall_get_nr() macros. If the kernel doesn't have a <asm/syscall.h>,
>> we define our own versions of syscall_get_nr() in runtime/syscall.h. The
>> arm platform already has our custom version of that macro in
>> runtime/syscall.h.
>>
>> I'd guess we aren't including systemtap's runtime/syscall.h in the
>> proper place.  Here's a patch that might work:
>>
>> ====
>> diff --git a/tapset/linux/aux_syscalls.stp b/tapset/linux/aux_syscalls.stp
>> index 110e6e9..2cc3cea 100644
>> --- a/tapset/linux/aux_syscalls.stp
>> +++ b/tapset/linux/aux_syscalls.stp
>> @@ -43,6 +43,8 @@
>>  // Get _stp_val_array and _stp_lookup_* definitions.
>>  #include "linux/syscalls-common.h"
>>
>> +#include "syscall.h"
>> +
>>  static void
>>  _stp_lookup_str2(const _stp_val_array * const array, long val, char *ptr,
>>  		 int len, int base)
>> ====
>>
> Yes. Works. :) At least for the four scripts I tested.

Great. Checked in as commit bf6ec87.

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)


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