Cast to uintptr_t when calling ptrace32 on aix
When I verify my changes to target.h doesn't break build on aix, I get the following build error on a clean GDB checkout. ../../binutils-gdb/gdb/aix-thread.c: In function 'pdc_read_regs': ../../binutils-gdb/gdb/aix-thread.c:366:4: error: passing argument 3 of 'ptrace32' makes integer from pointer without a cast [-Werror] if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL)) ^ ../../binutils-gdb/gdb/aix-thread.c:263:1: note: expected 'long long int' but argument is of type 'uint32_t *' ptrace32 (int req, int id, addr_ptr addr, int data, int *buf) ^ ../../binutils-gdb/gdb/aix-thread.c:375:42: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] if (!ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL)) ^ ../../binutils-gdb/gdb/aix-thread.c:392:39: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] if (!ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL)) GCC uses -maix32 in default, so the 'long long' is 64 bit and address is 32 bit. Such warnings should go away if -maix64 is used. In this patch, I cast the parameter to uintptr_t first, and then cast to addr_ptr. gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> Joel Brobecker <brobecker@adacore.com> * aix-thread.c (pdc_read_regs): Cast parameter to uintptr_t. (pdc_write_regs): Likewise. (fetch_regs_kernel_thread): Likewise. (store_regs_kernel_thread): Likewise.
This commit is contained in:
parent
f30b8b38d4
commit
3b631e3720
|
@ -363,7 +363,7 @@ pdc_read_regs (pthdb_user_t user,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL))
|
if (!ptrace32 (PTT_READ_GPRS, tid, (uintptr_t) gprs32, 0, NULL))
|
||||||
memset (gprs32, 0, sizeof (gprs32));
|
memset (gprs32, 0, sizeof (gprs32));
|
||||||
memcpy (context->gpr, gprs32, sizeof(gprs32));
|
memcpy (context->gpr, gprs32, sizeof(gprs32));
|
||||||
}
|
}
|
||||||
|
@ -372,7 +372,7 @@ pdc_read_regs (pthdb_user_t user,
|
||||||
/* Floating-point registers. */
|
/* Floating-point registers. */
|
||||||
if (flags & PTHDB_FLAG_FPRS)
|
if (flags & PTHDB_FLAG_FPRS)
|
||||||
{
|
{
|
||||||
if (!ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL))
|
if (!ptrace32 (PTT_READ_FPRS, tid, (uintptr_t) fprs, 0, NULL))
|
||||||
memset (fprs, 0, sizeof (fprs));
|
memset (fprs, 0, sizeof (fprs));
|
||||||
memcpy (context->fpr, fprs, sizeof(fprs));
|
memcpy (context->fpr, fprs, sizeof(fprs));
|
||||||
}
|
}
|
||||||
|
@ -389,7 +389,7 @@ pdc_read_regs (pthdb_user_t user,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL))
|
if (!ptrace32 (PTT_READ_SPRS, tid, (uintptr_t) &sprs32, 0, NULL))
|
||||||
memset (&sprs32, 0, sizeof (sprs32));
|
memset (&sprs32, 0, sizeof (sprs32));
|
||||||
memcpy (&context->msr, &sprs32, sizeof(sprs32));
|
memcpy (&context->msr, &sprs32, sizeof(sprs32));
|
||||||
}
|
}
|
||||||
|
@ -424,13 +424,13 @@ pdc_write_regs (pthdb_user_t user,
|
||||||
ptrace64aix (PTT_WRITE_GPRS, tid,
|
ptrace64aix (PTT_WRITE_GPRS, tid,
|
||||||
(unsigned long) context->gpr, 0, NULL);
|
(unsigned long) context->gpr, 0, NULL);
|
||||||
else
|
else
|
||||||
ptrace32 (PTT_WRITE_GPRS, tid, (addr_ptr) context->gpr, 0, NULL);
|
ptrace32 (PTT_WRITE_GPRS, tid, (uintptr_t) context->gpr, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Floating-point registers. */
|
/* Floating-point registers. */
|
||||||
if (flags & PTHDB_FLAG_FPRS)
|
if (flags & PTHDB_FLAG_FPRS)
|
||||||
{
|
{
|
||||||
ptrace32 (PTT_WRITE_FPRS, tid, (addr_ptr) context->fpr, 0, NULL);
|
ptrace32 (PTT_WRITE_FPRS, tid, (uintptr_t) context->fpr, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Special-purpose registers. */
|
/* Special-purpose registers. */
|
||||||
|
@ -443,7 +443,7 @@ pdc_write_regs (pthdb_user_t user,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ptrace32 (PTT_WRITE_SPRS, tid, (addr_ptr) &context->msr, 0, NULL);
|
ptrace32 (PTT_WRITE_SPRS, tid, (uintptr_t) &context->msr, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1250,7 +1250,7 @@ fetch_regs_kernel_thread (struct regcache *regcache, int regno,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ptrace32 (PTT_READ_GPRS, tid, (addr_ptr) gprs32, 0, NULL))
|
if (!ptrace32 (PTT_READ_GPRS, tid, (uintptr_t) gprs32, 0, NULL))
|
||||||
memset (gprs32, 0, sizeof (gprs32));
|
memset (gprs32, 0, sizeof (gprs32));
|
||||||
for (i = 0; i < ppc_num_gprs; i++)
|
for (i = 0; i < ppc_num_gprs; i++)
|
||||||
supply_reg32 (regcache, tdep->ppc_gp0_regnum + i, gprs32[i]);
|
supply_reg32 (regcache, tdep->ppc_gp0_regnum + i, gprs32[i]);
|
||||||
|
@ -1264,7 +1264,7 @@ fetch_regs_kernel_thread (struct regcache *regcache, int regno,
|
||||||
|| (regno >= tdep->ppc_fp0_regnum
|
|| (regno >= tdep->ppc_fp0_regnum
|
||||||
&& regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
|
&& regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
|
||||||
{
|
{
|
||||||
if (!ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL))
|
if (!ptrace32 (PTT_READ_FPRS, tid, (uintptr_t) fprs, 0, NULL))
|
||||||
memset (fprs, 0, sizeof (fprs));
|
memset (fprs, 0, sizeof (fprs));
|
||||||
supply_fprs (regcache, fprs);
|
supply_fprs (regcache, fprs);
|
||||||
}
|
}
|
||||||
|
@ -1286,7 +1286,7 @@ fetch_regs_kernel_thread (struct regcache *regcache, int regno,
|
||||||
{
|
{
|
||||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||||
|
|
||||||
if (!ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL))
|
if (!ptrace32 (PTT_READ_SPRS, tid, (uintptr_t) &sprs32, 0, NULL))
|
||||||
memset (&sprs32, 0, sizeof (sprs32));
|
memset (&sprs32, 0, sizeof (sprs32));
|
||||||
supply_sprs32 (regcache, sprs32.pt_iar, sprs32.pt_msr, sprs32.pt_cr,
|
supply_sprs32 (regcache, sprs32.pt_iar, sprs32.pt_msr, sprs32.pt_cr,
|
||||||
sprs32.pt_lr, sprs32.pt_ctr, sprs32.pt_xer,
|
sprs32.pt_lr, sprs32.pt_ctr, sprs32.pt_xer,
|
||||||
|
@ -1581,9 +1581,9 @@ store_regs_kernel_thread (const struct regcache *regcache, int regno,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Pre-fetch: some regs may not be in the cache. */
|
/* Pre-fetch: some regs may not be in the cache. */
|
||||||
ptrace32 (PTT_READ_GPRS, tid, (addr_ptr) gprs32, 0, NULL);
|
ptrace32 (PTT_READ_GPRS, tid, (uintptr_t) gprs32, 0, NULL);
|
||||||
fill_gprs32 (regcache, gprs32);
|
fill_gprs32 (regcache, gprs32);
|
||||||
ptrace32 (PTT_WRITE_GPRS, tid, (addr_ptr) gprs32, 0, NULL);
|
ptrace32 (PTT_WRITE_GPRS, tid, (uintptr_t) gprs32, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1595,9 +1595,9 @@ store_regs_kernel_thread (const struct regcache *regcache, int regno,
|
||||||
&& regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
|
&& regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
|
||||||
{
|
{
|
||||||
/* Pre-fetch: some regs may not be in the cache. */
|
/* Pre-fetch: some regs may not be in the cache. */
|
||||||
ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL);
|
ptrace32 (PTT_READ_FPRS, tid, (uintptr_t) fprs, 0, NULL);
|
||||||
fill_fprs (regcache, fprs);
|
fill_fprs (regcache, fprs);
|
||||||
ptrace32 (PTT_WRITE_FPRS, tid, (addr_ptr) fprs, 0, NULL);
|
ptrace32 (PTT_WRITE_FPRS, tid, (uintptr_t) fprs, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Special-purpose registers. */
|
/* Special-purpose registers. */
|
||||||
|
@ -1629,7 +1629,7 @@ store_regs_kernel_thread (const struct regcache *regcache, int regno,
|
||||||
gdb_assert (sizeof (sprs32.pt_iar) == 4);
|
gdb_assert (sizeof (sprs32.pt_iar) == 4);
|
||||||
|
|
||||||
/* Pre-fetch: some registers won't be in the cache. */
|
/* Pre-fetch: some registers won't be in the cache. */
|
||||||
ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL);
|
ptrace32 (PTT_READ_SPRS, tid, (uintptr_t) &sprs32, 0, NULL);
|
||||||
|
|
||||||
fill_sprs32 (regcache, &tmp_iar, &tmp_msr, &tmp_cr, &tmp_lr,
|
fill_sprs32 (regcache, &tmp_iar, &tmp_msr, &tmp_cr, &tmp_lr,
|
||||||
&tmp_ctr, &tmp_xer, &tmp_fpscr);
|
&tmp_ctr, &tmp_xer, &tmp_fpscr);
|
||||||
|
@ -1648,7 +1648,7 @@ store_regs_kernel_thread (const struct regcache *regcache, int regno,
|
||||||
regcache_raw_collect (regcache, tdep->ppc_mq_regnum,
|
regcache_raw_collect (regcache, tdep->ppc_mq_regnum,
|
||||||
&sprs32.pt_mq);
|
&sprs32.pt_mq);
|
||||||
|
|
||||||
ptrace32 (PTT_WRITE_SPRS, tid, (addr_ptr) &sprs32, 0, NULL);
|
ptrace32 (PTT_WRITE_SPRS, tid, (uintptr_t) &sprs32, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue