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

Andrew Cagney
2004-02-29T23:11:46Z

[-- Attachment #1: Type: text/plain, Size: 850 bytes --]

> Date: Sat, 28 Feb 2004 15:39:47 -0500
> From: Andrew Cagney <cagney@gnu.org>
>
> > 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?
>
> I've tested the attached on SuSE 8.2, with -m32. No changes in the
> testoutput for me, but the threaded stuff doesn't work very well on
> the system (and probably no at all in on 32x64-bit). I committed it
> anyway, since I can't imagine this making things worse for the
> threaded stuff if it works for the non-threaded stuff. I'd appreciate
> it if you could test whether this fixed the problems you were seeing.

The segment registers have the same problem, is the attached ok? 6.1?
With it applied I get test results that approach i386.

Andrew

[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 797 bytes --]

2004-02-29 Andrew Cagney <cagney@redhat.com>

* amd64-nat.c (amd64_collect_native_gregset): Zero-extend the
32-bit segment registers.

Index: amd64-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64-nat.c,v
retrieving revision 1.5
diff -u -r1.5 amd64-nat.c
--- amd64-nat.c 28 Feb 2004 21:55:48 -0000 1.5
+++ amd64-nat.c 29 Feb 2004 23:08:08 -0000
@@ -139,6 +139,12 @@
if (regnum == -1 || regnum == i)
memset (regs + amd64_native_gregset_reg_offset (i), 0, 8);
}
+ /* Ditto for %cs, %ss, %ds, %es, %fs, and %gs. */
+ for (i = I386_CS_REGNUM; i < I386_ST0_REGNUM; i++)
+ {
+ if (regnum == -1 || regnum == i)
+ memset (regs + amd64_native_gregset_reg_offset (i), 0, 8);
+ }
}

if (num_regs > NUM_REGS)