mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-03 15:42:52 +00:00
2012-03-23 Pedro Alves <palves@redhat.com>
* linux-low.c (read_one_ptr): Read the inferior's pointer through a variable whose type size is the same as the inferior's pointer size.
This commit is contained in:
parent
f24fcb9dad
commit
485f1ee4f6
@ -1,3 +1,9 @@
|
||||
2012-03-23 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* linux-low.c (read_one_ptr): Read the inferior's pointer through
|
||||
a variable whose type size is the same as the inferior's pointer
|
||||
size.
|
||||
|
||||
2012-03-21 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* linux-arm-low.c (arm_stopped_by_watchpoint): Use siginfo_t instead of
|
||||
|
@ -5428,8 +5428,30 @@ get_r_debug (const int pid, const int is_elf64)
|
||||
static int
|
||||
read_one_ptr (CORE_ADDR memaddr, CORE_ADDR *ptr, int ptr_size)
|
||||
{
|
||||
*ptr = 0;
|
||||
return linux_read_memory (memaddr, (unsigned char *) ptr, ptr_size);
|
||||
int ret;
|
||||
|
||||
/* Go through a union so this works on either big or little endian
|
||||
hosts, when the inferior's pointer size is smaller than the size
|
||||
of CORE_ADDR. It is assumed the inferior's endianness is the
|
||||
same of the superior's. */
|
||||
union
|
||||
{
|
||||
CORE_ADDR core_addr;
|
||||
unsigned int ui;
|
||||
unsigned char uc;
|
||||
} addr;
|
||||
|
||||
ret = linux_read_memory (memaddr, &addr.uc, ptr_size);
|
||||
if (ret == 0)
|
||||
{
|
||||
if (ptr_size == sizeof (CORE_ADDR))
|
||||
*ptr = addr.core_addr;
|
||||
else if (ptr_size == sizeof (unsigned int))
|
||||
*ptr = addr.ui;
|
||||
else
|
||||
gdb_assert_not_reached ("unhandled pointer size");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct link_map_offsets
|
||||
|
Loading…
x
Reference in New Issue
Block a user