On Mon, Apr 10, 2023 at 9:58 PM Samuel Thibault <samuel.thiba...@gnu.org> wrote: > > Sergey Bugaev, le dim. 19 mars 2023 18:09:59 +0300, a ecrit: > > +#ifdef __USE_GNU > > +/* Number of each register in the `gregset_t' array. */ > > +enum > > +{ > > + REG_GSFS = 0, /* Actually int gs, fs. */ > > +# define REG_GSFS REG_GSFS > > + REG_ESDS, /* Actually int es, ds. */ > > +# define REG_ESDS REG_ESDS > > On second thought, why REG_ESDS? They are basically useless on amd64 > > Linux packs all segment registers in REG_CSGSFS, probably better to > stuff them the same way? (all three really are 16bit only, even if the > thread_state is padding them to 32bits).
Exactly because that's how they are laid out in struct i386_thread_state, if you count in 8-byte chunks. Look at how these REG_* definitions are used in fill_ucontext () in trampoline.c (that's the one, not hursig.c like my previous message said). Sergey