X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Fsolib-sunos.c;h=b7444c64cc21b690326df367ff12b93893d6e103;hb=7b79a9d72efb9162bcf920cf546aa0cc58d9cd43;hp=0f81d05efa45747b53916d97b450046d039f92f7;hpb=13fc0c2f38ad82e07263ae624593a22deffaf157;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/solib-sunos.c b/gdb/solib-sunos.c index 0f81d05efa..b7444c64cc 100644 --- a/gdb/solib-sunos.c +++ b/gdb/solib-sunos.c @@ -39,6 +39,8 @@ #include "gdbcore.h" #include "inferior.h" #include "solist.h" +#include "bcache.h" +#include "regcache.h" /* Link map info to include in an allocated so_list entry */ @@ -66,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 */ @@ -106,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 @@ -115,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 */ @@ -135,8 +143,8 @@ allocate_rt_common_objfile (void) objfile = (struct objfile *) xmalloc (sizeof (struct objfile)); memset (objfile, 0, sizeof (struct objfile)); objfile->md = NULL; - obstack_specify_allocation (&objfile->psymbol_cache.cache, 0, 0, - xmalloc, xfree); + objfile->psymbol_cache = bcache_xmalloc (); + objfile->macro_cache = bcache_xmalloc (); obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0, xmalloc, xfree); obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc, @@ -182,6 +190,7 @@ solib_add_common_symbols (CORE_ADDR rtc_symp) xmalloc, xfree); rt_common_objfile->minimal_symbol_count = 0; rt_common_objfile->msymbols = NULL; + terminate_minimal_symbol_table (rt_common_objfile); } init_minimal_symbol_collection (); @@ -826,7 +835,7 @@ sunos_solib_create_inferior_hook (void) out what we need to know about them. */ clear_proceed_status (); - stop_soon_quietly = 1; + stop_soon = STOP_QUIETLY; stop_signal = TARGET_SIGNAL_0; do { @@ -834,7 +843,7 @@ sunos_solib_create_inferior_hook (void) wait_for_inferior (); } while (stop_signal != TARGET_SIGNAL_TRAP); - stop_soon_quietly = 0; + stop_soon = NO_STOP_QUIETLY; /* We are now either at the "mapping complete" breakpoint (or somewhere else, a condition we aren't prepared to deal with anyway), so adjust