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

Michael Snyder
2009-09-09T03:31:12Z

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.

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;
>>