This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: Question regarding i386v4-nat.c:supply_gregset and fill_gregset
- From: Mark Kettenis <kettenis at chello dot nl>
- To: brobecker at gnat dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: Wed, 14 Aug 2002 00:06:18 +0200 (CEST)
- Subject: Re: Question regarding i386v4-nat.c:supply_gregset and fill_gregset
- References: <20020807010426.GN916@gnat.com>
Date: Tue, 6 Aug 2002 18:04:26 -0700
From: Joel Brobecker <brobecker@gnat.com>
Hello Mark,
Sorry for the slow response. I was having a vacation :-).
But there is one difference that causes some grief on interix, and I
had to modify these 2 functions like this to make them to work for
interix:
- greg_t *regp = (greg_t *) gregsetp;
+ greg_t *regp = (greg_t *) & gregsetp->gregs;
Indeed, on Interix, the gregs buffer is not located at the begining
of the gregset_t structure. So the function were reading/writting at
the wrong location.
Hmm...
The trouble is I don't have any machine handy to verify this change
on the other platforms. I have the feeling, though, that type gregset_t
is not always a structure, and hence makes my change only valid for
interix.
Yup, it is as Daniel already explained.
If this is the case, then I am afraid we won't be able to reuse
i386v4-nat.c that easily. Maybe we should implement 2 new functions
similar to i387_supply_fsave and i387_fill_fsave (in i386-nat.[hc]?):
i386_supply_gregset (greg_t *gregp);
i386_fill_gregset (greg_t *gregp, int regno);
both i386v4-nat.c and i386-interix-nat.c would use them to implement
supply/fill_gregset.
What do you think?
That would be a valid approach (although I would name the functions
i386_supply_gregs and i386_fill_gregs). On the other hand, I wouldn't
object to duplicating the small bits of code for Interix and deal with
it later. I'll have to rethink these functions sooner or later if I
want to support cross-debugging of core files.
Mark