This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
RE: nightly test result of systemtap in ppc64
- From: "Stone, Joshua I" <joshua dot i dot stone at intel dot com>
- To: "Hien Nguyen" <hien at us dot ibm dot com>
- Cc: "SystemTAP" <systemtap at sources dot redhat dot com>, "Nguyen, Thang P" <thang dot p dot nguyen at intel dot com>
- Date: Tue, 9 May 2006 11:42:37 -0700
- Subject: RE: nightly test result of systemtap in ppc64
I committed a fix - please see if it works for you now.
Josh
On Tuesday, May 09, 2006 11:30 AM, Hien Nguyen wrote:
> Stone, Joshua I wrote:
>
>> On Tuesday, May 09, 2006 11:02 AM, Hien Nguyen wrote:
>>
>>
>>> I initialized *ptr=NULL to get pass the compiler.
>>>
>>>
>>
>> Sure, but I would like to know why that error was reported in the
>> first place. As far as I can see, there's no way for 'ptr' to be
>> used uninitialized. If I'm missing something, then your fix just
>> means that we'll induce a NULL dereference if there's a problem.
>>
>>
>> Josh
>>
>>
> Here it is
> 46121 void function_probefunc (struct context* __restrict__ c) {
> 46122 struct function_probefunc_locals * __restrict__ l =
> 46123 & c->locals[c->nesting].function_probefunc;
> 46124 (void) l;
> 46125 #define CONTEXT c
> 46126 #define THIS l
> 46127 if (0) goto out;
> 46128 l->__retvalue[0] = '\0';
> 46129 {
> 46130 /* pure */
> 46131 char *dst, *ptr, *start;
> 46132 String str;
> 46133 int len = MAXSTRINGLEN;
> 46134
> 46135 start = strstr(CONTEXT->probe_point, "function(\"");
> 46136 if (start) {
> 46137 ptr = start + 10;
> 46138 } else {
> 46139 start = strstr(CONTEXT->probe_point,
> "inline(\""); 46140 if (start) {
> 46141 ptr = start + 8;
> 46142 }
> 46143 }
> 46144 if (start) {
> 46145 dst = THIS->__retvalue;
> 46146 while (*ptr != '@' && --len > 0 && *ptr)
> 46147 *dst++ = *ptr++;
> 46148 *dst = 0;
> 46149 goto out;
> 46150 }
> 46151 if (CONTEXT->regs) {
> 46152 str = _stp_string_init (0);
> 46153 _stp_symbol_sprint(str,
> REG_IP(CONTEXT->regs)); 46154 start =
> strstr(_stp_string_ptr(str), " : "); 46155 if
> (start) { 46156 dst = THIS->__retvalue;
> 46157 ptr = start+3;
> 46158 while (*ptr != '+' && --len > 0 &&
> *ptr) 46159 *dst++ = *ptr++;
> 46160 *dst = 0;
> 46161 }
> 46162 else {
> 46163 strlcpy(THIS->__retvalue,
> _stp_string_ptr(str),M AXSTRINGLEN);
> 46164 }
> 46165 goto out;
> 46166 }
> 46167 THIS->__retvalue[0] = '\0';
> 46168
> 46169 }