diff options
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/solib-irix.c | 8 | ||||
-rw-r--r-- | gdb/solib-sunos.c | 22 | ||||
-rw-r--r-- | gdb/solib-svr4.c | 48 |
4 files changed, 56 insertions, 33 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 477ccc9..5d97f89 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2003-06-01 Andrew Cagney <cagney@redhat.com> + + * solib-irix.c (extract_mips_address): Inline extract_address, + replacing it with extract_signed_integer. + * solib-svr4.c (SOLIB_EXTRACT_ADDRESS): Ditto. + (LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY): Ditto. + (first_link_map_member, open_symbol_file_object): Ditto. + (svr4_fetch_objfile_link_map, svr4_fetch_objfile_link_map): Ditto. + * solib-sunos.c (SOLIB_EXTRACT_ADDRESS): Ditto. + (LM_NEXT, LM_NAME): Ditto. + 2003-06-01 Richard Henderson <rth@redhat.com> * alpha-tdep.h (ALPHA_FP_REGNUM): Remove. diff --git a/gdb/solib-irix.c b/gdb/solib-irix.c index 26a776f..8400ad3 100644 --- a/gdb/solib-irix.c +++ b/gdb/solib-irix.c @@ -123,16 +123,12 @@ union irix_obj_info /* MIPS sign extends its 32 bit addresses. We could conceivably use extract_typed_address here, but to do so, we'd have to construct an - appropriate type. Calling extract_signed_integer or - extract_address seems simpler. */ + appropriate type. Calling extract_signed_integer seems simpler. */ static CORE_ADDR extract_mips_address (void *addr, int len) { - if (len <= 32) - return extract_signed_integer (addr, len); - else - return extract_address (addr, len); + return extract_signed_integer (addr, len); } /* Fetch and return the link map data associated with ADDR. Note that diff --git a/gdb/solib-sunos.c b/gdb/solib-sunos.c index 4072fab..b7444c6 100644 --- a/gdb/solib-sunos.c +++ b/gdb/solib-sunos.c @@ -68,14 +68,16 @@ static char *main_name_list[] = NULL }; -/* Macro to extract an address from a solib structure. - When GDB is configured for some 32-bit targets (e.g. Solaris 2.7 - sparc), BFD is configured to handle 64-bit targets, so CORE_ADDR is - 64 bits. We have to extract only the significant bits of addresses - to get the right address when accessing the core file BFD. */ +/* Macro to extract an address from a solib structure. When GDB is + configured for some 32-bit targets (e.g. Solaris 2.7 sparc), BFD is + configured to handle 64-bit targets, so CORE_ADDR is 64 bits. We + have to extract only the significant bits of addresses to get the + right address when accessing the core file BFD. + + Assume that the address is unsigned. */ #define SOLIB_EXTRACT_ADDRESS(MEMBER) \ - extract_address (&(MEMBER), sizeof (MEMBER)) + extract_unsigned_integer (&(MEMBER), sizeof (MEMBER)) /* local data declarations */ @@ -108,7 +110,9 @@ LM_NEXT (struct so_list *so) int lm_next_offset = offsetof (struct link_map, lm_next); int lm_next_size = fieldsize (struct link_map, lm_next); - return extract_address (so->lm_info->lm + lm_next_offset, lm_next_size); + /* Assume that the address is unsigned. */ + return extract_unsigned_integer (so->lm_info->lm + lm_next_offset, + lm_next_size); } static CORE_ADDR @@ -117,7 +121,9 @@ LM_NAME (struct so_list *so) int lm_name_offset = offsetof (struct link_map, lm_name); int lm_name_size = fieldsize (struct link_map, lm_name); - return extract_address (so->lm_info->lm + lm_name_offset, lm_name_size); + /* Assume that the address is unsigned. */ + return extract_unsigned_integer (so->lm_info->lm + lm_name_offset, + lm_name_size); } static CORE_ADDR debug_base; /* Base of dynamic linker structures */ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 6c4c10a..3658be6 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -105,14 +105,16 @@ static char *main_name_list[] = NULL }; -/* Macro to extract an address from a solib structure. - When GDB is configured for some 32-bit targets (e.g. Solaris 2.7 - sparc), BFD is configured to handle 64-bit targets, so CORE_ADDR is - 64 bits. We have to extract only the significant bits of addresses - to get the right address when accessing the core file BFD. */ +/* Macro to extract an address from a solib structure. When GDB is + configured for some 32-bit targets (e.g. Solaris 2.7 sparc), BFD is + configured to handle 64-bit targets, so CORE_ADDR is 64 bits. We + have to extract only the significant bits of addresses to get the + right address when accessing the core file BFD. + + Assume that the address is unsigned. */ #define SOLIB_EXTRACT_ADDRESS(MEMBER) \ - extract_address (&(MEMBER), sizeof (MEMBER)) + extract_unsigned_integer (&(MEMBER), sizeof (MEMBER)) /* local data declarations */ @@ -132,7 +134,9 @@ LM_NEXT (struct so_list *so) { struct link_map_offsets *lmo = SVR4_FETCH_LINK_MAP_OFFSETS (); - return extract_address (so->lm_info->lm + lmo->l_next_offset, lmo->l_next_size); + /* Assume that the address is unsigned. */ + return extract_unsigned_integer (so->lm_info->lm + lmo->l_next_offset, + lmo->l_next_size); } static CORE_ADDR @@ -140,7 +144,9 @@ LM_NAME (struct so_list *so) { struct link_map_offsets *lmo = SVR4_FETCH_LINK_MAP_OFFSETS (); - return extract_address (so->lm_info->lm + lmo->l_name_offset, lmo->l_name_size); + /* Assume that the address is unsigned. */ + return extract_unsigned_integer (so->lm_info->lm + lmo->l_name_offset, + lmo->l_name_size); } static int @@ -148,8 +154,9 @@ IGNORE_FIRST_LINK_MAP_ENTRY (struct so_list *so) { struct link_map_offsets *lmo = SVR4_FETCH_LINK_MAP_OFFSETS (); - return extract_address (so->lm_info->lm + lmo->l_prev_offset, - lmo->l_prev_size) == 0; + /* Assume that the address is unsigned. */ + return extract_unsigned_integer (so->lm_info->lm + lmo->l_prev_offset, + lmo->l_prev_size) == 0; } static CORE_ADDR debug_base; /* Base of dynamic linker structures */ @@ -587,7 +594,8 @@ first_link_map_member (void) read_memory (debug_base + lmo->r_map_offset, r_map_buf, lmo->r_map_size); - lm = extract_address (r_map_buf, lmo->r_map_size); + /* Assume that the address is unsigned. */ + lm = extract_unsigned_integer (r_map_buf, lmo->r_map_size); /* FIXME: Perhaps we should validate the info somehow, perhaps by checking r_version for a known version number, or r_state for @@ -645,8 +653,9 @@ open_symbol_file_object (void *from_ttyp) /* Read address of name from target memory to GDB. */ read_memory (lm + lmo->l_name_offset, l_name_buf, lmo->l_name_size); - /* Convert the address to host format. */ - l_name = extract_address (l_name_buf, lmo->l_name_size); + /* Convert the address to host format. Assume that the address is + unsigned. */ + l_name = extract_unsigned_integer (l_name_buf, lmo->l_name_size); /* Free l_name_buf. */ do_cleanups (cleanups); @@ -820,9 +829,9 @@ svr4_fetch_objfile_link_map (struct objfile *objfile) /* Read address of name from target memory to GDB. */ read_memory (lm + lmo->l_name_offset, l_name_buf, lmo->l_name_size); - /* Extract this object's name. */ - name_address = extract_address (l_name_buf, - lmo->l_name_size); + /* Extract this object's name. Assume that the address is + unsigned. */ + name_address = extract_unsigned_integer (l_name_buf, lmo->l_name_size); target_read_string (name_address, &buffer, SO_NAME_MAX_PATH_SIZE - 1, &errcode); make_cleanup (xfree, buffer); @@ -843,9 +852,10 @@ svr4_fetch_objfile_link_map (struct objfile *objfile) return lm; } } - /* Not the file we wanted, continue checking. */ - lm = extract_address (objfile_lm_info.lm + lmo->l_next_offset, - lmo->l_next_size); + /* Not the file we wanted, continue checking. Assume that the + address is unsigned. */ + lm = extract_unsigned_integer (objfile_lm_info.lm + lmo->l_next_offset, + lmo->l_next_size); do_cleanups (old_chain); } return 0; |