Re: [rfa/amd64] Zero fill 32-bit registers

Andrew Cagney
2004-02-28T20:40:07Z

> It doesn't address the underlying problem where fetching an individual
> register leaves half the register field undefined. The code shouldn't
> assume that other code has magically initialized the rest of that
> register field.
>
> OK, but you realize its the problem of the threads code, and *not* the
> code amd64-nat.c?

Both are broken - "society is to blame".

> > > Another problem with your patch is that I'd rather like avoid assuming
> > > that the register buffer is an array of 8-byte registers.
> >
> > That code already assumems that, and that the values are little-endian.
> >
> > Yes it assumes little-endianness, but the assumptions on the size of
> > the slots in the register buffer are weaker. The register buffer here
> > corresponds to `struct reg' on the BSD's. It would be prefectly well
> > possible for some of its members to be 4 bytes in size. The current
> > code works for that case, whereas with your patch, it could thrash
> > another member of the structure.
>
> Do you know of any such an system?
>
> Actually GNU/Linux x86-64 has a gregset_t where %cs, %fs and %gs are
> stored in a short.
>
> Could you live with just zero-extending the 16 general-purpose
> registers and the instruction pointer? I'll implement it for you.

It is certainly an improvement! Can you test it?

Andrew