|
From: <sv...@va...> - 2005-05-16 00:01:07
|
Author: njn
Date: 2005-05-16 01:01:04 +0100 (Mon, 16 May 2005)
New Revision: 3730
Modified:
trunk/coregrind/amd64/core_arch.h
trunk/coregrind/amd64/state.c
trunk/coregrind/arm/core_arch.h
trunk/coregrind/arm/state.c
trunk/coregrind/core.h
trunk/coregrind/vg_symtab2.c
trunk/coregrind/x86/core_arch.h
trunk/coregrind/x86/state.c
Log:
Moved VGA_(reg_addr_from_tst)() and VGA_R_{STACK,FRAME}_PTR into vg_symta=
b2.c.
Also made regaddr() and co. 64-bit clean (I hope I did that correctly).
Modified: trunk/coregrind/amd64/core_arch.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/amd64/core_arch.h 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/amd64/core_arch.h 2005-05-16 00:01:04 UTC (rev 3730)
@@ -56,10 +56,6 @@
#define VGA_CLREQ_ARGS guest_RAX
#define VGA_CLREQ_RET guest_RDX
=20
-// Register numbers, for vg_symtab2.c
-#define VGA_R_STACK_PTR 4
-#define VGA_R_FRAME_PTR 5
-
// Stack frame layout and linkage
#define VGA_FIRST_STACK_FRAME(rbp) (rbp)
#define VGA_STACK_FRAME_RET(rbp) (((UWord*)rbp)[1])
Modified: trunk/coregrind/amd64/state.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/amd64/state.c 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/amd64/state.c 2005-05-16 00:01:04 UTC (rev 3730)
@@ -112,56 +112,6 @@
=20
=20
/*------------------------------------------------------------*/
-/*--- Symtab stuff ---*/
-/*------------------------------------------------------------*/
-
-#if 0
-/* This is the Intel register encoding -- integer regs. */
-#define R_EAX 0
-#define R_ECX 1
-#define R_EDX 2
-#define R_EBX 3
-#define R_ESP 4
-#define R_EBP 5
-#define R_ESI 6
-#define R_EDI 7
-#define R_E8 8
-#define R_E9 9
-#define R_E10 10
-#define R_E11 11
-#define R_E12 12
-#define R_E13 13
-#define R_E14 14
-#define R_E15 15
-#endif
-
-UInt *VGA_(reg_addr_from_tst)(Int regno, ThreadArchState *arch)
-{
- I_die_here;
-#if 0
- switch (regno) {
- case R_RAX: return &arch->vex.guest_RAX;
- case R_RCX: return &arch->vex.guest_RCX;
- case R_RDX: return &arch->vex.guest_RDX;
- case R_RBX: return &arch->vex.guest_RBX;
- case R_RSP: return &arch->vex.guest_RSP;
- case R_RBP: return &arch->vex.guest_RBP;
- case R_RSI: return &arch->vex.guest_RSI;
- case R_RDI: return &arch->vex.guest_RDI;
- case R_R8 : return &arch->vex.guest_R8 ;
- case R_R9 : return &arch->vex.guest_R9 ;
- case R_R10: return &arch->vex.guest_R10;
- case R_R11: return &arch->vex.guest_R11;
- case R_R12: return &arch->vex.guest_R12;
- case R_R13: return &arch->vex.guest_R13;
- case R_R14: return &arch->vex.guest_R14;
- case R_R15: return &arch->vex.guest_R15;
- default: return NULL;
- }
-#endif
-}
-
-/*------------------------------------------------------------*/
/*--- pointercheck ---*/
/*------------------------------------------------------------*/
=20
Modified: trunk/coregrind/arm/core_arch.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/arm/core_arch.h 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/arm/core_arch.h 2005-05-16 00:01:04 UTC (rev 3730)
@@ -62,10 +62,6 @@
#define VGA_CLREQ_ARGS guest_R0
#define VGA_CLREQ_RET guest_R0
=20
-// Register numbers, for vg_symtab2.c
-#define VGA_R_STACK_PTR 13
-#define VGA_R_FRAME_PTR 11
-
// Stack frame layout and linkage
// XXX ToDo: ???
#define VGA_FIRST_STACK_FRAME(ebp) (ebp)
Modified: trunk/coregrind/arm/state.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/arm/state.c 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/arm/state.c 2005-05-16 00:01:04 UTC (rev 3730)
@@ -89,28 +89,6 @@
=20
=20
/*------------------------------------------------------------*/
-/*--- Symtab stuff ---*/
-/*------------------------------------------------------------*/
-
-UInt *VGA_(reg_addr_from_tst)(Int regno, ThreadArchState *arch)
-{
- I_die_here;
-#if 0
- switch (regno) {
- case R_EAX: return &arch->vex.guest_EAX;
- case R_ECX: return &arch->vex.guest_ECX;
- case R_EDX: return &arch->vex.guest_EDX;
- case R_EBX: return &arch->vex.guest_EBX;
- case R_ESP: return &arch->vex.guest_ESP;
- case R_EBP: return &arch->vex.guest_EBP;
- case R_ESI: return &arch->vex.guest_ESI;
- case R_EDI: return &arch->vex.guest_EDI;
- default: return NULL;
- }
-#endif
-}
-
-/*------------------------------------------------------------*/
/*--- pointercheck ---*/
/*------------------------------------------------------------*/
=20
Modified: trunk/coregrind/core.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/core.h 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/core.h 2005-05-16 00:01:04 UTC (rev 3730)
@@ -828,9 +828,6 @@
// handle an arch-specific client request
extern Bool VGA_(client_request)(ThreadId tid, UWord *args);
=20
-// Symtab stuff
-extern UInt* VGA_(reg_addr_from_tst) ( Int regno, ThreadArchState* );
-
// Pointercheck
extern Bool VGA_(setup_pointercheck) ( void );
=20
Modified: trunk/coregrind/vg_symtab2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.c 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/vg_symtab2.c 2005-05-16 00:01:04 UTC (rev 3730)
@@ -2250,11 +2250,38 @@
=20
#ifndef TEST
=20
+// Note that R_STACK_PTR and R_FRAME_PTR are used again further below,
+// which is why they get a named constant.
+static Addr regaddr_from_tst(Int regno, ThreadArchState *arch)
+{
+#if defined(VGA_x86)
+/* This is the Intel register encoding -- integer regs. */
+# define R_STACK_PTR 4
+# define R_FRAME_PTR 5
+ switch (regno) {
+ case 0: return (Addr) & arch->vex.guest_EAX;
+ case 1: return (Addr) & arch->vex.guest_ECX;
+ case 2: return (Addr) & arch->vex.guest_EDX;
+ case 3: return (Addr) & arch->vex.guest_EBX;
+ case R_STACK_PTR: return (Addr) & arch->vex.guest_ESP;
+ case R_FRAME_PTR: return (Addr) & arch->vex.guest_EBP;
+ case 6: return (Addr) & arch->vex.guest_ESI;
+ case 7: return (Addr) & arch->vex.guest_EDI;
+ default: return 0;
+ }
+#elif defined(VGA_amd64)
+# error AMD64 not done yet
+#else
+# error Unknown platform
+#endif
+}
+
+
/* return a pointer to a register (now for 5 other impossible things
before breakfast) */
-static UInt* regaddr(ThreadId tid, Int regno)
+static Addr regaddr(ThreadId tid, Int regno)
{
- UInt* ret =3D VGA_(reg_addr_from_tst)(regno, &VG_(threads)[tid].arch)=
;
+ Addr ret =3D regaddr_from_tst(regno, &VG_(threads)[tid].arch);
=20
if (ret =3D=3D 0) {
Char buf[100];
@@ -2330,7 +2357,6 @@
if (debug && 0)
VG_(printf)("sym->name=3D%s sym->kind=3D%d offset=3D%d\n", sym->nam=
e, sym->kind, sym->u.offset);
switch(sym->kind) {
- UInt reg;
=20
case SyGlobal:
case SyStatic:
@@ -2341,17 +2367,18 @@
break;
=20
case SyReg:
- v->valuep =3D (Addr)regaddr(tid, sym->u.regno);
+ v->valuep =3D regaddr(tid, sym->u.regno);
break;
=20
case SyEBPrel:
- case SyESPrel:
- reg =3D *regaddr(tid, sym->kind =3D=3D SyESPrel ?=20
- VGA_R_STACK_PTR : VGA_R_FRAME_PTR);
+ case SyESPrel: {
+ Addr reg =3D *(Addr*)regaddr(tid, sym->kind =3D=3D SyESPrel
+ ? R_STACK_PTR : R_FRAME_PTR)=
;
if (debug)
VG_(printf)("reg=3D%p+%d=3D%p\n", reg, sym->u.offset, reg+sym->u=
.offset);
- v->valuep =3D (Addr)(reg + sym->u.offset);
+ v->valuep =3D reg + sym->u.offset;
break;
+ }
=20
case SyType:
VG_(core_panic)("unexpected typedef in scope");
Modified: trunk/coregrind/x86/core_arch.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/x86/core_arch.h 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/x86/core_arch.h 2005-05-16 00:01:04 UTC (rev 3730)
@@ -56,10 +56,6 @@
#define VGA_CLREQ_ARGS guest_EAX
#define VGA_CLREQ_RET guest_EDX
=20
-// Register numbers, for vg_symtab2.c
-#define VGA_R_STACK_PTR 4
-#define VGA_R_FRAME_PTR 5
-
// Stack frame layout and linkage
#define VGA_FIRST_STACK_FRAME(ebp) (ebp)
#define VGA_STACK_FRAME_RET(ebp) (((UInt*)ebp)[1])
Modified: trunk/coregrind/x86/state.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/x86/state.c 2005-05-15 23:36:12 UTC (rev 3729)
+++ trunk/coregrind/x86/state.c 2005-05-16 00:01:04 UTC (rev 3730)
@@ -162,35 +162,6 @@
=20
=20
/*------------------------------------------------------------*/
-/*--- Symtab stuff ---*/
-/*------------------------------------------------------------*/
-
-/* This is the Intel register encoding -- integer regs. */
-#define R_EAX 0
-#define R_ECX 1
-#define R_EDX 2
-#define R_EBX 3
-#define R_ESP 4
-#define R_EBP 5
-#define R_ESI 6
-#define R_EDI 7
-
-UInt *VGA_(reg_addr_from_tst)(Int regno, ThreadArchState *arch)
-{
- switch (regno) {
- case R_EAX: return &arch->vex.guest_EAX;
- case R_ECX: return &arch->vex.guest_ECX;
- case R_EDX: return &arch->vex.guest_EDX;
- case R_EBX: return &arch->vex.guest_EBX;
- case R_ESP: return &arch->vex.guest_ESP;
- case R_EBP: return &arch->vex.guest_EBP;
- case R_ESI: return &arch->vex.guest_ESI;
- case R_EDI: return &arch->vex.guest_EDI;
- default: return NULL;
- }
-}
-
-/*------------------------------------------------------------*/
/*--- pointercheck ---*/
/*------------------------------------------------------------*/
=20
|