mirror of
https://github.com/golang/go
synced 2024-09-15 22:20:06 +00:00
libmach: use different names for different Ureg types
Everything was doing this already with #defines. Do it right. R=golang-codereviews, jsing, 0intro, iant CC=golang-codereviews https://golang.org/cl/49090043
This commit is contained in:
parent
fca453e062
commit
06c0280440
|
@ -26,7 +26,8 @@
|
|||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
struct Ureg {
|
||||
typedef struct UregAmd64 UregAmd64;
|
||||
struct UregAmd64 {
|
||||
u64int ax;
|
||||
u64int bx;
|
||||
u64int cx;
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
struct Ureg {
|
||||
typedef struct UregArm UregArm;
|
||||
struct UregArm {
|
||||
uint r0;
|
||||
uint r1;
|
||||
uint r2;
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
struct Ureg
|
||||
typedef struct Ureg386 Ureg386;
|
||||
struct Ureg386
|
||||
{
|
||||
uint32 di; /* general registers */
|
||||
uint32 si; /* ... */
|
||||
|
|
|
@ -9,21 +9,16 @@
|
|||
#include <libc.h>
|
||||
#include <bio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#define Ureg Ureg_amd64
|
||||
#include <ureg_amd64.h>
|
||||
#undef Ureg
|
||||
#define Ureg Ureg_x86
|
||||
#include <ureg_x86.h>
|
||||
#undef Ureg
|
||||
#include <ureg_amd64.h>
|
||||
#include <ureg_x86.h>
|
||||
#include <mach.h>
|
||||
|
||||
char* file = "6.out";
|
||||
static Fhdr fhdr;
|
||||
int have_syms;
|
||||
int fd;
|
||||
struct Ureg_amd64 ureg_amd64;
|
||||
struct Ureg_x86 ureg_x86;
|
||||
struct UregAmd64 ureg_amd64;
|
||||
struct Ureg386 ureg_x86;
|
||||
int total_sec = 0;
|
||||
int delta_msec = 100;
|
||||
int nsample;
|
||||
|
@ -132,7 +127,7 @@ amd64_getregs(Map *map)
|
|||
int i;
|
||||
union {
|
||||
uvlong regs[1];
|
||||
struct Ureg_amd64 ureg;
|
||||
struct UregAmd64 ureg;
|
||||
} u;
|
||||
|
||||
for(i = 0; i < sizeof ureg_amd64; i+=8) {
|
||||
|
@ -149,7 +144,7 @@ amd64_getPC(Map *map)
|
|||
uvlong x;
|
||||
int r;
|
||||
|
||||
r = get8(map, offsetof(struct Ureg_amd64, ip), &x);
|
||||
r = get8(map, offsetof(struct UregAmd64, ip), &x);
|
||||
ureg_amd64.ip = x;
|
||||
return r;
|
||||
}
|
||||
|
@ -160,7 +155,7 @@ amd64_getSP(Map *map)
|
|||
uvlong x;
|
||||
int r;
|
||||
|
||||
r = get8(map, offsetof(struct Ureg_amd64, sp), &x);
|
||||
r = get8(map, offsetof(struct UregAmd64, sp), &x);
|
||||
ureg_amd64.sp = x;
|
||||
return r;
|
||||
}
|
||||
|
@ -229,13 +224,13 @@ x86_getregs(Map *map)
|
|||
int
|
||||
x86_getPC(Map* map)
|
||||
{
|
||||
return get4(map, offsetof(struct Ureg_x86, pc), &ureg_x86.pc);
|
||||
return get4(map, offsetof(struct Ureg386, pc), &ureg_x86.pc);
|
||||
}
|
||||
|
||||
int
|
||||
x86_getSP(Map* map)
|
||||
{
|
||||
return get4(map, offsetof(struct Ureg_x86, sp), &ureg_x86.sp);
|
||||
return get4(map, offsetof(struct Ureg386, sp), &ureg_x86.sp);
|
||||
}
|
||||
|
||||
uvlong
|
||||
|
|
|
@ -35,12 +35,12 @@
|
|||
#include "ureg_arm.h"
|
||||
#include <mach.h>
|
||||
|
||||
#define REGOFF(x) (uintptr) (&((struct Ureg *) 0)->x)
|
||||
#define REGOFF(x) (uintptr) (&((struct UregArm *) 0)->x)
|
||||
|
||||
#define SP REGOFF(r13)
|
||||
#define PC REGOFF(pc)
|
||||
|
||||
#define REGSIZE sizeof(struct Ureg)
|
||||
#define REGSIZE sizeof(struct UregArm)
|
||||
|
||||
Reglist armreglist[] =
|
||||
{
|
||||
|
|
|
@ -40,8 +40,6 @@ static int debug = 0;
|
|||
#define ASR(v, s) ((long)(v) >> (s))
|
||||
#define ROR(v, s) (LSR((v), (s)) | (((v) & ((1 << (s))-1)) << (32 - (s))))
|
||||
|
||||
|
||||
|
||||
typedef struct Instr Instr;
|
||||
struct Instr
|
||||
{
|
||||
|
|
|
@ -35,9 +35,9 @@
|
|||
#include "ureg_amd64.h"
|
||||
#include <mach.h>
|
||||
|
||||
#define REGOFF(x) offsetof(struct Ureg, x)
|
||||
#define REGOFF(x) offsetof(struct UregAmd64, x)
|
||||
|
||||
#define REGSIZE sizeof(struct Ureg)
|
||||
#define REGSIZE sizeof(struct UregAmd64)
|
||||
#define FP_CTLS(x) (REGSIZE+2*(x))
|
||||
#define FP_CTL(x) (REGSIZE+4*(x))
|
||||
#define FP_REG(x) (FP_CTL(8)+16*(x))
|
||||
|
|
|
@ -35,13 +35,13 @@
|
|||
#include <ureg_x86.h>
|
||||
#include <mach.h>
|
||||
|
||||
#define REGOFF(x) (uintptr)(&((struct Ureg *) 0)->x)
|
||||
#define REGOFF(x) (uintptr)(&((struct Ureg386 *) 0)->x)
|
||||
|
||||
#define PC REGOFF(pc)
|
||||
#define SP REGOFF(sp)
|
||||
#define AX REGOFF(ax)
|
||||
|
||||
#define REGSIZE sizeof(struct Ureg)
|
||||
#define REGSIZE sizeof(struct Ureg386)
|
||||
#define FP_CTL(x) (REGSIZE+4*(x))
|
||||
#define FP_REG(x) (FP_CTL(7)+10*(x))
|
||||
#define FPREGSIZE (7*4+8*10)
|
||||
|
|
|
@ -30,15 +30,8 @@
|
|||
#include <libc.h>
|
||||
#include <bio.h>
|
||||
#include <mach.h>
|
||||
#define Ureg UregAmd64
|
||||
#include <ureg_amd64.h>
|
||||
#undef Ureg
|
||||
#define Ureg Ureg386
|
||||
#include <ureg_x86.h>
|
||||
#undef Ureg
|
||||
|
||||
typedef struct UregAmd64 UregAmd64;
|
||||
typedef struct Ureg386 Ureg386;
|
||||
|
||||
/*
|
||||
* i386-specific debugger interface
|
||||
|
|
|
@ -29,17 +29,10 @@
|
|||
#include <libc.h>
|
||||
#include <bio.h>
|
||||
#include <mach.h>
|
||||
#define Ureg Ureg32
|
||||
#include <ureg_x86.h>
|
||||
#undef Ureg
|
||||
#define Ureg Ureg64
|
||||
#include <ureg_amd64.h>
|
||||
#undef Ureg
|
||||
#undef waitpid /* want Unix waitpid, not Plan 9 */
|
||||
|
||||
typedef struct Ureg32 Ureg32;
|
||||
typedef struct Ureg64 Ureg64;
|
||||
|
||||
extern mach_port_t mach_reply_port(void); // should be in system headers, is not
|
||||
|
||||
// Mach-error wrapper.
|
||||
|
@ -450,31 +443,31 @@ static int
|
|||
go2darwin32(uvlong addr)
|
||||
{
|
||||
switch(addr){
|
||||
case offsetof(Ureg32, ax):
|
||||
case offsetof(Ureg386, ax):
|
||||
return offsetof(x86_thread_state32_t, eax);
|
||||
case offsetof(Ureg32, bx):
|
||||
case offsetof(Ureg386, bx):
|
||||
return offsetof(x86_thread_state32_t, ebx);
|
||||
case offsetof(Ureg32, cx):
|
||||
case offsetof(Ureg386, cx):
|
||||
return offsetof(x86_thread_state32_t, ecx);
|
||||
case offsetof(Ureg32, dx):
|
||||
case offsetof(Ureg386, dx):
|
||||
return offsetof(x86_thread_state32_t, edx);
|
||||
case offsetof(Ureg32, si):
|
||||
case offsetof(Ureg386, si):
|
||||
return offsetof(x86_thread_state32_t, esi);
|
||||
case offsetof(Ureg32, di):
|
||||
case offsetof(Ureg386, di):
|
||||
return offsetof(x86_thread_state32_t, edi);
|
||||
case offsetof(Ureg32, bp):
|
||||
case offsetof(Ureg386, bp):
|
||||
return offsetof(x86_thread_state32_t, ebp);
|
||||
case offsetof(Ureg32, fs):
|
||||
case offsetof(Ureg386, fs):
|
||||
return offsetof(x86_thread_state32_t, fs);
|
||||
case offsetof(Ureg32, gs):
|
||||
case offsetof(Ureg386, gs):
|
||||
return offsetof(x86_thread_state32_t, gs);
|
||||
case offsetof(Ureg32, pc):
|
||||
case offsetof(Ureg386, pc):
|
||||
return offsetof(x86_thread_state32_t, eip);
|
||||
case offsetof(Ureg32, cs):
|
||||
case offsetof(Ureg386, cs):
|
||||
return offsetof(x86_thread_state32_t, cs);
|
||||
case offsetof(Ureg32, flags):
|
||||
case offsetof(Ureg386, flags):
|
||||
return offsetof(x86_thread_state32_t, eflags);
|
||||
case offsetof(Ureg32, sp):
|
||||
case offsetof(Ureg386, sp):
|
||||
return offsetof(x86_thread_state32_t, esp);
|
||||
}
|
||||
return -1;
|
||||
|
@ -485,47 +478,47 @@ static int
|
|||
go2darwin64(uvlong addr)
|
||||
{
|
||||
switch(addr){
|
||||
case offsetof(Ureg64, ax):
|
||||
case offsetof(UregAmd64, ax):
|
||||
return offsetof(x86_thread_state64_t, rax);
|
||||
case offsetof(Ureg64, bx):
|
||||
case offsetof(UregAmd64, bx):
|
||||
return offsetof(x86_thread_state64_t, rbx);
|
||||
case offsetof(Ureg64, cx):
|
||||
case offsetof(UregAmd64, cx):
|
||||
return offsetof(x86_thread_state64_t, rcx);
|
||||
case offsetof(Ureg64, dx):
|
||||
case offsetof(UregAmd64, dx):
|
||||
return offsetof(x86_thread_state64_t, rdx);
|
||||
case offsetof(Ureg64, si):
|
||||
case offsetof(UregAmd64, si):
|
||||
return offsetof(x86_thread_state64_t, rsi);
|
||||
case offsetof(Ureg64, di):
|
||||
case offsetof(UregAmd64, di):
|
||||
return offsetof(x86_thread_state64_t, rdi);
|
||||
case offsetof(Ureg64, bp):
|
||||
case offsetof(UregAmd64, bp):
|
||||
return offsetof(x86_thread_state64_t, rbp);
|
||||
case offsetof(Ureg64, r8):
|
||||
case offsetof(UregAmd64, r8):
|
||||
return offsetof(x86_thread_state64_t, r8);
|
||||
case offsetof(Ureg64, r9):
|
||||
case offsetof(UregAmd64, r9):
|
||||
return offsetof(x86_thread_state64_t, r9);
|
||||
case offsetof(Ureg64, r10):
|
||||
case offsetof(UregAmd64, r10):
|
||||
return offsetof(x86_thread_state64_t, r10);
|
||||
case offsetof(Ureg64, r11):
|
||||
case offsetof(UregAmd64, r11):
|
||||
return offsetof(x86_thread_state64_t, r11);
|
||||
case offsetof(Ureg64, r12):
|
||||
case offsetof(UregAmd64, r12):
|
||||
return offsetof(x86_thread_state64_t, r12);
|
||||
case offsetof(Ureg64, r13):
|
||||
case offsetof(UregAmd64, r13):
|
||||
return offsetof(x86_thread_state64_t, r13);
|
||||
case offsetof(Ureg64, r14):
|
||||
case offsetof(UregAmd64, r14):
|
||||
return offsetof(x86_thread_state64_t, r14);
|
||||
case offsetof(Ureg64, r15):
|
||||
case offsetof(UregAmd64, r15):
|
||||
return offsetof(x86_thread_state64_t, r15);
|
||||
case offsetof(Ureg64, fs):
|
||||
case offsetof(UregAmd64, fs):
|
||||
return offsetof(x86_thread_state64_t, fs);
|
||||
case offsetof(Ureg64, gs):
|
||||
case offsetof(UregAmd64, gs):
|
||||
return offsetof(x86_thread_state64_t, gs);
|
||||
case offsetof(Ureg64, ip):
|
||||
case offsetof(UregAmd64, ip):
|
||||
return offsetof(x86_thread_state64_t, rip);
|
||||
case offsetof(Ureg64, cs):
|
||||
case offsetof(UregAmd64, cs):
|
||||
return offsetof(x86_thread_state64_t, cs);
|
||||
case offsetof(Ureg64, flags):
|
||||
case offsetof(UregAmd64, flags):
|
||||
return offsetof(x86_thread_state64_t, rflags);
|
||||
case offsetof(Ureg64, sp):
|
||||
case offsetof(UregAmd64, sp):
|
||||
return offsetof(x86_thread_state64_t, rsp);
|
||||
}
|
||||
return -1;
|
||||
|
|
|
@ -38,12 +38,8 @@
|
|||
#include <libc.h>
|
||||
#include <bio.h>
|
||||
#include <mach.h>
|
||||
#define Ureg Ureg32
|
||||
#include <ureg_x86.h>
|
||||
#undef Ureg
|
||||
#define Ureg Ureg64
|
||||
#include <ureg_amd64.h>
|
||||
#undef Ureg
|
||||
#undef waitpid
|
||||
|
||||
// The old glibc used with crosstool compilers on thresher
|
||||
|
@ -71,8 +67,6 @@
|
|||
#define PTRACE_EVENT_EXIT 0x6
|
||||
#endif
|
||||
|
||||
typedef struct Ureg64 Ureg64;
|
||||
|
||||
static Maprw ptracesegrw;
|
||||
static Maprw ptraceregrw;
|
||||
|
||||
|
@ -882,53 +876,53 @@ go2linux(uvlong addr)
|
|||
}
|
||||
|
||||
switch(addr){
|
||||
case offsetof(Ureg64, ax):
|
||||
case offsetof(UregAmd64, ax):
|
||||
return offsetof(struct user_regs_struct, rax);
|
||||
case offsetof(Ureg64, bx):
|
||||
case offsetof(UregAmd64, bx):
|
||||
return offsetof(struct user_regs_struct, rbx);
|
||||
case offsetof(Ureg64, cx):
|
||||
case offsetof(UregAmd64, cx):
|
||||
return offsetof(struct user_regs_struct, rcx);
|
||||
case offsetof(Ureg64, dx):
|
||||
case offsetof(UregAmd64, dx):
|
||||
return offsetof(struct user_regs_struct, rdx);
|
||||
case offsetof(Ureg64, si):
|
||||
case offsetof(UregAmd64, si):
|
||||
return offsetof(struct user_regs_struct, rsi);
|
||||
case offsetof(Ureg64, di):
|
||||
case offsetof(UregAmd64, di):
|
||||
return offsetof(struct user_regs_struct, rdi);
|
||||
case offsetof(Ureg64, bp):
|
||||
case offsetof(UregAmd64, bp):
|
||||
return offsetof(struct user_regs_struct, rbp);
|
||||
case offsetof(Ureg64, r8):
|
||||
case offsetof(UregAmd64, r8):
|
||||
return offsetof(struct user_regs_struct, r8);
|
||||
case offsetof(Ureg64, r9):
|
||||
case offsetof(UregAmd64, r9):
|
||||
return offsetof(struct user_regs_struct, r9);
|
||||
case offsetof(Ureg64, r10):
|
||||
case offsetof(UregAmd64, r10):
|
||||
return offsetof(struct user_regs_struct, r10);
|
||||
case offsetof(Ureg64, r11):
|
||||
case offsetof(UregAmd64, r11):
|
||||
return offsetof(struct user_regs_struct, r11);
|
||||
case offsetof(Ureg64, r12):
|
||||
case offsetof(UregAmd64, r12):
|
||||
return offsetof(struct user_regs_struct, r12);
|
||||
case offsetof(Ureg64, r13):
|
||||
case offsetof(UregAmd64, r13):
|
||||
return offsetof(struct user_regs_struct, r13);
|
||||
case offsetof(Ureg64, r14):
|
||||
case offsetof(UregAmd64, r14):
|
||||
return offsetof(struct user_regs_struct, r14);
|
||||
case offsetof(Ureg64, r15):
|
||||
case offsetof(UregAmd64, r15):
|
||||
return offsetof(struct user_regs_struct, r15);
|
||||
case offsetof(Ureg64, ds):
|
||||
case offsetof(UregAmd64, ds):
|
||||
return offsetof(struct user_regs_struct, ds);
|
||||
case offsetof(Ureg64, es):
|
||||
case offsetof(UregAmd64, es):
|
||||
return offsetof(struct user_regs_struct, es);
|
||||
case offsetof(Ureg64, fs):
|
||||
case offsetof(UregAmd64, fs):
|
||||
return offsetof(struct user_regs_struct, fs);
|
||||
case offsetof(Ureg64, gs):
|
||||
case offsetof(UregAmd64, gs):
|
||||
return offsetof(struct user_regs_struct, gs);
|
||||
case offsetof(Ureg64, ip):
|
||||
case offsetof(UregAmd64, ip):
|
||||
return offsetof(struct user_regs_struct, rip);
|
||||
case offsetof(Ureg64, cs):
|
||||
case offsetof(UregAmd64, cs):
|
||||
return offsetof(struct user_regs_struct, cs);
|
||||
case offsetof(Ureg64, flags):
|
||||
case offsetof(UregAmd64, flags):
|
||||
return offsetof(struct user_regs_struct, eflags);
|
||||
case offsetof(Ureg64, sp):
|
||||
case offsetof(UregAmd64, sp):
|
||||
return offsetof(struct user_regs_struct, rsp);
|
||||
case offsetof(Ureg64, ss):
|
||||
case offsetof(UregAmd64, ss):
|
||||
return offsetof(struct user_regs_struct, ss);
|
||||
}
|
||||
return -1;
|
||||
|
|
Loading…
Reference in a new issue