From b6da22b0d121a4fd1e15572ed672e0e3f7b756f3 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Thu, 11 Sep 2008 14:31:00 +0000 Subject: [PATCH] * solib-svr4.c (LM_ADDR_FROM_LINK_MAP): Use builtin types of target_gdbarch instead of builtin_type_void_data_ptr. (LM_DYNAMIC_FROM_LINK_MAP, LM_NEXT, LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY, scan_dyntag, elf_locate_base, solib_svr4_r_map, solib_svr4_r_brk, solib_svr4_r_ldsomap, open_symbol_file_object): Likewise. * nto-tdep.c (LM_ADDR): Likewise. --- gdb/ChangeLog | 10 ++++++++++ gdb/nto-tdep.c | 4 ++-- gdb/solib-svr4.c | 41 +++++++++++++++++++++++++---------------- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2261960603..a02e83590a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2008-09-11 Ulrich Weigand + + * solib-svr4.c (LM_ADDR_FROM_LINK_MAP): Use builtin types of + target_gdbarch instead of builtin_type_void_data_ptr. + (LM_DYNAMIC_FROM_LINK_MAP, LM_NEXT, LM_NAME, + IGNORE_FIRST_LINK_MAP_ENTRY, scan_dyntag, elf_locate_base, + solib_svr4_r_map, solib_svr4_r_brk, solib_svr4_r_ldsomap, + open_symbol_file_object): Likewise. + * nto-tdep.c (LM_ADDR): Likewise. + 2008-09-11 Ulrich Weigand * bsd-uthread.c (bsd_uthread_read_memory_address): New function. diff --git a/gdb/nto-tdep.c b/gdb/nto-tdep.c index 38fb03d35d..f519a6ec67 100644 --- a/gdb/nto-tdep.c +++ b/gdb/nto-tdep.c @@ -280,10 +280,10 @@ LM_ADDR (struct so_list *so) if (so->lm_info->l_addr == (CORE_ADDR)-1) { struct link_map_offsets *lmo = nto_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; so->lm_info->l_addr = - extract_typed_address (so->lm_info->lm + lmo->l_addr_offset, - builtin_type_void_data_ptr); + extract_typed_address (so->lm_info->lm + lmo->l_addr_offset, ptr_type); } return so->lm_info->l_addr; } diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 032ae1953b..3ba22acf91 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -141,9 +141,10 @@ static CORE_ADDR LM_ADDR_FROM_LINK_MAP (struct so_list *so) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; return extract_typed_address (so->lm_info->lm + lmo->l_addr_offset, - builtin_type_void_data_ptr); + ptr_type); } static int @@ -158,9 +159,10 @@ static CORE_ADDR LM_DYNAMIC_FROM_LINK_MAP (struct so_list *so) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; return extract_typed_address (so->lm_info->lm + lmo->l_ld_offset, - builtin_type_void_data_ptr); + ptr_type); } static CORE_ADDR @@ -237,24 +239,27 @@ static CORE_ADDR LM_NEXT (struct so_list *so) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; return extract_typed_address (so->lm_info->lm + lmo->l_next_offset, - builtin_type_void_data_ptr); + ptr_type); } static CORE_ADDR LM_NAME (struct so_list *so) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; return extract_typed_address (so->lm_info->lm + lmo->l_name_offset, - builtin_type_void_data_ptr); + ptr_type); } static int IGNORE_FIRST_LINK_MAP_ENTRY (struct so_list *so) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; /* Assume that everything is a library if the dynamic loader was loaded late by a static executable. */ @@ -262,7 +267,7 @@ IGNORE_FIRST_LINK_MAP_ENTRY (struct so_list *so) return 0; return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset, - builtin_type_void_data_ptr) == 0; + ptr_type) == 0; } static CORE_ADDR debug_base; /* Base of dynamic linker structures */ @@ -567,13 +572,14 @@ scan_dyntag (int dyntag, bfd *abfd, CORE_ADDR *ptr) entry. */ if (ptr) { + struct type *ptr_type; gdb_byte ptr_buf[8]; CORE_ADDR ptr_addr; + ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; ptr_addr = dyn_addr + (buf - bufstart) + arch_size / 8; if (target_read_memory (ptr_addr, ptr_buf, arch_size / 8) == 0) - dyn_ptr = extract_typed_address (ptr_buf, - builtin_type_void_data_ptr); + dyn_ptr = extract_typed_address (ptr_buf, ptr_type); *ptr = dyn_ptr; } return 1; @@ -673,14 +679,15 @@ elf_locate_base (void) if (scan_dyntag (DT_MIPS_RLD_MAP, exec_bfd, &dyn_ptr) || scan_dyntag_auxv (DT_MIPS_RLD_MAP, &dyn_ptr)) { + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; gdb_byte *pbuf; - int pbuf_size = TYPE_LENGTH (builtin_type_void_data_ptr); + int pbuf_size = TYPE_LENGTH (ptr_type); pbuf = alloca (pbuf_size); /* DT_MIPS_RLD_MAP contains a pointer to the address of the dynamic link structure. */ if (target_read_memory (dyn_ptr, pbuf, pbuf_size)) return 0; - return extract_typed_address (pbuf, builtin_type_void_data_ptr); + return extract_typed_address (pbuf, ptr_type); } /* Find DT_DEBUG. */ @@ -764,9 +771,9 @@ static CORE_ADDR solib_svr4_r_map (void) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; - return read_memory_typed_address (debug_base + lmo->r_map_offset, - builtin_type_void_data_ptr); + return read_memory_typed_address (debug_base + lmo->r_map_offset, ptr_type); } /* Find r_brk from the inferior's debug base. */ @@ -775,9 +782,9 @@ static CORE_ADDR solib_svr4_r_brk (void) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; - return read_memory_typed_address (debug_base + lmo->r_brk_offset, - builtin_type_void_data_ptr); + return read_memory_typed_address (debug_base + lmo->r_brk_offset, ptr_type); } /* Find the link map for the dynamic linker (if it is not in the @@ -787,6 +794,7 @@ static CORE_ADDR solib_svr4_r_ldsomap (void) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; ULONGEST version; /* Check version, and return zero if `struct r_debug' doesn't have @@ -797,7 +805,7 @@ solib_svr4_r_ldsomap (void) return 0; return read_memory_typed_address (debug_base + lmo->r_ldsomap_offset, - builtin_type_void_data_ptr); + ptr_type); } /* @@ -830,7 +838,8 @@ open_symbol_file_object (void *from_ttyp) int errcode; int from_tty = *(int *)from_ttyp; struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); - int l_name_size = TYPE_LENGTH (builtin_type_void_data_ptr); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; + int l_name_size = TYPE_LENGTH (ptr_type); gdb_byte *l_name_buf = xmalloc (l_name_size); struct cleanup *cleanups = make_cleanup (xfree, l_name_buf); @@ -852,7 +861,7 @@ open_symbol_file_object (void *from_ttyp) read_memory (lm + lmo->l_name_offset, l_name_buf, l_name_size); /* Convert the address to host format. */ - l_name = extract_typed_address (l_name_buf, builtin_type_void_data_ptr); + l_name = extract_typed_address (l_name_buf, ptr_type); /* Free l_name_buf. */ do_cleanups (cleanups);