Re: [PATCH] Fix cygwin build error with i386-linux-tdep.c

Hui Zhu
2009-09-09T05:59:44Z

On Wed, Sep 9, 2009 at 11:29, Michael Snyder<msnyder@vmware.com> wrote:
> Hui Zhu wrote:
>>
>> Hi guys,
>>
>> What do you think about this patch?
>
> Hey, Hui,
>
> Appologies -- this patch of yours sort of got subsumed into my
> bigger syscall patch.  If you look at CVS head, I think everything
> that this patch changes is already in.

Great.
Thanks a lot.

Hui

>
> Didn't mean to "cut you out"...   ;-)
>
> Michael
>
>
>> On Sun, Sep 6, 2009 at 12:15, Hui Zhu<teawater@gmail.com> wrote:
>>>
>>> On Sun, Sep 6, 2009 at 05:15, Joel Brobecker<brobecker@adacore.com>
>>> wrote:
>>>>>
>>>>> I could suggest casting it to (unsigned int), but it wouldn't
>>>>> really make any difference, would it?  Mark -- Jiang -- would
>>>>> that make you guys more comfortable?
>>>>
>>>> Short term, I'd rather see us read the syscall number as a signed
>>>> number since this is what record_linux_system_call expects. We can
>>>> decide whether to rationalize as a signed or unsigned as a separate
>>>> patch. I think Mark was OK with the patch I sent yesterday, except
>>>> that he said we should add a check against negative values.
>>>>
>>>> There is also a cast that is unnecessary in the error message.
>>>> Hui can use %s/paddress rather than %d/cast.
>>>>
>>>> --
>>>> Joel
>>>>
>>> Hi guys,
>>>
>>> I make a new patch according to your comment.
>>>
>>> Thanks,
>>> Hui
>>>
>>>
>>> 2009-09-06  Michael Snyder  <msnyder@vmware.com>
>>>           Joel Brobecker  <brobecker@adacore.com>
>>>           Hui Zhu  <teawater@gmail.com>
>>>
>>>       * i386-linux-tdep.c (i386_linux_intx80_sysenter_record): Change
>>>       regcache_raw_read to regcache_raw_read_signed.
>>>
>>> Index: i386-linux-tdep.c
>>> ===================================================================
>>> RCS file: /cvs/src/src/gdb/i386-linux-tdep.c,v
>>> retrieving revision 1.66
>>> diff -u -p -r1.66 i386-linux-tdep.c
>>> --- i386-linux-tdep.c   10 Aug 2009 03:04:44 -0000      1.66
>>> +++ i386-linux-tdep.c   6 Sep 2009 02:12:15 -0000
>>> @@ -367,18 +367,19 @@ static int
>>>  i386_linux_intx80_sysenter_record (struct regcache *regcache)
>>>  {
>>>  int ret;
>>> -  uint32_t tmpu32;
>>> +  LONGEST syscall;
>>>
>>> -  regcache_raw_read (regcache, I386_EAX_REGNUM, (gdb_byte *) &tmpu32);
>>> +  regcache_raw_read_signed (regcache, I386_EAX_REGNUM, &syscall);
>>>
>>> -  if (tmpu32 > 499)
>>> +  if (syscall < 0 || syscall > 499)
>>>    {
>>>      printf_unfiltered (_("Process record and replay target doesn't "
>>> -                           "support syscall number %u\n"), tmpu32);
>>> +                           "support syscall number %s\n"),
>>> +                        plongest (syscall));
>>>      return -1;
>>>    }
>>>
>>> -  ret = record_linux_system_call (tmpu32, regcache,
>>> +  ret = record_linux_system_call (syscall, regcache,
>>>                                 &i386_linux_record_tdep);
>>>  if (ret)
>>>    return ret;
>>>
>
>