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]

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


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



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