This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Question regarding i386v4-nat.c:supply_gregset and fill_gregset
- From: Joel Brobecker <brobecker at gnat dot com>
- To: Mark Kettenis <kettenis at chello dot nl>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 6 Aug 2002 18:04:26 -0700
- Subject: Question regarding i386v4-nat.c:supply_gregset and fill_gregset
Hello Mark,
Following your suggestion to use i386v4-nat.c for the interix port,
I was indeed impressed to see that, after simplifying supply_gregset()
and fill_gregset() as you indicated, they become (almost identical) to
their counterpart in i386v4-nat.
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.
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. 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?
--
Joel