Skip to content
Snippets Groups Projects
Commit 6a4e9934 authored by Ian Lance Taylor's avatar Ian Lance Taylor
Browse files

runtime: use correct field name for PPC32 GLIBC registers

One of these days we will get this right.

Fixes PR go/105315

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/401374
parent 29a25a60
No related branches found
No related tags found
No related merge requests found
99ca6be406a5781be078ff23f45a72b4c84b16e3
70ca85f08edf63f46c87d540fa99c45e2903edc2
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -233,7 +233,11 @@ getSiginfo(siginfo_t *info, void *context __attribute__((unused)))
#elif defined(__PPC64__) && defined(__linux__)
ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.gp_regs[32];
#elif defined(__PPC__) && defined(__linux__)
# if defined(__GLIBC__)
ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.uc_regs->gregs[32];
# else
ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.gregs[32];
# endif
#elif defined(__PPC__) && defined(_AIX)
ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.jmp_context.iar;
#elif defined(__aarch64__) && defined(__linux__)
......@@ -344,12 +348,13 @@ dumpregs(siginfo_t *info __attribute__((unused)), void *context __attribute__((u
runtime_printf("sp %X\n", m->sc_regs[30]);
runtime_printf("pc %X\n", m->sc_pc);
}
#elif defined(__PPC__) && defined(__LITTLE_ENDIAN__) && defined(__linux__)
#elif defined(__PPC__) && defined(__linux__)
{
mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
int i;
#if defined(__PPC64__)
# if defined(__PPC64__)
mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
for (i = 0; i < 32; i++)
runtime_printf("r%d %X\n", i, m->gp_regs[i]);
runtime_printf("pc %X\n", m->gp_regs[32]);
......@@ -358,16 +363,22 @@ dumpregs(siginfo_t *info __attribute__((unused)), void *context __attribute__((u
runtime_printf("lr %X\n", m->gp_regs[36]);
runtime_printf("ctr %X\n", m->gp_regs[35]);
runtime_printf("xer %X\n", m->gp_regs[37]);
#else
# else
# if defined(__GLIBC__)
mcontext_t *m = ((ucontext_t*)(context))->uc_mcontext.uc_regs;
# else
mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
# endif
for (i = 0; i < 32; i++)
runtime_printf("r%d %X\n", i, m->gregs[i]);
runtime_printf("pc %X\n", m->gregs[32]);
runtime_printf("msr %X\n", m->gregs[33]);
runtime_printf("cr %X\n", m->gregs[38]);
runtime_printf("lr %X\n", m->gregs[36]);
runtime_printf("ctr %X\n", m->gregs[35]);
runtime_printf("xer %X\n", m->gregs[37]);
#endif
runtime_printf("r%d %x\n", i, m->gregs[i]);
runtime_printf("pc %x\n", m->gregs[32]);
runtime_printf("msr %x\n", m->gregs[33]);
runtime_printf("cr %x\n", m->gregs[38]);
runtime_printf("lr %x\n", m->gregs[36]);
runtime_printf("ctr %x\n", m->gregs[35]);
runtime_printf("xer %x\n", m->gregs[37]);
# endif
}
#elif defined(__PPC__) && defined(_AIX)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment