This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]