use bound_minsym as result for lookup_minimal_symbol et al
authorTom Tromey <tromey@redhat.com>
Tue, 15 Oct 2013 01:53:29 +0000 (19:53 -0600)
committerTom Tromey <tromey@redhat.com>
Wed, 26 Feb 2014 19:11:17 +0000 (12:11 -0700)
This patch changes a few minimal symbol lookup functions to return a
bound_minimal_symbol rather than a pointer to the minsym.  This change
helps prepare gdb for computing a minimal symbol's address at the
point of use.

Note that this changes even those functions that ostensibly search a
single objfile.  That was necessary because, in fact, those functions
can search an objfile and its separate debug objfiles; and it is
important for the caller to know in which objfile the minimal symbol
was actually found.

The bulk of this patch is mechanical.

2014-02-26  Tom Tromey  <tromey@redhat.com>

* ada-lang.c (ada_update_initial_language): Update.
(ada_main_name, ada_has_this_exception_support): Update.
* ada-tasks.c (ada_tasks_inferior_data_sniffer): Update.
* aix-thread.c (pdc_symbol_addrs, pd_enable): Update.
* arm-tdep.c (arm_skip_stub): Update.
* auxv.c (ld_so_xfer_auxv): Update.
* avr-tdep.c (avr_scan_prologue): Update.
* ax-gdb.c (gen_var_ref): Update.
* breakpoint.c (struct breakpoint_objfile_data)
<overlay_msym, longjmp_msym, terminate_msym, exception_msym>: Change
type to bound_minimal_symbol.
(create_overlay_event_breakpoint)
(create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint): Update.
* bsd-uthread.c (bsd_uthread_lookup_address): Update.
* c-exp.y (classify_name): Update.
* coffread.c (coff_symfile_read): Update.
* common/agent.c (agent_look_up_symbols): Update.
* d-lang.c (d_main_name): Update.
* dbxread.c (find_stab_function_addr, end_psymtab): Update.
* dec-thread.c (enable_dec_thread): Update.
* dwarf2loc.c (call_site_to_target_addr): Update.
* elfread.c (elf_gnu_ifunc_resolve_by_got): Update.
* eval.c (evaluate_subexp_standard): Update.
* findvar.c (struct minsym_lookup_data) <result>: Change type
to bound_minimal_symbol.
<objfile>: Remove.
(minsym_lookup_iterator_cb, default_read_var_value): Update.
* frame.c (inside_main_func): Update.
* frv-tdep.c (frv_frame_this_id): Update.
* gcore.c (call_target_sbrk): Update.
* glibc-tdep.c (glibc_skip_solib_resolver): Update.
* gnu-v3-abi.c (gnuv3_get_typeid, gnuv3_skip_trampoline):
Update.
* go-lang.c (go_main_name): Update.
* hppa-hpux-tdep.c (hppa_hpux_skip_trampoline_code)
(hppa_hpux_find_import_stub_for_addr): Update.
* hppa-tdep.c (hppa_extract_17, hppa_lookup_stub_minimal_symbol):
Update.  Change return type.
* hppa-tdep.h (hppa_lookup_stub_minimal_symbol): Change return
type.
* jit.c (jit_breakpoint_re_set_internal): Update.
* linux-fork.c (inferior_call_waitpid, checkpoint_command):
Update.
* linux-nat.c (get_signo): Update.
* linux-thread-db.c (inferior_has_bug): Update
* m32c-tdep.c (m32c_return_value)
(m32c_m16c_address_to_pointer): Update.
* m32r-tdep.c (m32r_frame_this_id): Update.
* m68hc11-tdep.c (m68hc11_get_register_info): Update.
* machoread.c (macho_resolve_oso_sym_with_minsym): Update.
* minsyms.c (lookup_minimal_symbol_internal): Rename to
lookup_minimal_symbol.  Change return type.
(lookup_minimal_symbol): Remove.
(lookup_bound_minimal_symbol): Update.
(lookup_minimal_symbol_text): Change return type.
(lookup_minimal_symbol_solib_trampoline): Change return type.
* minsyms.h (lookup_minimal_symbol, lookup_minimal_symbol_text)
(lookup_minimal_symbol_solib_trampoline): Change return type.
* mips-linux-tdep.c (mips_linux_skip_resolver): Update.
* objc-lang.c (lookup_objc_class, lookup_child_selector)
(value_nsstring, find_imps): Update.
* obsd-tdep.c (obsd_skip_solib_resolver): Update.
* p-lang.c (pascal_main_name): Update.
* ppc-linux-tdep.c (ppc_linux_spe_context_lookup): Update.
* ppc-sysv-tdep.c (convert_code_addr_to_desc_addr): Update.
* proc-service.c (ps_pglobal_lookup): Update.
* ravenscar-thread.c (get_running_thread_msymbol): Change
return type.
(has_ravenscar_runtime, get_running_thread_id): Update.
* remote.c (remote_check_symbols): Update.
* sol-thread.c (ps_pglobal_lookup): Update.
* sol2-tdep.c (sol2_skip_solib_resolver): Update.
* solib-dsbt.c (lm_base): Update.
* solib-frv.c (lm_base, frv_relocate_section_addresses):
Update.
* solib-irix.c (locate_base): Update.
* solib-som.c (som_solib_create_inferior_hook)
(som_solib_desire_dynamic_linker_symbols, link_map_start):
Update.
* solib-spu.c (spu_enable_break): Update.
* solib-svr4.c (elf_locate_base, enable_break): Update.
* spu-tdep.c (spu_get_overlay_table, spu_catch_start)
(flush_ea_cache): Update.
* stabsread.c (define_symbol): Update.
* symfile.c (simple_read_overlay_table): Update.
* symtab.c (find_pc_sect_line): Update.
* tracepoint.c (scope_info): Update.
* tui-disasm.c (tui_get_begin_asm_address): Update.
* value.c (value_static_field): Update.

63 files changed:
gdb/ChangeLog
gdb/ada-lang.c
gdb/ada-tasks.c
gdb/aix-thread.c
gdb/arm-tdep.c
gdb/auxv.c
gdb/avr-tdep.c
gdb/ax-gdb.c
gdb/breakpoint.c
gdb/bsd-uthread.c
gdb/c-exp.y
gdb/coffread.c
gdb/common/agent.c
gdb/d-lang.c
gdb/dbxread.c
gdb/dec-thread.c
gdb/dwarf2loc.c
gdb/elfread.c
gdb/eval.c
gdb/findvar.c
gdb/frame.c
gdb/frv-tdep.c
gdb/gcore.c
gdb/glibc-tdep.c
gdb/gnu-v3-abi.c
gdb/go-lang.c
gdb/hppa-hpux-tdep.c
gdb/hppa-tdep.c
gdb/hppa-tdep.h
gdb/jit.c
gdb/linux-fork.c
gdb/linux-nat.c
gdb/linux-thread-db.c
gdb/m32c-tdep.c
gdb/m32r-tdep.c
gdb/m68hc11-tdep.c
gdb/machoread.c
gdb/minsyms.c
gdb/minsyms.h
gdb/mips-linux-tdep.c
gdb/objc-lang.c
gdb/obsd-tdep.c
gdb/p-lang.c
gdb/ppc-linux-tdep.c
gdb/ppc-sysv-tdep.c
gdb/proc-service.c
gdb/ravenscar-thread.c
gdb/remote.c
gdb/sol-thread.c
gdb/sol2-tdep.c
gdb/solib-dsbt.c
gdb/solib-frv.c
gdb/solib-irix.c
gdb/solib-som.c
gdb/solib-spu.c
gdb/solib-svr4.c
gdb/spu-tdep.c
gdb/stabsread.c
gdb/symfile.c
gdb/symtab.c
gdb/tracepoint.c
gdb/tui/tui-disasm.c
gdb/value.c

index 0f44e5c2b7fe3fa6e56dfbab9adc10dd3c130ccd..40b819b20b2c081fc929eb1fc4d67fb72894e1fe 100644 (file)
@@ -1,3 +1,97 @@
+2014-02-26  Tom Tromey  <tromey@redhat.com>
+
+       * ada-lang.c (ada_update_initial_language): Update.
+       (ada_main_name, ada_has_this_exception_support): Update.
+       * ada-tasks.c (ada_tasks_inferior_data_sniffer): Update.
+       * aix-thread.c (pdc_symbol_addrs, pd_enable): Update.
+       * arm-tdep.c (arm_skip_stub): Update.
+       * auxv.c (ld_so_xfer_auxv): Update.
+       * avr-tdep.c (avr_scan_prologue): Update.
+       * ax-gdb.c (gen_var_ref): Update.
+       * breakpoint.c (struct breakpoint_objfile_data)
+       <overlay_msym, longjmp_msym, terminate_msym, exception_msym>: Change
+       type to bound_minimal_symbol.
+       (create_overlay_event_breakpoint)
+       (create_longjmp_master_breakpoint)
+       (create_std_terminate_master_breakpoint)
+       (create_exception_master_breakpoint): Update.
+       * bsd-uthread.c (bsd_uthread_lookup_address): Update.
+       * c-exp.y (classify_name): Update.
+       * coffread.c (coff_symfile_read): Update.
+       * common/agent.c (agent_look_up_symbols): Update.
+       * d-lang.c (d_main_name): Update.
+       * dbxread.c (find_stab_function_addr, end_psymtab): Update.
+       * dec-thread.c (enable_dec_thread): Update.
+       * dwarf2loc.c (call_site_to_target_addr): Update.
+       * elfread.c (elf_gnu_ifunc_resolve_by_got): Update.
+       * eval.c (evaluate_subexp_standard): Update.
+       * findvar.c (struct minsym_lookup_data) <result>: Change type
+       to bound_minimal_symbol.
+       <objfile>: Remove.
+       (minsym_lookup_iterator_cb, default_read_var_value): Update.
+       * frame.c (inside_main_func): Update.
+       * frv-tdep.c (frv_frame_this_id): Update.
+       * gcore.c (call_target_sbrk): Update.
+       * glibc-tdep.c (glibc_skip_solib_resolver): Update.
+       * gnu-v3-abi.c (gnuv3_get_typeid, gnuv3_skip_trampoline):
+       Update.
+       * go-lang.c (go_main_name): Update.
+       * hppa-hpux-tdep.c (hppa_hpux_skip_trampoline_code)
+       (hppa_hpux_find_import_stub_for_addr): Update.
+       * hppa-tdep.c (hppa_extract_17, hppa_lookup_stub_minimal_symbol):
+       Update.  Change return type.
+       * hppa-tdep.h (hppa_lookup_stub_minimal_symbol): Change return
+       type.
+       * jit.c (jit_breakpoint_re_set_internal): Update.
+       * linux-fork.c (inferior_call_waitpid, checkpoint_command):
+       Update.
+       * linux-nat.c (get_signo): Update.
+       * linux-thread-db.c (inferior_has_bug): Update
+       * m32c-tdep.c (m32c_return_value)
+       (m32c_m16c_address_to_pointer): Update.
+       * m32r-tdep.c (m32r_frame_this_id): Update.
+       * m68hc11-tdep.c (m68hc11_get_register_info): Update.
+       * machoread.c (macho_resolve_oso_sym_with_minsym): Update.
+       * minsyms.c (lookup_minimal_symbol_internal): Rename to
+       lookup_minimal_symbol.  Change return type.
+       (lookup_minimal_symbol): Remove.
+       (lookup_bound_minimal_symbol): Update.
+       (lookup_minimal_symbol_text): Change return type.
+       (lookup_minimal_symbol_solib_trampoline): Change return type.
+       * minsyms.h (lookup_minimal_symbol, lookup_minimal_symbol_text)
+       (lookup_minimal_symbol_solib_trampoline): Change return type.
+       * mips-linux-tdep.c (mips_linux_skip_resolver): Update.
+       * objc-lang.c (lookup_objc_class, lookup_child_selector)
+       (value_nsstring, find_imps): Update.
+       * obsd-tdep.c (obsd_skip_solib_resolver): Update.
+       * p-lang.c (pascal_main_name): Update.
+       * ppc-linux-tdep.c (ppc_linux_spe_context_lookup): Update.
+       * ppc-sysv-tdep.c (convert_code_addr_to_desc_addr): Update.
+       * proc-service.c (ps_pglobal_lookup): Update.
+       * ravenscar-thread.c (get_running_thread_msymbol): Change
+       return type.
+       (has_ravenscar_runtime, get_running_thread_id): Update.
+       * remote.c (remote_check_symbols): Update.
+       * sol-thread.c (ps_pglobal_lookup): Update.
+       * sol2-tdep.c (sol2_skip_solib_resolver): Update.
+       * solib-dsbt.c (lm_base): Update.
+       * solib-frv.c (lm_base, frv_relocate_section_addresses):
+       Update.
+       * solib-irix.c (locate_base): Update.
+       * solib-som.c (som_solib_create_inferior_hook)
+       (som_solib_desire_dynamic_linker_symbols, link_map_start):
+       Update.
+       * solib-spu.c (spu_enable_break): Update.
+       * solib-svr4.c (elf_locate_base, enable_break): Update.
+       * spu-tdep.c (spu_get_overlay_table, spu_catch_start)
+       (flush_ea_cache): Update.
+       * stabsread.c (define_symbol): Update.
+       * symfile.c (simple_read_overlay_table): Update.
+       * symtab.c (find_pc_sect_line): Update.
+       * tracepoint.c (scope_info): Update.
+       * tui-disasm.c (tui_get_begin_asm_address): Update.
+       * value.c (value_static_field): Update.
+
 2014-02-26  Tom Tromey  <tromey@redhat.com>
 
        * minsyms.c (prim_record_minimal_symbol_full): Use
index 3751869fe94de7b8d7d89446e43b7a7a6fae649d..baa5d8ce10fd7fec0ab4432cf857f3e3d27ae5dc 100644 (file)
@@ -894,7 +894,7 @@ enum language
 ada_update_initial_language (enum language lang)
 {
   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
-                             (struct objfile *) NULL) != NULL)
+                             (struct objfile *) NULL).minsym != NULL)
     return language_ada;
 
   return lang;
@@ -907,7 +907,7 @@ ada_update_initial_language (enum language lang)
 char *
 ada_main_name (void)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   static char *main_program_name = NULL;
 
   /* For Ada, the name of the main procedure is stored in a specific
@@ -917,12 +917,12 @@ ada_main_name (void)
      in Ada.  */
   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
 
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     {
       CORE_ADDR main_program_name_addr;
       int err_code;
 
-      main_program_name_addr = MSYMBOL_VALUE_ADDRESS (msym);
+      main_program_name_addr = MSYMBOL_VALUE_ADDRESS (msym.minsym);
       if (main_program_name_addr == 0)
         error (_("Invalid address for Ada main program name."));
 
@@ -11317,10 +11317,10 @@ ada_has_this_exception_support (const struct exception_support_info *einfo)
         the name of the exception being raised (this name is printed in
         the catchpoint message, and is also used when trying to catch
         a specific exception).  We do not handle this case for now.  */
-      struct minimal_symbol *msym
+      struct bound_minimal_symbol msym
        = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
 
-      if (msym && MSYMBOL_TYPE (msym) != mst_solib_trampoline)
+      if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
        error (_("Your Ada runtime appears to be missing some debugging "
                 "information.\nCannot insert Ada exception catchpoint "
                 "in this configuration."));
index fc562e70c9fd728a66625a795eed3d9bdb17980b..89bdac8d0f63d37a227b8e8b7c05542c6c1ca7f5 100644 (file)
@@ -846,7 +846,7 @@ read_known_tasks_list (struct ada_tasks_inferior_data *data)
 static void
 ada_tasks_inferior_data_sniffer (struct ada_tasks_inferior_data *data)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   struct symbol *sym;
 
   /* Return now if already set.  */
@@ -856,10 +856,10 @@ ada_tasks_inferior_data_sniffer (struct ada_tasks_inferior_data *data)
   /* Try array.  */
 
   msym = lookup_minimal_symbol (KNOWN_TASKS_NAME, NULL, NULL);
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     {
       data->known_tasks_kind = ADA_TASKS_ARRAY;
-      data->known_tasks_addr = MSYMBOL_VALUE_ADDRESS (msym);
+      data->known_tasks_addr = MSYMBOL_VALUE_ADDRESS (msym.minsym);
 
       /* Try to get pointer type and array length from the symtab.  */
       sym = lookup_symbol_in_language (KNOWN_TASKS_NAME, NULL, VAR_DOMAIN,
@@ -901,10 +901,10 @@ ada_tasks_inferior_data_sniffer (struct ada_tasks_inferior_data *data)
   /* Try list.  */
 
   msym = lookup_minimal_symbol (KNOWN_TASKS_LIST, NULL, NULL);
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     {
       data->known_tasks_kind = ADA_TASKS_LIST;
-      data->known_tasks_addr = MSYMBOL_VALUE_ADDRESS (msym);
+      data->known_tasks_addr = MSYMBOL_VALUE_ADDRESS (msym.minsym);
       data->known_tasks_length = 1;
 
       sym = lookup_symbol_in_language (KNOWN_TASKS_LIST, NULL, VAR_DOMAIN,
index d1194bc702008a09bc839d2d5f835e5d177d5db0..0202a2471eb19461c032872494b1f2e2f5e5ec83 100644 (file)
@@ -286,7 +286,7 @@ pid_to_prc (ptid_t *ptidp)
 static int
 pdc_symbol_addrs (pthdb_user_t user, pthdb_symbol_t *symbols, int count)
 {
-  struct minimal_symbol *ms;
+  struct bound_minimal_symbol ms;
   int i;
   char *name;
 
@@ -306,13 +306,14 @@ pdc_symbol_addrs (pthdb_user_t user, pthdb_symbol_t *symbols, int count)
        symbols[i].addr = 0;
       else
        {
-         if (!(ms = lookup_minimal_symbol (name, NULL, NULL)))
+         ms = lookup_minimal_symbol (name, NULL, NULL);
+         if (ms.minsym == NULL)
            {
              if (debug_aix_thread)
                fprintf_unfiltered (gdb_stdlog, " returning PDC_FAILURE\n");
              return PDC_FAILURE;
            }
-         symbols[i].addr = MSYMBOL_VALUE_ADDRESS (ms);
+         symbols[i].addr = MSYMBOL_VALUE_ADDRESS (ms.minsym);
        }
       if (debug_aix_thread)
        fprintf_unfiltered (gdb_stdlog, "  symbols[%d].addr = %s\n",
@@ -890,7 +891,7 @@ pd_enable (void)
 {
   int status;
   char *stub_name;
-  struct minimal_symbol *ms;
+  struct bound_minimal_symbol ms;
 
   /* Don't initialize twice.  */
   if (pd_able)
@@ -908,9 +909,10 @@ pd_enable (void)
     return;
 
   /* Set a breakpoint on the returned stub function.  */
-  if (!(ms = lookup_minimal_symbol (stub_name, NULL, NULL)))
+  ms = lookup_minimal_symbol (stub_name, NULL, NULL);
+  if (ms.minsym == NULL)
     return;
-  pd_brk_addr = MSYMBOL_VALUE_ADDRESS (ms);
+  pd_brk_addr = MSYMBOL_VALUE_ADDRESS (ms.minsym);
   if (!create_thread_event_breakpoint (target_gdbarch (), pd_brk_addr))
     return;
 
index 558388d53ed77a47530264867bc27de4c3da2f8a..4df28464be8f76bf9976f6dbaba067b2ffcb0a6e 100644 (file)
@@ -9263,7 +9263,7 @@ arm_skip_stub (struct frame_info *frame, CORE_ADDR pc)
     {
       char *target_name;
       int target_len = namelen - 2;
-      struct minimal_symbol *minsym;
+      struct bound_minimal_symbol minsym;
       struct objfile *objfile;
       struct obj_section *sec;
 
@@ -9279,8 +9279,8 @@ arm_skip_stub (struct frame_info *frame, CORE_ADDR pc)
       sec = find_pc_section (pc);
       objfile = (sec == NULL) ? NULL : sec->objfile;
       minsym = lookup_minimal_symbol (target_name, NULL, objfile);
-      if (minsym != NULL)
-       return MSYMBOL_VALUE_ADDRESS (minsym);
+      if (minsym.minsym != NULL)
+       return MSYMBOL_VALUE_ADDRESS (minsym.minsym);
       else
        return 0;
     }
index 02787053f81f69515155a4f05952bd65ea7ec7a1..239662782538be987f1a4c6fef42f86f2103fd7b 100644 (file)
@@ -85,7 +85,7 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
                 ULONGEST offset,
                 ULONGEST len, ULONGEST *xfered_len)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   CORE_ADDR data_address, pointer_address;
   struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
   size_t ptr_size = TYPE_LENGTH (ptr_type);
@@ -95,17 +95,17 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
   size_t block;
 
   msym = lookup_minimal_symbol ("_dl_auxv", NULL, NULL);
-  if (msym == NULL)
+  if (msym.minsym == NULL)
     return TARGET_XFER_E_IO;
 
-  if (MSYMBOL_SIZE (msym) != ptr_size)
+  if (MSYMBOL_SIZE (msym.minsym) != ptr_size)
     return TARGET_XFER_E_IO;
 
   /* POINTER_ADDRESS is a location where the `_dl_auxv' variable
      resides.  DATA_ADDRESS is the inferior value present in
      `_dl_auxv', therefore the real inferior AUXV address.  */
 
-  pointer_address = MSYMBOL_VALUE_ADDRESS (msym);
+  pointer_address = MSYMBOL_VALUE_ADDRESS (msym.minsym);
 
   /* The location of the _dl_auxv symbol may no longer be correct if
      ld.so runs at a different address than the one present in the
index da6b765dad4fa3ceb46e2c3e17f0c279394ce344..a637cf832d9bc06a443623c4e53b1f46a51c858c 100644 (file)
@@ -492,7 +492,7 @@ avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
   int i;
   unsigned short insn;
   int scan_stage = 0;
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   unsigned char prologue[AVR_MAX_PROLOGUE_SIZE];
   int vpc = 0;
   int len;
@@ -586,7 +586,7 @@ avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
       pc_offset += 2;
 
       msymbol = lookup_minimal_symbol ("__prologue_saves__", NULL, NULL);
-      if (!msymbol)
+      if (!msymbol.minsym)
        break;
 
       insn = extract_unsigned_integer (&prologue[vpc + 8], 2, byte_order);
@@ -624,7 +624,8 @@ avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
 
       /* Resolve offset (in words) from __prologue_saves__ symbol.
          Which is a pushes count in `-mcall-prologues' mode */
-      num_pushes = AVR_MAX_PUSHES - (i - MSYMBOL_VALUE_ADDRESS (msymbol)) / 2;
+      num_pushes = (AVR_MAX_PUSHES
+                   - (i - MSYMBOL_VALUE_ADDRESS (msymbol.minsym)) / 2);
 
       if (num_pushes > AVR_MAX_PUSHES)
         {
index a57d573db27736f1ebd3a3d3c005790ee19e05f7..f2bcefab7d37534f95dc439300b56b484d490f9b 100644 (file)
@@ -712,14 +712,14 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
 
     case LOC_UNRESOLVED:
       {
-       struct minimal_symbol *msym
+       struct bound_minimal_symbol msym
          = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
 
-       if (!msym)
+       if (!msym.minsym)
          error (_("Couldn't resolve symbol `%s'."), SYMBOL_PRINT_NAME (var));
 
        /* Push the address of the variable.  */
-       ax_const_l (ax, MSYMBOL_VALUE_ADDRESS (msym));
+       ax_const_l (ax, MSYMBOL_VALUE_ADDRESS (msym.minsym));
        value->kind = axs_lvalue_memory;
       }
       break;
index 51309b0fb1d0c0fcff4ab7f5492fe8ac3ac30bff..7006beb62a94f12f884e547a6c17518801b01ff6 100644 (file)
@@ -3146,10 +3146,10 @@ static const char *const longjmp_names[] =
 struct breakpoint_objfile_data
 {
   /* Minimal symbol for "_ovly_debug_event" (if any).  */
-  struct minimal_symbol *overlay_msym;
+  struct bound_minimal_symbol overlay_msym;
 
   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
-  struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
+  struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
 
   /* True if we have looked for longjmp probes.  */
   int longjmp_searched;
@@ -3158,10 +3158,10 @@ struct breakpoint_objfile_data
   VEC (probe_p) *longjmp_probes;
 
   /* Minimal symbol for "std::terminate()" (if any).  */
-  struct minimal_symbol *terminate_msym;
+  struct bound_minimal_symbol terminate_msym;
 
   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
-  struct minimal_symbol *exception_msym;
+  struct bound_minimal_symbol exception_msym;
 
   /* True if we have looked for exception probes.  */
   int exception_searched;
@@ -3226,24 +3226,24 @@ create_overlay_event_breakpoint (void)
 
       bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-      if (msym_not_found_p (bp_objfile_data->overlay_msym))
+      if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
        continue;
 
-      if (bp_objfile_data->overlay_msym == NULL)
+      if (bp_objfile_data->overlay_msym.minsym == NULL)
        {
-         struct minimal_symbol *m;
+         struct bound_minimal_symbol m;
 
          m = lookup_minimal_symbol_text (func_name, objfile);
-         if (m == NULL)
+         if (m.minsym == NULL)
            {
              /* Avoid future lookups in this objfile.  */
-             bp_objfile_data->overlay_msym = &msym_not_found;
+             bp_objfile_data->overlay_msym.minsym = &msym_not_found;
              continue;
            }
          bp_objfile_data->overlay_msym = m;
        }
 
-      addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
+      addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym.minsym);
       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
                                       bp_overlay_event,
                                      &internal_breakpoint_ops);
@@ -3342,25 +3342,25 @@ create_longjmp_master_breakpoint (void)
          const char *func_name;
          CORE_ADDR addr;
 
-         if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
+         if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
            continue;
 
          func_name = longjmp_names[i];
-         if (bp_objfile_data->longjmp_msym[i] == NULL)
+         if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
            {
-             struct minimal_symbol *m;
+             struct bound_minimal_symbol m;
 
              m = lookup_minimal_symbol_text (func_name, objfile);
-             if (m == NULL)
+             if (m.minsym == NULL)
                {
                  /* Prevent future lookups in this objfile.  */
-                 bp_objfile_data->longjmp_msym[i] = &msym_not_found;
+                 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
                  continue;
                }
              bp_objfile_data->longjmp_msym[i] = m;
            }
 
-         addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
+         addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i].minsym);
          b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
                                          &internal_breakpoint_ops);
          b->addr_string = xstrdup (func_name);
@@ -3397,25 +3397,25 @@ create_std_terminate_master_breakpoint (void)
 
       bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-      if (msym_not_found_p (bp_objfile_data->terminate_msym))
+      if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
        continue;
 
-      if (bp_objfile_data->terminate_msym == NULL)
+      if (bp_objfile_data->terminate_msym.minsym == NULL)
        {
-         struct minimal_symbol *m;
+         struct bound_minimal_symbol m;
 
          m = lookup_minimal_symbol (func_name, NULL, objfile);
-         if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
-                           && MSYMBOL_TYPE (m) != mst_file_text))
+         if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
+                                  && MSYMBOL_TYPE (m.minsym) != mst_file_text))
            {
              /* Prevent future lookups in this objfile.  */
-             bp_objfile_data->terminate_msym = &msym_not_found;
+             bp_objfile_data->terminate_msym.minsym = &msym_not_found;
              continue;
            }
          bp_objfile_data->terminate_msym = m;
        }
 
-      addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
+      addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym.minsym);
       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
                                       bp_std_terminate_master,
                                      &internal_breakpoint_ops);
@@ -3496,26 +3496,26 @@ create_exception_master_breakpoint (void)
 
       /* Otherwise, try the hook function.  */
 
-      if (msym_not_found_p (bp_objfile_data->exception_msym))
+      if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
        continue;
 
       gdbarch = get_objfile_arch (objfile);
 
-      if (bp_objfile_data->exception_msym == NULL)
+      if (bp_objfile_data->exception_msym.minsym == NULL)
        {
-         struct minimal_symbol *debug_hook;
+         struct bound_minimal_symbol debug_hook;
 
          debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
-         if (debug_hook == NULL)
+         if (debug_hook.minsym == NULL)
            {
-             bp_objfile_data->exception_msym = &msym_not_found;
+             bp_objfile_data->exception_msym.minsym = &msym_not_found;
              continue;
            }
 
          bp_objfile_data->exception_msym = debug_hook;
        }
 
-      addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
+      addr = MSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym.minsym);
       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
                                                 &current_target);
       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
index d10c5d4edae47067a628e47e04514a31076a79a5..473acbaa048564cb6e27c94fd1a51fe528b803d9 100644 (file)
@@ -125,11 +125,11 @@ static int bsd_uthread_active;
 static CORE_ADDR
 bsd_uthread_lookup_address (const char *name, struct objfile *objfile)
 {
-  struct minimal_symbol *sym;
+  struct bound_minimal_symbol sym;
 
   sym = lookup_minimal_symbol (name, NULL, objfile);
-  if (sym)
-    return MSYMBOL_VALUE_ADDRESS (sym);
+  if (sym.minsym)
+    return MSYMBOL_VALUE_ADDRESS (sym.minsym);
 
   return 0;
 }
index 4704845e203efc45917df0d7e33a1751dda12806..11631baa4798ceb06a8f8ddb4e166e28b527321a 100644 (file)
@@ -2935,7 +2935,7 @@ classify_name (const struct block *block, int is_quoted_name)
   if (sym == NULL
       && parse_language->la_language == language_cplus
       && is_a_field_of_this.type == NULL
-      && !lookup_minimal_symbol (copy, NULL, NULL))
+      && lookup_minimal_symbol (copy, NULL, NULL).minsym == NULL)
     return UNKNOWN_CPP_NAME;
 
   return NAME;
index d2891c35d1092442ba686f0b56a83ccb4022a50d..c5ad60c7b3a4e20abb0ebea300c2f3e4cba160cc 100644 (file)
@@ -680,14 +680,15 @@ coff_symfile_read (struct objfile *objfile, int symfile_flags)
                  || strncmp (name, "_imp_", 5) == 0))
            {
              const char *name1 = (name[1] == '_' ? &name[7] : &name[6]);
-             struct minimal_symbol *found;
+             struct bound_minimal_symbol found;
 
              found = lookup_minimal_symbol (name1, NULL, objfile);
              /* If found, there are symbols named "_imp_foo" and "foo"
                 respectively in OBJFILE.  Set the type of symbol "foo"
                 as 'mst_solib_trampoline'.  */
-             if (found != NULL && MSYMBOL_TYPE (found) == mst_text)
-               MSYMBOL_TYPE (found) = mst_solib_trampoline;
+             if (found.minsym != NULL
+                 && MSYMBOL_TYPE (found.minsym) == mst_text)
+               MSYMBOL_TYPE (found.minsym) = mst_solib_trampoline;
            }
        }
     }
index c23d7ddcb32c9adb17f1bfdddaa39071b168a3e5..fdede74542ccb3930eff2707af1799b4d6022f7d 100644 (file)
@@ -98,12 +98,12 @@ agent_look_up_symbols (void *arg)
 
       if (look_up_one_symbol (symbol_list[i].name, addrp, 1) == 0)
 #else
-      struct minimal_symbol *sym =
+      struct bound_minimal_symbol sym =
        lookup_minimal_symbol (symbol_list[i].name, NULL,
                               (struct objfile *) arg);
 
-      if (sym != NULL)
-       *addrp = MSYMBOL_VALUE_ADDRESS (sym);
+      if (sym.minsym != NULL)
+       *addrp = MSYMBOL_VALUE_ADDRESS (sym.minsym);
       else
 #endif
        {
index b724b964cb96ddaed6946880de7eaddb5b0b9c79..434f30a280a54ea3a6d08dff1acc3949047f4bae 100644 (file)
@@ -37,10 +37,10 @@ static const char D_MAIN[] = "D main";
 const char *
 d_main_name (void)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
 
   msym = lookup_minimal_symbol (D_MAIN, NULL, NULL);
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     return D_MAIN;
 
   /* No known entry procedure found, the main program is probably not D.  */
index 60cf0a83b71844a9bcaaa5c69a4bfbdc4bf3663b..ba8616f7bede134a0521b104fb47ef370ac6ea74 100644 (file)
@@ -1133,7 +1133,7 @@ static CORE_ADDR
 find_stab_function_addr (char *namestring, const char *filename,
                         struct objfile *objfile)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   char *p;
   int n;
 
@@ -1146,7 +1146,7 @@ find_stab_function_addr (char *namestring, const char *filename,
   p[n] = 0;
 
   msym = lookup_minimal_symbol (p, filename, objfile);
-  if (msym == NULL)
+  if (msym.minsym == NULL)
     {
       /* Sun Fortran appends an underscore to the minimal symbol name,
          try again with an appended underscore if the minimal symbol
@@ -1156,13 +1156,13 @@ find_stab_function_addr (char *namestring, const char *filename,
       msym = lookup_minimal_symbol (p, filename, objfile);
     }
 
-  if (msym == NULL && filename != NULL)
+  if (msym.minsym == NULL && filename != NULL)
     {
       /* Try again without the filename.  */
       p[n] = 0;
       msym = lookup_minimal_symbol (p, NULL, objfile);
     }
-  if (msym == NULL && filename != NULL)
+  if (msym.minsym == NULL && filename != NULL)
     {
       /* And try again for Sun Fortran, but without the filename.  */
       p[n] = '_';
@@ -1170,7 +1170,7 @@ find_stab_function_addr (char *namestring, const char *filename,
       msym = lookup_minimal_symbol (p, NULL, objfile);
     }
 
-  return msym == NULL ? 0 : MSYMBOL_VALUE_ADDRESS (msym);
+  return msym.minsym == NULL ? 0 : MSYMBOL_VALUE_ADDRESS (msym.minsym);
 }
 
 static void
@@ -2256,7 +2256,7 @@ end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
     {
       char *p;
       int n;
-      struct minimal_symbol *minsym;
+      struct bound_minimal_symbol minsym;
 
       p = strchr (last_function_name, ':');
       if (p == NULL)
@@ -2267,7 +2267,7 @@ end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
       p[n] = 0;
 
       minsym = lookup_minimal_symbol (p, pst->filename, objfile);
-      if (minsym == NULL)
+      if (minsym.minsym == NULL)
        {
          /* Sun Fortran appends an underscore to the minimal symbol name,
             try again with an appended underscore if the minimal symbol
@@ -2277,8 +2277,9 @@ end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
          minsym = lookup_minimal_symbol (p, pst->filename, objfile);
        }
 
-      if (minsym)
-       pst->texthigh = MSYMBOL_VALUE_ADDRESS (minsym) + MSYMBOL_SIZE (minsym);
+      if (minsym.minsym)
+       pst->texthigh = (MSYMBOL_VALUE_ADDRESS (minsym.minsym)
+                        + MSYMBOL_SIZE (minsym.minsym));
 
       last_function_name = NULL;
     }
index 1057cfb16ac591351d8862d9294aaeec18af0c49..080640dc7d723097ce4bb54e45fb6edb321a0e48 100644 (file)
@@ -225,7 +225,7 @@ static pthreadDebugCallbacks_t debug_callbacks =
 static void
 enable_dec_thread (void)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   void* caller_context;
   int status;
 
@@ -234,14 +234,14 @@ enable_dec_thread (void)
     return;
 
   msym = lookup_minimal_symbol ("__pthread_dbg_symtable", NULL, NULL);
-  if (msym == NULL)
+  if (msym.minsym == NULL)
     {
       debug ("enable_dec_thread: No __pthread_dbg_symtable");
       return;
     }
 
   status = pthreadDebugContextInit (&caller_context, &debug_callbacks,
-                                    (void *) SYMBOL_VALUE_ADDRESS (msym),
+                                    (void *) SYMBOL_VALUE_ADDRESS (msym.minsym),
                                     &debug_context);
   if (status != ESUCCESS)
     {
index 430e7496e360363b74f06a9a81f4fd584db20209..e109ff66e1aa2e8ba277281afbada488849aead7 100644 (file)
@@ -588,23 +588,24 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch,
     case FIELD_LOC_KIND_PHYSNAME:
       {
        const char *physname;
-       struct minimal_symbol *msym;
+       struct bound_minimal_symbol msym;
 
        physname = FIELD_STATIC_PHYSNAME (call_site->target);
 
        /* Handle both the mangled and demangled PHYSNAME.  */
        msym = lookup_minimal_symbol (physname, NULL, NULL);
-       if (msym == NULL)
+       if (msym.minsym == NULL)
          {
-           msym = lookup_minimal_symbol_by_pc (call_site->pc - 1).minsym;
+           msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
            throw_error (NO_ENTRY_VALUE_ERROR,
                         _("Cannot find function \"%s\" for a call site target "
                           "at %s in %s"),
                         physname, paddress (call_site_gdbarch, call_site->pc),
-                        msym == NULL ? "???" : MSYMBOL_PRINT_NAME (msym));
+                        (msym.minsym == NULL ? "???"
+                         : MSYMBOL_PRINT_NAME (msym.minsym)));
                        
          }
-       return MSYMBOL_VALUE_ADDRESS (msym);
+       return MSYMBOL_VALUE_ADDRESS (msym.minsym);
       }
 
     case FIELD_LOC_KIND_PHYSADDR:
index 9ecd328e1cbbcf3eab8d5dfa8f0718f5ece0a172..4d2e290e8630adfeb6328eb5e684ba3e4d7ef68a 100644 (file)
@@ -884,20 +884,20 @@ elf_gnu_ifunc_resolve_by_got (const char *name, CORE_ADDR *addr_p)
       CORE_ADDR pointer_address, addr;
       asection *plt;
       gdb_byte *buf = alloca (ptr_size);
-      struct minimal_symbol *msym;
+      struct bound_minimal_symbol msym;
 
       msym = lookup_minimal_symbol (name_got_plt, NULL, objfile);
-      if (msym == NULL)
+      if (msym.minsym == NULL)
        continue;
-      if (MSYMBOL_TYPE (msym) != mst_slot_got_plt)
+      if (MSYMBOL_TYPE (msym.minsym) != mst_slot_got_plt)
        continue;
-      pointer_address = MSYMBOL_VALUE_ADDRESS (msym);
+      pointer_address = MSYMBOL_VALUE_ADDRESS (msym.minsym);
 
       plt = bfd_get_section_by_name (obfd, ".plt");
       if (plt == NULL)
        continue;
 
-      if (MSYMBOL_SIZE (msym) != ptr_size)
+      if (MSYMBOL_SIZE (msym.minsym) != ptr_size)
        continue;
       if (target_read_memory (pointer_address, buf, ptr_size) != 0)
        continue;
index cd0c20ec98db14080adb1f61ce3119628d80880f..36615e17cde24bfa1c713c6a37b2c706c26f6533 100644 (file)
@@ -1113,7 +1113,7 @@ evaluate_subexp_standard (struct type *expect_type,
        if (value_as_long (target) == 0)
          return value_from_longest (long_type, 0);
        
-       if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0))
+       if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0).minsym)
          gnu_runtime = 1;
        
        /* Find the method dispatch (Apple runtime) or method lookup
index 3e8bd08b0b8797757e251160babbaf024d115201..56cbb2c26d012ff3c83a8473e311f3f69a904ccb 100644 (file)
@@ -390,10 +390,7 @@ struct minsym_lookup_data
   /* The field where the callback should store the minimal symbol
      if found.  It should be initialized to NULL before the search
      is started.  */
-  struct minimal_symbol *result;
-
-  /* The objfile in which the symbol was found.  */
-  struct objfile *objfile;
+  struct bound_minimal_symbol result;
 };
 
 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
@@ -406,13 +403,12 @@ minsym_lookup_iterator_cb (struct objfile *objfile, void *cb_data)
 {
   struct minsym_lookup_data *data = (struct minsym_lookup_data *) cb_data;
 
-  gdb_assert (data->result == NULL);
+  gdb_assert (data->result.minsym == NULL);
 
   data->result = lookup_minimal_symbol (data->name, NULL, objfile);
-  data->objfile = objfile;
 
   /* The iterator should stop iff a match was found.  */
-  return (data->result != NULL);
+  return (data->result.minsym != NULL);
 }
 
 /* A default implementation for the "la_read_var_value" hook in
@@ -572,18 +568,18 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
          (get_objfile_arch (SYMBOL_SYMTAB (var)->objfile),
           minsym_lookup_iterator_cb, &lookup_data,
           SYMBOL_SYMTAB (var)->objfile);
-       msym = lookup_data.result;
+       msym = lookup_data.result.minsym;
 
        if (msym == NULL)
          error (_("No global symbol \"%s\"."), SYMBOL_LINKAGE_NAME (var));
        if (overlay_debugging)
          addr = symbol_overlayed_address (MSYMBOL_VALUE_ADDRESS (msym),
-                                          MSYMBOL_OBJ_SECTION (lookup_data.objfile,
+                                          MSYMBOL_OBJ_SECTION (lookup_data.result.objfile,
                                                                msym));
        else
          addr = MSYMBOL_VALUE_ADDRESS (msym);
 
-       obj_section = MSYMBOL_OBJ_SECTION (lookup_data.objfile, msym);
+       obj_section = MSYMBOL_OBJ_SECTION (lookup_data.result.objfile, msym);
        if (obj_section
            && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
          addr = target_translate_tls_address (obj_section->objfile, addr);
index a2645b56463859c3c6312c0146b439908325639b..40dc1d5e3dd6e33ca04d751085be7e1fb0a01434 100644 (file)
@@ -2007,18 +2007,18 @@ frame_debug_got_null_frame (struct frame_info *this_frame,
 static int
 inside_main_func (struct frame_info *this_frame)
 {
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   CORE_ADDR maddr;
 
   if (symfile_objfile == 0)
     return 0;
   msymbol = lookup_minimal_symbol (main_name (), NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     return 0;
   /* Make certain that the code, and not descriptor, address is
      returned.  */
   maddr = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame),
-                                             MSYMBOL_VALUE_ADDRESS (msymbol),
+                                             MSYMBOL_VALUE_ADDRESS (msymbol.minsym),
                                              &current_target);
   return maddr == get_frame_func (this_frame);
 }
index 2437c9d166db19460725c07248969f41309a3ac0..acb0ba3eb50c8af6b62b67c7d488025da4c05e90 100644 (file)
@@ -1391,7 +1391,7 @@ frv_frame_this_id (struct frame_info *this_frame,
     = frv_frame_unwind_cache (this_frame, this_prologue_cache);
   CORE_ADDR base;
   CORE_ADDR func;
-  struct minimal_symbol *msym_stack;
+  struct bound_minimal_symbol msym_stack;
   struct frame_id id;
 
   /* The FUNC is easy.  */
@@ -1399,7 +1399,8 @@ frv_frame_this_id (struct frame_info *this_frame,
 
   /* Check if the stack is empty.  */
   msym_stack = lookup_minimal_symbol ("_stack", NULL, NULL);
-  if (msym_stack && info->base == MSYMBOL_VALUE_ADDRESS (msym_stack))
+  if (msym_stack.minsym
+      && info->base == MSYMBOL_VALUE_ADDRESS (msym_stack.minsym))
     return;
 
   /* Hopefully the prologue analysis either correctly determined the
index b80a97b5a5d3ac7629487a8e73400bf95527df8e..e22508010012e466e7a05d35bb68e9941b165239 100644 (file)
@@ -268,13 +268,13 @@ call_target_sbrk (int sbrk_arg)
   struct value *sbrk_fn, *ret;
   bfd_vma tmp;
 
-  if (lookup_minimal_symbol ("sbrk", NULL, NULL) != NULL)
+  if (lookup_minimal_symbol ("sbrk", NULL, NULL).minsym != NULL)
     {
       sbrk_fn = find_function_in_inferior ("sbrk", &sbrk_objf);
       if (sbrk_fn == NULL)
        return (bfd_vma) 0;
     }
-  else if (lookup_minimal_symbol ("_sbrk", NULL, NULL) != NULL)
+  else if (lookup_minimal_symbol ("_sbrk", NULL, NULL).minsym != NULL)
     {
       sbrk_fn = find_function_in_inferior ("_sbrk", &sbrk_objf);
       if (sbrk_fn == NULL)
index 4dd2415829343fd3d6647b6e6a9bcd7ce132a24b..99b504fda866635b8332df1cc517fa5c710a2b51 100644 (file)
@@ -59,14 +59,14 @@ glibc_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
   if (resolver.minsym)
     {
       /* The dynamic linker began using this name in early 2005.  */
-      struct minimal_symbol *fixup
+      struct bound_minimal_symbol fixup
        = lookup_minimal_symbol ("_dl_fixup", NULL, resolver.objfile);
       
       /* This is the name used in older versions.  */
-      if (! fixup)
+      if (! fixup.minsym)
         fixup = lookup_minimal_symbol ("fixup", NULL, resolver.objfile);
 
-      if (fixup && MSYMBOL_VALUE_ADDRESS (fixup) == pc)
+      if (fixup.minsym && MSYMBOL_VALUE_ADDRESS (fixup.minsym) == pc)
        return frame_unwind_caller_pc (get_current_frame ());
     }
 
index 6311f927cc55571eb15702cf1cd069a3e61d0318..35f8e7bd00ea9e9e193a8b13899057c562f6c559 100644 (file)
@@ -1122,16 +1122,17 @@ gnuv3_get_typeid (struct value *value)
   else
     {
       char *sym_name;
-      struct minimal_symbol *minsym;
+      struct bound_minimal_symbol minsym;
 
       sym_name = concat ("typeinfo for ", typename, (char *) NULL);
       make_cleanup (xfree, sym_name);
       minsym = lookup_minimal_symbol (sym_name, NULL, NULL);
 
-      if (minsym == NULL)
+      if (minsym.minsym == NULL)
        error (_("could not find typeinfo symbol for '%s'"), typename);
 
-      result = value_at_lazy (typeinfo_type, MSYMBOL_VALUE_ADDRESS (minsym));
+      result = value_at_lazy (typeinfo_type,
+                             MSYMBOL_VALUE_ADDRESS (minsym.minsym));
     }
 
   do_cleanups (cleanup);
@@ -1209,7 +1210,7 @@ gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc)
 {
   CORE_ADDR real_stop_pc, method_stop_pc, func_addr;
   struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct minimal_symbol *thunk_sym, *fn_sym;
+  struct bound_minimal_symbol thunk_sym, fn_sym;
   struct obj_section *section;
   const char *thunk_name, *fn_name;
   
@@ -1218,24 +1219,24 @@ gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc)
     real_stop_pc = stop_pc;
 
   /* Find the linker symbol for this potential thunk.  */
-  thunk_sym = lookup_minimal_symbol_by_pc (real_stop_pc).minsym;
+  thunk_sym = lookup_minimal_symbol_by_pc (real_stop_pc);
   section = find_pc_section (real_stop_pc);
-  if (thunk_sym == NULL || section == NULL)
+  if (thunk_sym.minsym == NULL || section == NULL)
     return 0;
 
   /* The symbol's demangled name should be something like "virtual
      thunk to FUNCTION", where FUNCTION is the name of the function
      being thunked to.  */
-  thunk_name = MSYMBOL_DEMANGLED_NAME (thunk_sym);
+  thunk_name = MSYMBOL_DEMANGLED_NAME (thunk_sym.minsym);
   if (thunk_name == NULL || strstr (thunk_name, " thunk to ") == NULL)
     return 0;
 
   fn_name = strstr (thunk_name, " thunk to ") + strlen (" thunk to ");
   fn_sym = lookup_minimal_symbol (fn_name, NULL, section->objfile);
-  if (fn_sym == NULL)
+  if (fn_sym.minsym == NULL)
     return 0;
 
-  method_stop_pc = MSYMBOL_VALUE_ADDRESS (fn_sym);
+  method_stop_pc = MSYMBOL_VALUE_ADDRESS (fn_sym.minsym);
 
   /* Some targets have minimal symbols pointing to function descriptors
      (powerpc 64 for example).  Make sure to retrieve the address
index cbb05059fa85bbe659e685b5a968224d7b08588b..42535dfd02dc1622812f27b037477b3d1475b7ff 100644 (file)
@@ -56,10 +56,10 @@ static const char GO_MAIN_MAIN[] = "main.main";
 const char *
 go_main_name (void)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
 
   msym = lookup_minimal_symbol (GO_MAIN_MAIN, NULL, NULL);
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     return GO_MAIN_MAIN;
 
   /* No known entry procedure found, the main program is probably not Go.  */
index 31b557dc1b583b181f702e710e8c2217b5ef889d..e9f067d68fd510dc019fe475a32925c632a90383 100644 (file)
@@ -460,7 +460,7 @@ hppa_hpux_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
          (curr_inst == 0xeaa0d002))
        {
          struct bound_minimal_symbol stubsym;
-         struct minimal_symbol *libsym;
+         struct bound_minimal_symbol libsym;
 
          stubsym = lookup_minimal_symbol_by_pc (loc);
          if (stubsym.minsym == NULL)
@@ -471,14 +471,14 @@ hppa_hpux_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
 
          libsym = lookup_minimal_symbol (MSYMBOL_LINKAGE_NAME (stubsym.minsym),
                                          NULL, NULL);
-         if (libsym == NULL)
+         if (libsym.minsym == NULL)
            {
              warning (_("Unable to find library symbol for %s."),
                       MSYMBOL_PRINT_NAME (stubsym.minsym));
              return orig_pc == pc ? 0 : pc & ~0x3;
            }
 
-         return MSYMBOL_VALUE (libsym);
+         return MSYMBOL_VALUE (libsym.minsym);
        }
 
       /* Does it look like bl X,%rp or bl X,%r0?  Another way to do a
@@ -1014,7 +1014,7 @@ hppa_hpux_find_import_stub_for_addr (CORE_ADDR funcaddr)
 {
   struct objfile *objfile;
   struct bound_minimal_symbol funsym;
-  struct minimal_symbol *stubsym;
+  struct bound_minimal_symbol stubsym;
   CORE_ADDR stubaddr;
 
   funsym = lookup_minimal_symbol_by_pc (funcaddr);
@@ -1025,17 +1025,17 @@ hppa_hpux_find_import_stub_for_addr (CORE_ADDR funcaddr)
       stubsym = lookup_minimal_symbol_solib_trampoline
        (MSYMBOL_LINKAGE_NAME (funsym.minsym), objfile);
 
-      if (stubsym)
+      if (stubsym.minsym)
        {
          struct unwind_table_entry *u;
 
-         u = find_unwind_entry (MSYMBOL_VALUE (stubsym));
+         u = find_unwind_entry (MSYMBOL_VALUE (stubsym.minsym));
          if (u == NULL 
              || (u->stub_unwind.stub_type != IMPORT
                  && u->stub_unwind.stub_type != IMPORT_SHLIB))
            continue;
 
-          stubaddr = MSYMBOL_VALUE (stubsym);
+          stubaddr = MSYMBOL_VALUE (stubsym.minsym);
 
          /* If we found an IMPORT stub, then we can stop searching;
             if we found an IMPORT_SHLIB, we want to continue the search
index aaef5a14316977a71ef2b13129ce4abac66dd387..05ca007bed7ad2270508fd8f86d3379112ab425b 100644 (file)
@@ -162,11 +162,11 @@ hppa_extract_17 (unsigned word)
 CORE_ADDR 
 hppa_symbol_address(const char *sym)
 {
-  struct minimal_symbol *minsym;
+  struct bound_minimal_symbol minsym;
 
   minsym = lookup_minimal_symbol (sym, NULL, NULL);
-  if (minsym)
-    return MSYMBOL_VALUE_ADDRESS (minsym);
+  if (minsym.minsym)
+    return MSYMBOL_VALUE_ADDRESS (minsym.minsym);
   else
     return (CORE_ADDR)-1;
 }
@@ -2463,12 +2463,13 @@ hppa_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
 /* Return the minimal symbol whose name is NAME and stub type is STUB_TYPE.
    Return NULL if no such symbol was found.  */
 
-struct minimal_symbol *
+struct bound_minimal_symbol
 hppa_lookup_stub_minimal_symbol (const char *name,
                                  enum unwind_stub_types stub_type)
 {
   struct objfile *objfile;
   struct minimal_symbol *msym;
+  struct bound_minimal_symbol result = { NULL, NULL };
 
   ALL_MSYMBOLS (objfile, msym)
     {
@@ -2478,11 +2479,15 @@ hppa_lookup_stub_minimal_symbol (const char *name,
 
           u = find_unwind_entry (MSYMBOL_VALUE (msym));
           if (u != NULL && u->stub_unwind.stub_type == stub_type)
-            return msym;
+           {
+             result.objfile = objfile;
+             result.minsym = msym;
+             return result;
+           }
         }
     }
 
-  return NULL;
+  return result;
 }
 
 static void
index 7c45ea85a26f489146b687cff7886689f60a0cb5..0669ce34d4bd1a2be90a808d09640f55028d95ca 100644 (file)
@@ -240,7 +240,7 @@ extern void hppa_write_pc (struct regcache *regcache, CORE_ADDR pc);
 extern CORE_ADDR hppa_unwind_pc (struct gdbarch *gdbarch,
                                 struct frame_info *next_frame);
 
-extern struct minimal_symbol *
+extern struct bound_minimal_symbol
   hppa_lookup_stub_minimal_symbol (const char *name,
                                    enum unwind_stub_types stub_type);
 
index 01002534f09030453063c4ff6a9a9f10b0f6f44c..53394c459d2f47195e90fb99b010cf12ff4664b1 100644 (file)
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -1016,7 +1016,7 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
                                struct jit_program_space_data *ps_data)
 {
   struct bound_minimal_symbol reg_symbol;
-  struct minimal_symbol *desc_symbol;
+  struct bound_minimal_symbol desc_symbol;
   struct jit_objfile_data *objf_data;
   CORE_ADDR addr;
 
@@ -1031,12 +1031,13 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
 
       desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL,
                                           reg_symbol.objfile);
-      if (desc_symbol == NULL || MSYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
+      if (desc_symbol.minsym == NULL
+         || MSYMBOL_VALUE_ADDRESS (desc_symbol.minsym) == 0)
        return 1;
 
       objf_data = get_jit_objfile_data (reg_symbol.objfile);
       objf_data->register_code = reg_symbol.minsym;
-      objf_data->descriptor = desc_symbol;
+      objf_data->descriptor = desc_symbol.minsym;
 
       ps_data->objfile = reg_symbol.objfile;
     }
index ed695d253f2d25c8a42397f3159f2625331f6906..9aece373be0a6aae17662de4698dac0157578605 100644 (file)
@@ -455,9 +455,10 @@ inferior_call_waitpid (ptid_t pptid, int pid)
   old_cleanup = make_cleanup (inferior_call_waitpid_cleanup, oldfp);
 
   /* Get the waitpid_fn.  */
-  if (lookup_minimal_symbol ("waitpid", NULL, NULL) != NULL)
+  if (lookup_minimal_symbol ("waitpid", NULL, NULL).minsym != NULL)
     waitpid_fn = find_function_in_inferior ("waitpid", &waitpid_objf);
-  if (!waitpid_fn && lookup_minimal_symbol ("_waitpid", NULL, NULL) != NULL)
+  if (!waitpid_fn
+      && lookup_minimal_symbol ("_waitpid", NULL, NULL).minsym != NULL)
     waitpid_fn = find_function_in_inferior ("_waitpid", &waitpid_objf);
   if (!waitpid_fn)
     goto out;
@@ -668,10 +669,10 @@ checkpoint_command (char *args, int from_tty)
   
   /* Make the inferior fork, record its (and gdb's) state.  */
 
-  if (lookup_minimal_symbol ("fork", NULL, NULL) != NULL)
+  if (lookup_minimal_symbol ("fork", NULL, NULL).minsym != NULL)
     fork_fn = find_function_in_inferior ("fork", &fork_objf);
   if (!fork_fn)
-    if (lookup_minimal_symbol ("_fork", NULL, NULL) != NULL)
+    if (lookup_minimal_symbol ("_fork", NULL, NULL).minsym != NULL)
       fork_fn = find_function_in_inferior ("fork", &fork_objf);
   if (!fork_fn)
     error (_("checkpoint: can't find fork function in inferior."));
index aeb5582a74a66dfc3f1e3e5244fddb266f375622..4702bf5dafc230a7704532b4ba4a2bd861268897 100644 (file)
@@ -5031,14 +5031,15 @@ Enables printf debugging output."),
 static int
 get_signo (const char *name)
 {
-  struct minimal_symbol *ms;
+  struct bound_minimal_symbol ms;
   int signo;
 
   ms = lookup_minimal_symbol (name, NULL, NULL);
-  if (ms == NULL)
+  if (ms.minsym == NULL)
     return 0;
 
-  if (target_read_memory (MSYMBOL_VALUE_ADDRESS (ms), (gdb_byte *) &signo,
+  if (target_read_memory (MSYMBOL_VALUE_ADDRESS (ms.minsym),
+                         (gdb_byte *) &signo,
                          sizeof (signo)) != 0)
     return 0;
 
index 7f237224e449786af8d825c4e2704464e81d09d7..e1c5bce1e8e9ced21abd082feabd441c3c08b160 100644 (file)
@@ -565,16 +565,16 @@ enable_thread_event (int event, CORE_ADDR *bp)
 static int
 inferior_has_bug (const char *ver_symbol, int ver_major_min, int ver_minor_min)
 {
-  struct minimal_symbol *version_msym;
+  struct bound_minimal_symbol version_msym;
   CORE_ADDR version_addr;
   char *version;
   int err, got, retval = 0;
 
   version_msym = lookup_minimal_symbol (ver_symbol, NULL, NULL);
-  if (version_msym == NULL)
+  if (version_msym.minsym == NULL)
     return 0;
 
-  version_addr = MSYMBOL_VALUE_ADDRESS (version_msym);
+  version_addr = MSYMBOL_VALUE_ADDRESS (version_msym.minsym);
   got = target_read_string (version_addr, &version, 32, &err);
   if (err == 0 && memchr (version, 0, got) == &version[got -1])
     {
index 899e45f9444ac0dd4db990f79f7a20be8976764d..d6bc4820cd044846b61f43a727d48ff828f7f8fe 100644 (file)
@@ -2240,14 +2240,15 @@ m32c_return_value (struct gdbarch *gdbarch,
          /* Everything else is passed in mem0, using as many bytes as
             needed.  This is not what the Renesas tools do, but it's
             what GCC does at the moment.  */
-         struct minimal_symbol *mem0
+         struct bound_minimal_symbol mem0
            = lookup_minimal_symbol ("mem0", NULL, NULL);
 
-         if (! mem0)
+         if (! mem0.minsym)
            error (_("The return value is stored in memory at 'mem0', "
                     "but GDB cannot find\n"
                     "its address."));
-         read_memory (MSYMBOL_VALUE_ADDRESS (mem0), readbuf, valtype_len);
+         read_memory (MSYMBOL_VALUE_ADDRESS (mem0.minsym), readbuf,
+                      valtype_len);
        }
     }
 
@@ -2272,14 +2273,15 @@ m32c_return_value (struct gdbarch *gdbarch,
          /* Everything else is passed in mem0, using as many bytes as
             needed.  This is not what the Renesas tools do, but it's
             what GCC does at the moment.  */
-         struct minimal_symbol *mem0
+         struct bound_minimal_symbol mem0
            = lookup_minimal_symbol ("mem0", NULL, NULL);
 
-         if (! mem0)
+         if (! mem0.minsym)
            error (_("The return value is stored in memory at 'mem0', "
                     "but GDB cannot find\n"
                     " its address."));
-         write_memory (MSYMBOL_VALUE_ADDRESS (mem0), writebuf, valtype_len);
+         write_memory (MSYMBOL_VALUE_ADDRESS (mem0.minsym), writebuf,
+                       valtype_len);
        }
     }
 
@@ -2450,7 +2452,7 @@ m32c_m16c_address_to_pointer (struct gdbarch *gdbarch,
     {
       const char *func_name;
       char *tramp_name;
-      struct minimal_symbol *tramp_msym;
+      struct bound_minimal_symbol tramp_msym;
 
       /* Try to find a linker symbol at this address.  */
       struct bound_minimal_symbol func_msym
@@ -2473,7 +2475,7 @@ m32c_m16c_address_to_pointer (struct gdbarch *gdbarch,
          the name any more.  */
       xfree (tramp_name);
 
-      if (! tramp_msym)
+      if (! tramp_msym.minsym)
        {
          CORE_ADDR ptrval;
 
@@ -2505,7 +2507,7 @@ m32c_m16c_address_to_pointer (struct gdbarch *gdbarch,
       else
        {
          /* The trampoline's address is our pointer.  */
-         addr = MSYMBOL_VALUE_ADDRESS (tramp_msym);
+         addr = MSYMBOL_VALUE_ADDRESS (tramp_msym.minsym);
        }
     }
 
@@ -2542,7 +2544,7 @@ m32c_m16c_pointer_to_address (struct gdbarch *gdbarch,
           if (len > 4
               && strcmp (ptr_msym_name + len - 4, ".plt") == 0)
             {
-             struct minimal_symbol *func_msym;
+             struct bound_minimal_symbol func_msym;
               /* We have a .plt symbol; try to find the symbol for the
                  corresponding function.
 
@@ -2557,8 +2559,8 @@ m32c_m16c_pointer_to_address (struct gdbarch *gdbarch,
 
               /* If we do have such a symbol, return its value as the
                  function's true address.  */
-              if (func_msym)
-                ptr = MSYMBOL_VALUE_ADDRESS (func_msym);
+              if (func_msym.minsym)
+                ptr = MSYMBOL_VALUE_ADDRESS (func_msym.minsym);
             }
         }
       else
index 52a31709aba4204a5c4c8dca6d88016bb2b534b5..2af57748cfa95dfff8b9249a697c6c20b15a455c 100644 (file)
@@ -836,7 +836,7 @@ m32r_frame_this_id (struct frame_info *this_frame,
     = m32r_frame_unwind_cache (this_frame, this_prologue_cache);
   CORE_ADDR base;
   CORE_ADDR func;
-  struct minimal_symbol *msym_stack;
+  struct bound_minimal_symbol msym_stack;
   struct frame_id id;
 
   /* The FUNC is easy.  */
@@ -844,7 +844,8 @@ m32r_frame_this_id (struct frame_info *this_frame,
 
   /* Check if the stack is empty.  */
   msym_stack = lookup_minimal_symbol ("_stack", NULL, NULL);
-  if (msym_stack && info->base == MSYMBOL_VALUE_ADDRESS (msym_stack))
+  if (msym_stack.minsym
+      && info->base == MSYMBOL_VALUE_ADDRESS (msym_stack.minsym))
     return;
 
   /* Hopefully the prologue analysis either correctly determined the
index e23747d50300cc70b38a5997f814d5d570ff593a..6f0092bb46e7b09703e3a0c40f8e228ae5bcedba 100644 (file)
@@ -199,12 +199,12 @@ static int soft_reg_initialized = 0;
 static void
 m68hc11_get_register_info (struct m68hc11_soft_reg *reg, const char *name)
 {
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
 
   msymbol = lookup_minimal_symbol (name, NULL, NULL);
-  if (msymbol)
+  if (msymbol.minsym)
     {
-      reg->addr = MSYMBOL_VALUE_ADDRESS (msymbol);
+      reg->addr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
       reg->name = xstrdup (name);
 
       /* Keep track of the address range for soft registers.  */
index cb8f053b88e3bc5cabd34618a7240b28ba58b031..f189e99e10cb017105643f87e46dc2a6a542e027 100644 (file)
@@ -429,19 +429,19 @@ static CORE_ADDR
 macho_resolve_oso_sym_with_minsym (struct objfile *main_objfile, asymbol *sym)
 {
   /* For common symbol and global symbols, use the min symtab.  */
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   const char *name = sym->name;
 
   if (name[0] == bfd_get_symbol_leading_char (main_objfile->obfd))
     ++name;
   msym = lookup_minimal_symbol (name, NULL, main_objfile);
-  if (msym == NULL)
+  if (msym.minsym == NULL)
     {
       warning (_("can't find symbol '%s' in minsymtab"), name);
       return 0;
     }
   else
-    return MSYMBOL_VALUE_ADDRESS (msym);
+    return MSYMBOL_VALUE_ADDRESS (msym.minsym);
 }
 
 /* Add oso file OSO/ABFD as a symbol file.  */
index dde7d903fcf5d6e2c774a6c68edc5c7af038037c..8335d51dc7bec6c49e9b5704b835ae26a3299d6b 100644 (file)
@@ -159,9 +159,9 @@ add_minsym_to_demangled_hash_table (struct minimal_symbol *sym,
    Obviously, there must be distinct mangled names for each of these,
    but the demangled names are all the same: S::S or S::~S.  */
 
-static struct bound_minimal_symbol
-lookup_minimal_symbol_internal (const char *name, const char *sfile,
-                               struct objfile *objf)
+struct bound_minimal_symbol
+lookup_minimal_symbol (const char *name, const char *sfile,
+                      struct objfile *objf)
 {
   struct objfile *objfile;
   struct bound_minimal_symbol found_symbol = { NULL, NULL };
@@ -294,23 +294,10 @@ lookup_minimal_symbol_internal (const char *name, const char *sfile,
 
 /* See minsyms.h.  */
 
-struct minimal_symbol *
-lookup_minimal_symbol (const char *name, const char *sfile,
-                      struct objfile *objf)
-{
-  struct bound_minimal_symbol bms = lookup_minimal_symbol_internal (name,
-                                                                   sfile,
-                                                                   objf);
-
-  return bms.minsym;
-}
-
-/* See minsyms.h.  */
-
 struct bound_minimal_symbol
 lookup_bound_minimal_symbol (const char *name)
 {
-  return lookup_minimal_symbol_internal (name, NULL, NULL);
+  return lookup_minimal_symbol (name, NULL, NULL);
 }
 
 /* See minsyms.h.  */
@@ -349,25 +336,25 @@ iterate_over_minimal_symbols (struct objfile *objf, const char *name,
 
 /* See minsyms.h.  */
 
-struct minimal_symbol *
+struct bound_minimal_symbol
 lookup_minimal_symbol_text (const char *name, struct objfile *objf)
 {
   struct objfile *objfile;
   struct minimal_symbol *msymbol;
-  struct minimal_symbol *found_symbol = NULL;
-  struct minimal_symbol *found_file_symbol = NULL;
+  struct bound_minimal_symbol found_symbol = { NULL, NULL };
+  struct bound_minimal_symbol found_file_symbol = { NULL, NULL };
 
   unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
 
   for (objfile = object_files;
-       objfile != NULL && found_symbol == NULL;
+       objfile != NULL && found_symbol.minsym == NULL;
        objfile = objfile->next)
     {
       if (objf == NULL || objf == objfile
          || objf == objfile->separate_debug_objfile_backlink)
        {
          for (msymbol = objfile->msymbol_hash[hash];
-              msymbol != NULL && found_symbol == NULL;
+              msymbol != NULL && found_symbol.minsym == NULL;
               msymbol = msymbol->hash_next)
            {
              if (strcmp (MSYMBOL_LINKAGE_NAME (msymbol), name) == 0 &&
@@ -378,10 +365,12 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf)
                  switch (MSYMBOL_TYPE (msymbol))
                    {
                    case mst_file_text:
-                     found_file_symbol = msymbol;
+                     found_file_symbol.minsym = msymbol;
+                     found_file_symbol.objfile = objfile;
                      break;
                    default:
-                     found_symbol = msymbol;
+                     found_symbol.minsym = msymbol;
+                     found_symbol.objfile = objfile;
                      break;
                    }
                }
@@ -389,14 +378,11 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf)
        }
     }
   /* External symbols are best.  */
-  if (found_symbol)
+  if (found_symbol.minsym)
     return found_symbol;
 
   /* File-local symbols are next best.  */
-  if (found_file_symbol)
-    return found_file_symbol;
-
-  return NULL;
+  return found_file_symbol;
 }
 
 /* See minsyms.h.  */
@@ -433,35 +419,39 @@ lookup_minimal_symbol_by_pc_name (CORE_ADDR pc, const char *name,
 
 /* See minsyms.h.  */
 
-struct minimal_symbol *
+struct bound_minimal_symbol
 lookup_minimal_symbol_solib_trampoline (const char *name,
                                        struct objfile *objf)
 {
   struct objfile *objfile;
   struct minimal_symbol *msymbol;
-  struct minimal_symbol *found_symbol = NULL;
+  struct bound_minimal_symbol found_symbol = { NULL, NULL };
 
   unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
 
   for (objfile = object_files;
-       objfile != NULL && found_symbol == NULL;
+       objfile != NULL;
        objfile = objfile->next)
     {
       if (objf == NULL || objf == objfile
          || objf == objfile->separate_debug_objfile_backlink)
        {
          for (msymbol = objfile->msymbol_hash[hash];
-              msymbol != NULL && found_symbol == NULL;
+              msymbol != NULL;
               msymbol = msymbol->hash_next)
            {
              if (strcmp (MSYMBOL_LINKAGE_NAME (msymbol), name) == 0 &&
                  MSYMBOL_TYPE (msymbol) == mst_solib_trampoline)
-               return msymbol;
+               {
+                 found_symbol.objfile = objfile;
+                 found_symbol.minsym = msymbol;
+                 return found_symbol;
+               }
            }
        }
     }
 
-  return NULL;
+  return found_symbol;
 }
 
 /* Search through the minimal symbol table for each objfile and find
index f201a738f4d8a3591a25a45c2effdc6caaf4c01d..a11b5e88acaf98619411a800dadd61d0ff7e6f28 100644 (file)
@@ -164,17 +164,17 @@ unsigned int msymbol_hash_iw (const char *);
 
 /* Look through all the current minimal symbol tables and find the
    first minimal symbol that matches NAME.  If OBJF is non-NULL, limit
-   the search to that objfile.  If SFILE is non-NULL, the only file-scope
-   symbols considered will be from that source file (global symbols are
-   still preferred).  Returns a pointer to the minimal symbol that
-   matches, or NULL if no match is found.  */
+   the search to that objfile.  If SFILE is non-NULL, the only
+   file-scope symbols considered will be from that source file (global
+   symbols are still preferred).  Returns a bound minimal symbol that
+   matches, or an empty bound minimal symbol if no match is found.  */
 
-struct minimal_symbol *lookup_minimal_symbol (const char *,
-                                             const char *,
-                                             struct objfile *);
+struct bound_minimal_symbol lookup_minimal_symbol (const char *,
+                                                  const char *,
+                                                  struct objfile *);
 
-/* Like lookup_minimal_symbol, but searches all files and objfiles
-   and returns a bound minimal symbol.  */
+/* Like lookup_minimal_symbol, but searches all files and
+   objfiles.  */
 
 struct bound_minimal_symbol lookup_bound_minimal_symbol (const char *);
 
@@ -185,13 +185,14 @@ struct bound_minimal_symbol lookup_minimal_symbol_and_objfile (const char *);
 
 /* Look through all the current minimal symbol tables and find the
    first minimal symbol that matches NAME and has text type.  If OBJF
-   is non-NULL, limit the search to that objfile.  Returns a pointer
-   to the minimal symbol that matches, or NULL if no match is found.
+   is non-NULL, limit the search to that objfile.  Returns a bound
+   minimal symbol that matches, or an "empty" bound minimal symbol
+   otherwise.
 
    This function only searches the mangled (linkage) names.  */
 
-struct minimal_symbol *lookup_minimal_symbol_text (const char *,
-                                                  struct objfile *);
+struct bound_minimal_symbol lookup_minimal_symbol_text (const char *,
+                                                       struct objfile *);
 
 /* Look through all the current minimal symbol tables and find the
    first minimal symbol that matches NAME and is a solib trampoline.
@@ -201,7 +202,7 @@ struct minimal_symbol *lookup_minimal_symbol_text (const char *,
 
    This function only searches the mangled (linkage) names.  */
 
-struct minimal_symbol *lookup_minimal_symbol_solib_trampoline
+struct bound_minimal_symbol lookup_minimal_symbol_solib_trampoline
     (const char *,
      struct objfile *);
 
index 91ef0129f3dde19a83c4ddf8839360a0b384f164..89c578e9706f414bbd599e9a38d56afac566a514 100644 (file)
@@ -822,11 +822,11 @@ mips_linux_in_dynsym_resolve_code (CORE_ADDR pc)
 static CORE_ADDR
 mips_linux_skip_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  struct minimal_symbol *resolver;
+  struct bound_minimal_symbol resolver;
 
   resolver = lookup_minimal_symbol ("__dl_runtime_resolve", NULL, NULL);
 
-  if (resolver && MSYMBOL_VALUE_ADDRESS (resolver) == pc)
+  if (resolver.minsym && MSYMBOL_VALUE_ADDRESS (resolver.minsym) == pc)
     return frame_unwind_caller_pc (get_current_frame ());
 
   return glibc_skip_solib_resolver (gdbarch, pc);
index e1f2b1487218b0deedcbcffc70b566946d2e8776..54a5acfa8ce116e858dfaa08fc0923ce1225a605 100644 (file)
@@ -120,9 +120,9 @@ lookup_objc_class (struct gdbarch *gdbarch, char *classname)
       return 0;
     }
 
-  if (lookup_minimal_symbol("objc_lookUpClass", 0, 0))
+  if (lookup_minimal_symbol("objc_lookUpClass", 0, 0).minsym)
     function = find_function_in_inferior("objc_lookUpClass", NULL);
-  else if (lookup_minimal_symbol ("objc_lookup_class", 0, 0))
+  else if (lookup_minimal_symbol ("objc_lookup_class", 0, 0).minsym)
     function = find_function_in_inferior("objc_lookup_class", NULL);
   else
     {
@@ -149,9 +149,9 @@ lookup_child_selector (struct gdbarch *gdbarch, char *selname)
       return 0;
     }
 
-  if (lookup_minimal_symbol("sel_getUid", 0, 0))
+  if (lookup_minimal_symbol("sel_getUid", 0, 0).minsym)
     function = find_function_in_inferior("sel_getUid", NULL);
-  else if (lookup_minimal_symbol ("sel_get_any_uid", 0, 0))
+  else if (lookup_minimal_symbol ("sel_get_any_uid", 0, 0).minsym)
     function = find_function_in_inferior("sel_get_any_uid", NULL);
   else
     {
@@ -181,17 +181,17 @@ value_nsstring (struct gdbarch *gdbarch, char *ptr, int len)
   stringValue[2] = value_string(ptr, len, char_type);
   stringValue[2] = value_coerce_array(stringValue[2]);
   /* _NSNewStringFromCString replaces "istr" after Lantern2A.  */
-  if (lookup_minimal_symbol("_NSNewStringFromCString", 0, 0))
+  if (lookup_minimal_symbol("_NSNewStringFromCString", 0, 0).minsym)
     {
       function = find_function_in_inferior("_NSNewStringFromCString", NULL);
       nsstringValue = call_function_by_hand(function, 1, &stringValue[2]);
     }
-  else if (lookup_minimal_symbol("istr", 0, 0))
+  else if (lookup_minimal_symbol("istr", 0, 0).minsym)
     {
       function = find_function_in_inferior("istr", NULL);
       nsstringValue = call_function_by_hand(function, 1, &stringValue[2]);
     }
-  else if (lookup_minimal_symbol("+[NSString stringWithCString:]", 0, 0))
+  else if (lookup_minimal_symbol("+[NSString stringWithCString:]", 0, 0).minsym)
     {
       function
        = find_function_in_inferior("+[NSString stringWithCString:]", NULL);
@@ -1152,11 +1152,12 @@ find_imps (const char *method, VEC (const_char_ptr) **symbol_names)
                       SYMBOL_NATURAL_NAME (sym));
       else
        {
-         struct minimal_symbol *msym = lookup_minimal_symbol (selector, 0, 0);
+         struct bound_minimal_symbol msym
+           = lookup_minimal_symbol (selector, 0, 0);
 
-         if (msym != NULL) 
+         if (msym.minsym != NULL) 
            VEC_safe_push (const_char_ptr, *symbol_names,
-                          MSYMBOL_NATURAL_NAME (msym));
+                          MSYMBOL_NATURAL_NAME (msym.minsym));
        }
     }
 
index a0bf462cda9e6853e320975a98c8c1e06f10760f..fc100e22e1b2ccfc9a36c43bf2c8f5b45ca4e2cc 100644 (file)
 CORE_ADDR
 obsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
 
   msym = lookup_minimal_symbol("_dl_bind", NULL, NULL);
-  if (msym && MSYMBOL_VALUE_ADDRESS (msym) == pc)
+  if (msym.minsym && MSYMBOL_VALUE_ADDRESS (msym.minsym) == pc)
     return frame_unwind_caller_pc (get_current_frame ());
   else
     return find_solib_trampoline_target (get_current_frame (), pc);
index 27ea4ce6e14ac32a5b4de5179a2bb9424ef92b7e..856beb3236ea040281aeb161515ccfb662e6fa0d 100644 (file)
@@ -59,23 +59,23 @@ static const char GPC_MAIN_PROGRAM_NAME_2[] = "pascal_main_program";
 const char *
 pascal_main_name (void)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
 
   msym = lookup_minimal_symbol (GPC_P_INITIALIZE, NULL, NULL);
 
   /*  If '_p_initialize' was not found, the main program is likely not
      written in Pascal.  */
-  if (msym == NULL)
+  if (msym.minsym == NULL)
     return NULL;
 
   msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_1, NULL, NULL);
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     {
       return GPC_MAIN_PROGRAM_NAME_1;
     }
 
   msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_2, NULL, NULL);
-  if (msym != NULL)
+  if (msym.minsym != NULL)
     {
       return GPC_MAIN_PROGRAM_NAME_2;
     }
index 66cbba303b8126ad3545ded5e20666a1fc33cf07..dee6938cf544c901eab53bc161d788916fd48b29 100644 (file)
@@ -1011,7 +1011,7 @@ static CORE_ADDR spe_context_cache_address;
 static void
 ppc_linux_spe_context_lookup (struct objfile *objfile)
 {
-  struct minimal_symbol *sym;
+  struct bound_minimal_symbol sym;
 
   if (!objfile)
     {
@@ -1024,11 +1024,11 @@ ppc_linux_spe_context_lookup (struct objfile *objfile)
     }
 
   sym = lookup_minimal_symbol ("__spe_current_active_context", NULL, objfile);
-  if (sym)
+  if (sym.minsym)
     {
       spe_context_objfile = objfile;
       spe_context_lm_addr = svr4_fetch_objfile_link_map (objfile);
-      spe_context_offset = MSYMBOL_VALUE_ADDRESS (sym);
+      spe_context_offset = MSYMBOL_VALUE_ADDRESS (sym.minsym);
       spe_context_cache_ptid = minus_one_ptid;
       spe_context_cache_address = 0;
       return;
index 9cc9a43903f58d4d01dce2d5fb9063bbb04884a8..124e4fae39f1ecf673b8de535123d39d5010b71d 100644 (file)
@@ -1076,7 +1076,7 @@ convert_code_addr_to_desc_addr (CORE_ADDR code_addr, CORE_ADDR *desc_addr)
 {
   struct obj_section *dot_fn_section;
   struct bound_minimal_symbol dot_fn;
-  struct minimal_symbol *fn;
+  struct bound_minimal_symbol fn;
 
   /* Find the minimal symbol that corresponds to CODE_ADDR (should
      have a name of the form ".FN").  */
@@ -1094,10 +1094,10 @@ convert_code_addr_to_desc_addr (CORE_ADDR code_addr, CORE_ADDR *desc_addr)
      contain a minimal symbol with the same name.  */
   fn = lookup_minimal_symbol (MSYMBOL_LINKAGE_NAME (dot_fn.minsym) + 1, NULL,
                              dot_fn_section->objfile);
-  if (fn == NULL)
+  if (fn.minsym == NULL)
     return 0;
   /* Found a descriptor.  */
-  (*desc_addr) = MSYMBOL_VALUE_ADDRESS (fn);
+  (*desc_addr) = MSYMBOL_VALUE_ADDRESS (fn.minsym);
   return 1;
 }
 
index 2a21e78617dbe5e2c58c2c6954c2a1119be332a6..96e4fe0b48eb3a95b0eda1f6251b6965d51ac138 100644 (file)
@@ -194,7 +194,7 @@ ps_err_e
 ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
                   const char *name, psaddr_t *sym_addr)
 {
-  struct minimal_symbol *ms;
+  struct bound_minimal_symbol ms;
   struct cleanup *old_chain = save_current_program_space ();
   struct inferior *inf = find_inferior_pid (ptid_get_pid (ph->ptid));
   ps_err_e result;
@@ -203,11 +203,11 @@ ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
 
   /* FIXME: kettenis/2000-09-03: What should we do with OBJ?  */
   ms = lookup_minimal_symbol (name, NULL, NULL);
-  if (ms == NULL)
+  if (ms.minsym == NULL)
     result = PS_NOSYM;
   else
     {
-      *sym_addr = core_addr_to_ps_addr (MSYMBOL_VALUE_ADDRESS (ms));
+      *sym_addr = core_addr_to_ps_addr (MSYMBOL_VALUE_ADDRESS (ms.minsym));
       result = PS_OK;
     }
 
index 4ed007d129b7e0b505057b48e8643d0b0ae4508d..d150412005bc3f92b12edb40de7a12b74a660f9b 100644 (file)
@@ -102,13 +102,13 @@ ravenscar_update_inferior_ptid (void)
    and return its associated minimal symbol.
    Return NULL if not found.  */
 
-static struct minimal_symbol *
+static struct bound_minimal_symbol
 get_running_thread_msymbol (void)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
 
   msym = lookup_minimal_symbol (running_thread_name, NULL, NULL);
-  if (!msym)
+  if (!msym.minsym)
     /* Older versions of the GNAT runtime were using a different
        (less ideal) name for the symbol where the active thread ID
        is stored.  If we couldn't find the symbol using the latest
@@ -124,17 +124,18 @@ get_running_thread_msymbol (void)
 static int
 has_ravenscar_runtime (void)
 {
-  struct minimal_symbol *msym_ravenscar_runtime_initializer =
+  struct bound_minimal_symbol msym_ravenscar_runtime_initializer =
     lookup_minimal_symbol (ravenscar_runtime_initializer, NULL, NULL);
-  struct minimal_symbol *msym_known_tasks =
+  struct bound_minimal_symbol msym_known_tasks =
     lookup_minimal_symbol (known_tasks_name, NULL, NULL);
-  struct minimal_symbol *msym_first_task =
+  struct bound_minimal_symbol msym_first_task =
     lookup_minimal_symbol (first_task_name, NULL, NULL);
-  struct minimal_symbol *msym_running_thread = get_running_thread_msymbol ();
+  struct bound_minimal_symbol msym_running_thread
+    = get_running_thread_msymbol ();
 
-  return (msym_ravenscar_runtime_initializer
-         && (msym_known_tasks || msym_first_task)
-         && msym_running_thread);
+  return (msym_ravenscar_runtime_initializer.minsym
+         && (msym_known_tasks.minsym || msym_first_task.minsym)
+         && msym_running_thread.minsym);
 }
 
 /* Return True if the Ada Ravenscar run-time can be found in the
@@ -152,7 +153,7 @@ ravenscar_runtime_initialized (void)
 static CORE_ADDR
 get_running_thread_id (void)
 {
-  const struct minimal_symbol *object_msym = get_running_thread_msymbol ();
+  struct bound_minimal_symbol object_msym = get_running_thread_msymbol ();
   int object_size;
   int buf_size;
   gdb_byte *buf;
@@ -160,10 +161,10 @@ get_running_thread_id (void)
   struct type *builtin_type_void_data_ptr =
     builtin_type (target_gdbarch ())->builtin_data_ptr;
 
-  if (!object_msym)
+  if (!object_msym.minsym)
     return 0;
 
-  object_addr = MSYMBOL_VALUE_ADDRESS (object_msym);
+  object_addr = MSYMBOL_VALUE_ADDRESS (object_msym.minsym);
   object_size = TYPE_LENGTH (builtin_type_void_data_ptr);
   buf_size = object_size;
   buf = alloca (buf_size);
index 9f9a1e4706524d90e78698745c2c87942327e696..8e9ef64e3d37ee6d67b9e544a5bb87ccf4a8d72e 100644 (file)
@@ -3670,7 +3670,7 @@ remote_check_symbols (void)
 {
   struct remote_state *rs = get_remote_state ();
   char *msg, *reply, *tmp;
-  struct minimal_symbol *sym;
+  struct bound_minimal_symbol sym;
   int end;
 
   /* The remote side has no concept of inferiors that aren't running
@@ -3705,12 +3705,12 @@ remote_check_symbols (void)
       end = hex2bin (tmp, (gdb_byte *) msg, strlen (tmp) / 2);
       msg[end] = '\0';
       sym = lookup_minimal_symbol (msg, NULL, NULL);
-      if (sym == NULL)
+      if (sym.minsym == NULL)
        xsnprintf (msg, get_remote_packet_size (), "qSymbol::%s", &reply[8]);
       else
        {
          int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
-         CORE_ADDR sym_addr = MSYMBOL_VALUE_ADDRESS (sym);
+         CORE_ADDR sym_addr = MSYMBOL_VALUE_ADDRESS (sym.minsym);
 
          /* If this is a function address, return the start of code
             instead of any data function descriptor.  */
index 56d023bc6a77a930da9b3772c0f6faac01a59647..599ef6427ab5645b18bc240a65515f2aa07a670b 100644 (file)
@@ -762,13 +762,13 @@ ps_err_e
 ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *ld_object_name,
                   const char *ld_symbol_name, gdb_ps_addr_t *ld_symbol_addr)
 {
-  struct minimal_symbol *ms;
+  struct bound_minimal_symbol ms;
 
   ms = lookup_minimal_symbol (ld_symbol_name, NULL, NULL);
-  if (!ms)
+  if (!ms.minsym)
     return PS_NOSYM;
 
-  *ld_symbol_addr = SYMBOL_VALUE_ADDRESS (ms);
+  *ld_symbol_addr = SYMBOL_VALUE_ADDRESS (ms.minsym);
   return PS_OK;
 }
 
index 27108a5d502994f3e5c71ccd5ea6ad13670a0ca4..a4efd42acf369188255bb07f4750f913e78b1293 100644 (file)
 CORE_ADDR
 sol2_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
 
   msym = lookup_minimal_symbol("elf_bndr", NULL, NULL);
-  if (msym && MSYMBOL_VALUE_ADDRESS (msym) == pc)
+  if (msym.minsym && MSYMBOL_VALUE_ADDRESS (msym.minsym) == pc)
     return frame_unwind_caller_pc (get_current_frame ());
 
   return 0;
index a5ceb953dd680fe83f333157814c56c8f518ebd7..61ccc4a2cca5cf9c3ffc7726d96e9e8f28797552 100644 (file)
@@ -550,7 +550,7 @@ static CORE_ADDR
 lm_base (void)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  struct minimal_symbol *got_sym;
+  struct bound_minimal_symbol got_sym;
   CORE_ADDR addr;
   gdb_byte buf[TIC6X_PTR_SIZE];
   struct dsbt_info *info = get_dsbt_info ();
@@ -570,9 +570,9 @@ lm_base (void)
   got_sym = lookup_minimal_symbol ("_GLOBAL_OFFSET_TABLE_", NULL,
                                   symfile_objfile);
 
-  if (got_sym != 0)
+  if (got_sym.minsym != 0)
     {
-      addr = MSYMBOL_VALUE_ADDRESS (got_sym);
+      addr = MSYMBOL_VALUE_ADDRESS (got_sym.minsym);
       if (solib_dsbt_debug)
        fprintf_unfiltered (gdb_stdlog,
                            "lm_base: get addr %x by _GLOBAL_OFFSET_TABLE_.\n",
index acd46da0881d4f25d2ac208ffab8e598e52ef716..0b111bccffdc45e1865895affd43ba6598c0ce0b 100644 (file)
@@ -266,7 +266,7 @@ static CORE_ADDR
 lm_base (void)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  struct minimal_symbol *got_sym;
+  struct bound_minimal_symbol got_sym;
   CORE_ADDR addr;
   gdb_byte buf[FRV_PTR_SIZE];
 
@@ -284,7 +284,7 @@ lm_base (void)
 
   got_sym = lookup_minimal_symbol ("_GLOBAL_OFFSET_TABLE_", NULL,
                                    symfile_objfile);
-  if (got_sym == 0)
+  if (got_sym.minsym == 0)
     {
       if (solib_frv_debug)
        fprintf_unfiltered (gdb_stdlog,
@@ -292,7 +292,7 @@ lm_base (void)
       return 0;
     }
 
-  addr = MSYMBOL_VALUE_ADDRESS (got_sym) + 8;
+  addr = MSYMBOL_VALUE_ADDRESS (got_sym.minsym) + 8;
 
   if (solib_frv_debug)
     fprintf_unfiltered (gdb_stdlog,
@@ -919,14 +919,14 @@ frv_relocate_section_addresses (struct so_list *so,
 static CORE_ADDR
 main_got (void)
 {
-  struct minimal_symbol *got_sym;
+  struct bound_minimal_symbol got_sym;
 
   got_sym = lookup_minimal_symbol ("_GLOBAL_OFFSET_TABLE_",
                                   NULL, symfile_objfile);
-  if (got_sym == 0)
+  if (got_sym.minsym == 0)
     return 0;
 
-  return MSYMBOL_VALUE_ADDRESS (got_sym);
+  return MSYMBOL_VALUE_ADDRESS (got_sym.minsym);
 }
 
 /* Find the global pointer for the given function address ADDR.  */
index 8eda4d4e2246979a616f7a2c841a957ceaedb5c7..d6a4c699149eb43170582e54129956dedd82970a 100644 (file)
@@ -281,13 +281,13 @@ static CORE_ADDR debug_base;      /* Base of dynamic linker structures.  */
 static CORE_ADDR
 locate_base (void)
 {
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   CORE_ADDR address = 0;
 
   msymbol = lookup_minimal_symbol (DEBUG_BASE, NULL, symfile_objfile);
-  if ((msymbol != NULL) && (MSYMBOL_VALUE_ADDRESS (msymbol) != 0))
+  if ((msymbol.minsym != NULL) && (MSYMBOL_VALUE_ADDRESS (msymbol.minsym) != 0))
     {
-      address = MSYMBOL_VALUE_ADDRESS (msymbol);
+      address = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
     }
   return (address);
 }
index dd2d8f7354f0906a0b72d5a4a51482643a1f8496..d9e411903941d25ae6b55ec8f5c452b0c718bc5e 100644 (file)
@@ -186,7 +186,7 @@ static void
 som_solib_create_inferior_hook (int from_tty)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   unsigned int dld_flags, status, have_endo;
   asection *shlib_info;
   gdb_byte buf[4];
@@ -216,10 +216,10 @@ som_solib_create_inferior_hook (int from_tty)
      annoyance to users of modern systems and foul up the testsuite as
      well.  As a result, the warnings have been disabled.  */
   msymbol = lookup_minimal_symbol ("__d_pid", NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     goto keep_going;
 
-  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol);
+  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
   store_unsigned_integer (buf, 4, byte_order, ptid_get_pid (inferior_ptid));
   status = target_write_memory (anaddr, buf, 4);
   if (status != 0)
@@ -241,9 +241,9 @@ GDB will be unable to track shl_load/shl_unload calls"));
      We'll look first for the old flavor and then the new.  */
 
   msymbol = lookup_minimal_symbol ("_DLD_HOOK", NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     msymbol = lookup_minimal_symbol ("__d_trap", NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     {
       warning (_("\
 Unable to find _DLD_HOOK symbol in object file.\n\
@@ -251,22 +251,23 @@ Suggest linking with /opt/langtools/lib/end.o.\n\
 GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
-  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol);
+  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
   dld_cache.hook.address = anaddr;
 
   /* Grrr, this might not be an export symbol!  We have to find the
      export stub.  */
-  msymbol = hppa_lookup_stub_minimal_symbol (MSYMBOL_LINKAGE_NAME (msymbol),
-                                             EXPORT);
-  if (msymbol != NULL)
+  msymbol
+    = hppa_lookup_stub_minimal_symbol (MSYMBOL_LINKAGE_NAME (msymbol.minsym),
+                                      EXPORT);
+  if (msymbol.minsym != NULL)
     {
-      anaddr = MSYMBOL_VALUE (msymbol);
+      anaddr = MSYMBOL_VALUE (msymbol.minsym);
       dld_cache.hook_stub.address = anaddr;
     }
   store_unsigned_integer (buf, 4, byte_order, anaddr);
 
   msymbol = lookup_minimal_symbol ("__dld_hook", NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     {
       warning (_("\
 Unable to find __dld_hook symbol in object file.\n\
@@ -274,13 +275,13 @@ Suggest linking with /opt/langtools/lib/end.o.\n\
 GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
-  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol);
+  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
   status = target_write_memory (anaddr, buf, 4);
 
   /* Now set a shlib_event breakpoint at __d_trap so we can track
      significant shared library events.  */
   msymbol = lookup_minimal_symbol ("__d_trap", NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     {
       warning (_("\
 Unable to find __dld_d_trap symbol in object file.\n\
@@ -289,7 +290,7 @@ GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
   create_solib_event_breakpoint (target_gdbarch (),
-                                MSYMBOL_VALUE_ADDRESS (msymbol));
+                                MSYMBOL_VALUE_ADDRESS (msymbol.minsym));
 
   /* We have all the support usually found in end.o, so we can track
      shl_load and shl_unload calls.  */
@@ -300,12 +301,12 @@ keep_going:
   /* Get the address of __dld_flags, if no such symbol exists, then we can
      not debug the shared code.  */
   msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     {
       error (_("Unable to find __dld_flags symbol in object file."));
     }
 
-  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol);
+  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
 
   /* Read the current contents.  */
   status = target_read_memory (anaddr, buf, 4);
@@ -347,10 +348,10 @@ manpage for methods to privately map shared library text."));
      loaded at startup time (what a crock).  */
 
   msymbol = lookup_minimal_symbol ("_start", NULL, symfile_objfile);
-  if (msymbol == NULL)
+  if (msymbol.minsym == NULL)
     error (_("Unable to find _start symbol in object file."));
 
-  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol);
+  anaddr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
 
   /* Make the breakpoint at "_start" a shared library event breakpoint.  */
   create_solib_event_breakpoint (target_gdbarch (), anaddr);
@@ -368,7 +369,7 @@ som_solib_desire_dynamic_linker_symbols (void)
 {
   struct objfile *objfile;
   struct unwind_table_entry *u;
-  struct minimal_symbol *dld_msymbol;
+  struct bound_minimal_symbol dld_msymbol;
 
   /* Do we already know the value of these symbols?  If so, then
      we've no work to do.
@@ -382,31 +383,32 @@ som_solib_desire_dynamic_linker_symbols (void)
   ALL_OBJFILES (objfile)
   {
     dld_msymbol = lookup_minimal_symbol ("shl_load", NULL, objfile);
-    if (dld_msymbol != NULL)
+    if (dld_msymbol.minsym != NULL)
       {
-       dld_cache.load.address = MSYMBOL_VALUE (dld_msymbol);
+       dld_cache.load.address = MSYMBOL_VALUE (dld_msymbol.minsym);
        dld_cache.load.unwind = find_unwind_entry (dld_cache.load.address);
       }
 
     dld_msymbol = lookup_minimal_symbol_solib_trampoline ("shl_load",
                                                          objfile);
-    if (dld_msymbol != NULL)
+    if (dld_msymbol.minsym != NULL)
       {
-       if (MSYMBOL_TYPE (dld_msymbol) == mst_solib_trampoline)
+       if (MSYMBOL_TYPE (dld_msymbol.minsym) == mst_solib_trampoline)
          {
-           u = find_unwind_entry (MSYMBOL_VALUE (dld_msymbol));
+           u = find_unwind_entry (MSYMBOL_VALUE (dld_msymbol.minsym));
            if ((u != NULL) && (u->stub_unwind.stub_type == EXPORT))
              {
-               dld_cache.load_stub.address = MSYMBOL_VALUE (dld_msymbol);
+               dld_cache.load_stub.address
+                 = MSYMBOL_VALUE (dld_msymbol.minsym);
                dld_cache.load_stub.unwind = u;
              }
          }
       }
 
     dld_msymbol = lookup_minimal_symbol ("shl_unload", NULL, objfile);
-    if (dld_msymbol != NULL)
+    if (dld_msymbol.minsym != NULL)
       {
-       dld_cache.unload.address = MSYMBOL_VALUE (dld_msymbol);
+       dld_cache.unload.address = MSYMBOL_VALUE (dld_msymbol.minsym);
        dld_cache.unload.unwind = find_unwind_entry (dld_cache.unload.address);
 
        /* ??rehrauer: I'm not sure exactly what this is, but it appears
@@ -429,14 +431,15 @@ som_solib_desire_dynamic_linker_symbols (void)
 
     dld_msymbol = lookup_minimal_symbol_solib_trampoline ("shl_unload",
                                                          objfile);
-    if (dld_msymbol != NULL)
+    if (dld_msymbol.minsym != NULL)
       {
-       if (MSYMBOL_TYPE (dld_msymbol) == mst_solib_trampoline)
+       if (MSYMBOL_TYPE (dld_msymbol.minsym) == mst_solib_trampoline)
          {
-           u = find_unwind_entry (MSYMBOL_VALUE (dld_msymbol));
+           u = find_unwind_entry (MSYMBOL_VALUE (dld_msymbol.minsym));
            if ((u != NULL) && (u->stub_unwind.stub_type == EXPORT))
              {
-               dld_cache.unload_stub.address = MSYMBOL_VALUE (dld_msymbol);
+               dld_cache.unload_stub.address
+                 = MSYMBOL_VALUE (dld_msymbol.minsym);
                dld_cache.unload_stub.unwind = u;
              }
          }
@@ -526,35 +529,35 @@ static CORE_ADDR
 link_map_start (void)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  struct minimal_symbol *sym;
+  struct bound_minimal_symbol sym;
   CORE_ADDR addr;
   gdb_byte buf[4];
   unsigned int dld_flags;
 
   sym = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
-  if (!sym)
+  if (!sym.minsym)
     error (_("Unable to find __dld_flags symbol in object file."));
-  addr = MSYMBOL_VALUE_ADDRESS (sym);
+  addr = MSYMBOL_VALUE_ADDRESS (sym.minsym);
   read_memory (addr, buf, 4);
   dld_flags = extract_unsigned_integer (buf, 4, byte_order);
   if ((dld_flags & DLD_FLAGS_LISTVALID) == 0)
     error (_("__dld_list is not valid according to __dld_flags."));
 
   sym = lookup_minimal_symbol ("__dld_list", NULL, NULL);
-  if (!sym)
+  if (!sym.minsym)
     {
       /* Older crt0.o files (hpux8) don't have __dld_list as a symbol,
          but the data is still available if you know where to look.  */
       sym = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
-      if (!sym)
+      if (!sym.minsym)
        {
          error (_("Unable to find dynamic library list."));
          return 0;
        }
-      addr = MSYMBOL_VALUE_ADDRESS (sym) - 8;
+      addr = MSYMBOL_VALUE_ADDRESS (sym.minsym) - 8;
     }
   else
-    addr = MSYMBOL_VALUE_ADDRESS (sym);
+    addr = MSYMBOL_VALUE_ADDRESS (sym.minsym);
 
   read_memory (addr, buf, 4);
   addr = extract_unsigned_integer (buf, 4, byte_order);
index b4aa7a4623abf2486c1b55cac87f5ce37cd1cbfd..a4cefad3751f0a8b6bbcac8634cafe8d476ae679 100644 (file)
@@ -408,7 +408,7 @@ spu_lookup_lib_symbol (const struct objfile *objfile,
 static int
 spu_enable_break (struct objfile *objfile)
 {
-  struct minimal_symbol *spe_event_sym = NULL;
+  struct bound_minimal_symbol spe_event_sym;
 
   /* The libspe library will call __spe_context_update_event whenever any
      SPE context is allocated or destroyed.  */
@@ -416,9 +416,9 @@ spu_enable_break (struct objfile *objfile)
                                         NULL, objfile);
 
   /* Place a solib_event breakpoint on the symbol.  */
-  if (spe_event_sym)
+  if (spe_event_sym.minsym)
     {
-      CORE_ADDR addr = MSYMBOL_VALUE_ADDRESS (spe_event_sym);
+      CORE_ADDR addr = MSYMBOL_VALUE_ADDRESS (spe_event_sym.minsym);
 
       addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), addr,
                                                  &current_target);
@@ -434,8 +434,8 @@ spu_enable_break (struct objfile *objfile)
 static void
 ocl_enable_break (struct objfile *objfile)
 {
-  struct minimal_symbol *event_sym = NULL;
-  struct minimal_symbol *addr_sym = NULL;
+  struct bound_minimal_symbol event_sym;
+  struct bound_minimal_symbol addr_sym;
 
   /* The OpenCL runtime on the SPU will call __opencl_program_update_event
      whenever an OpenCL program is loaded.  */
@@ -445,10 +445,10 @@ ocl_enable_break (struct objfile *objfile)
      at opencl_elf_image_address.  */
   addr_sym = lookup_minimal_symbol ("opencl_elf_image_address", NULL, objfile);
 
-  if (event_sym && addr_sym)
+  if (event_sym.minsym && addr_sym.minsym)
     {
       /* Place a solib_event breakpoint on the symbol.  */
-      CORE_ADDR event_addr = MSYMBOL_VALUE_ADDRESS (event_sym);
+      CORE_ADDR event_addr = MSYMBOL_VALUE_ADDRESS (event_sym.minsym);
       create_solib_event_breakpoint (get_objfile_arch (objfile), event_addr);
 
       /* Store the address of the symbol that will point to OpenCL program
@@ -459,7 +459,7 @@ ocl_enable_break (struct objfile *objfile)
                  &objfile->objfile_obstack,
                  objfile->sections_end - objfile->sections,
                  CORE_ADDR);
-         *ocl_program_addr_base = MSYMBOL_VALUE_ADDRESS (addr_sym);
+         *ocl_program_addr_base = MSYMBOL_VALUE_ADDRESS (addr_sym.minsym);
          set_objfile_data (objfile, ocl_program_data_key,
                            ocl_program_addr_base);
         }
index 3434e80e56b14d903a2f808c940880636320c0e2..4be0807fe009a8d8fb82243d0777f74f2cccdf68 100644 (file)
@@ -787,7 +787,7 @@ scan_dyntag_auxv (int dyntag, CORE_ADDR *ptr)
 static CORE_ADDR
 elf_locate_base (void)
 {
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   CORE_ADDR dyn_ptr;
 
   /* Look for DT_MIPS_RLD_MAP first.  MIPS executables use this
@@ -816,8 +816,8 @@ elf_locate_base (void)
   /* This may be a static executable.  Look for the symbol
      conventionally named _r_debug, as a last resort.  */
   msymbol = lookup_minimal_symbol ("_r_debug", NULL, symfile_objfile);
-  if (msymbol != NULL)
-    return MSYMBOL_VALUE_ADDRESS (msymbol);
+  if (msymbol.minsym != NULL)
+    return MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
 
   /* DT_DEBUG entry not found.  */
   return 0;
@@ -2091,7 +2091,7 @@ cmp_name_and_sec_flags (asymbol *sym, void *data)
 static int
 enable_break (struct svr4_info *info, int from_tty)
 {
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   const char * const *bkpt_namep;
   asection *interp_sect;
   char *interp_name;
@@ -2348,9 +2348,10 @@ enable_break (struct svr4_info *info, int from_tty)
   for (bkpt_namep = solib_break_names; *bkpt_namep != NULL; bkpt_namep++)
     {
       msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile);
-      if ((msymbol != NULL) && (MSYMBOL_VALUE_ADDRESS (msymbol) != 0))
+      if ((msymbol.minsym != NULL)
+         && (MSYMBOL_VALUE_ADDRESS (msymbol.minsym) != 0))
        {
-         sym_addr = MSYMBOL_VALUE_ADDRESS (msymbol);
+         sym_addr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
          sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (),
                                                         sym_addr,
                                                         &current_target);
@@ -2364,9 +2365,10 @@ enable_break (struct svr4_info *info, int from_tty)
       for (bkpt_namep = bkpt_names; *bkpt_namep != NULL; bkpt_namep++)
        {
          msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile);
-         if ((msymbol != NULL) && (MSYMBOL_VALUE_ADDRESS (msymbol) != 0))
+         if ((msymbol.minsym != NULL)
+             && (MSYMBOL_VALUE_ADDRESS (msymbol.minsym) != 0))
            {
-             sym_addr = MSYMBOL_VALUE_ADDRESS (msymbol);
+             sym_addr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
              sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (),
                                                             sym_addr,
                                                             &current_target);
index e4244ee27b72e83401700cef9a5d8d532365b6b3..157f37b933b54a8d2223e1d0a68d3254c09c5351 100644 (file)
@@ -1747,7 +1747,7 @@ spu_get_overlay_table (struct objfile *objfile)
 {
   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd)?
                   BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
-  struct minimal_symbol *ovly_table_msym, *ovly_buf_table_msym;
+  struct bound_minimal_symbol ovly_table_msym, ovly_buf_table_msym;
   CORE_ADDR ovly_table_base, ovly_buf_table_base;
   unsigned ovly_table_size, ovly_buf_table_size;
   struct spu_overlay_table *tbl;
@@ -1760,19 +1760,19 @@ spu_get_overlay_table (struct objfile *objfile)
     return tbl;
 
   ovly_table_msym = lookup_minimal_symbol ("_ovly_table", NULL, objfile);
-  if (!ovly_table_msym)
+  if (!ovly_table_msym.minsym)
     return NULL;
 
   ovly_buf_table_msym = lookup_minimal_symbol ("_ovly_buf_table",
                                               NULL, objfile);
-  if (!ovly_buf_table_msym)
+  if (!ovly_buf_table_msym.minsym)
     return NULL;
 
-  ovly_table_base = MSYMBOL_VALUE_ADDRESS (ovly_table_msym);
-  ovly_table_size = MSYMBOL_SIZE (ovly_table_msym);
+  ovly_table_base = MSYMBOL_VALUE_ADDRESS (ovly_table_msym.minsym);
+  ovly_table_size = MSYMBOL_SIZE (ovly_table_msym.minsym);
 
-  ovly_buf_table_base = MSYMBOL_VALUE_ADDRESS (ovly_buf_table_msym);
-  ovly_buf_table_size = MSYMBOL_SIZE (ovly_buf_table_msym);
+  ovly_buf_table_base = MSYMBOL_VALUE_ADDRESS (ovly_buf_table_msym.minsym);
+  ovly_buf_table_size = MSYMBOL_SIZE (ovly_buf_table_msym.minsym);
 
   ovly_table = xmalloc (ovly_table_size);
   read_memory (ovly_table_base, ovly_table, ovly_table_size);
@@ -1898,7 +1898,7 @@ spu_overlay_new_objfile (struct objfile *objfile)
 static void
 spu_catch_start (struct objfile *objfile)
 {
-  struct minimal_symbol *minsym;
+  struct bound_minimal_symbol minsym;
   struct symtab *symtab;
   CORE_ADDR pc;
   char buf[32];
@@ -1918,13 +1918,14 @@ spu_catch_start (struct objfile *objfile)
   /* There can be multiple symbols named "main".  Search for the
      "main" in *this* objfile.  */
   minsym = lookup_minimal_symbol ("main", NULL, objfile);
-  if (!minsym)
+  if (!minsym.minsym)
     return;
 
   /* If we have debugging information, try to use it -- this
      will allow us to properly skip the prologue.  */
-  pc = MSYMBOL_VALUE_ADDRESS (minsym);
-  symtab = find_pc_sect_symtab (pc, MSYMBOL_OBJ_SECTION (objfile, minsym));
+  pc = MSYMBOL_VALUE_ADDRESS (minsym.minsym);
+  symtab = find_pc_sect_symtab (pc, MSYMBOL_OBJ_SECTION (minsym.objfile,
+                                                        minsym.minsym));
   if (symtab != NULL)
     {
       struct blockvector *bv = BLOCKVECTOR (symtab);
@@ -1981,7 +1982,7 @@ spu_objfile_from_frame (struct frame_info *frame)
 static void
 flush_ea_cache (void)
 {
-  struct minimal_symbol *msymbol;
+  struct bound_minimal_symbol msymbol;
   struct objfile *obj;
 
   if (!has_stack_frames ())
@@ -1993,7 +1994,7 @@ flush_ea_cache (void)
 
   /* Lookup inferior function __cache_flush.  */
   msymbol = lookup_minimal_symbol ("__cache_flush", NULL, obj);
-  if (msymbol != NULL)
+  if (msymbol.minsym != NULL)
     {
       struct type *type;
       CORE_ADDR addr;
@@ -2001,7 +2002,7 @@ flush_ea_cache (void)
       type = objfile_type (obj)->builtin_void;
       type = lookup_function_type (type);
       type = lookup_pointer_type (type);
-      addr = MSYMBOL_VALUE_ADDRESS (msymbol);
+      addr = MSYMBOL_VALUE_ADDRESS (msymbol.minsym);
 
       call_function_by_hand (value_from_pointer (type, addr), 0, NULL);
     }
index 78766c032ed2097f57ffaadd15cdc09f5a105b84..b5bec10762a0cfb793fd8497348a2b7f51fe88e2 100644 (file)
@@ -1168,17 +1168,17 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
                                            SYMBOL_LINKAGE_NAME (sym))
             != SYMBOL_LINKAGE_NAME (sym))
        {
-         struct minimal_symbol *msym;
+         struct bound_minimal_symbol msym;
 
          msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym),
                                        NULL, objfile);
-         if (msym != NULL)
+         if (msym.minsym != NULL)
            {
              const char *new_name = gdbarch_static_transform_name
                (gdbarch, SYMBOL_LINKAGE_NAME (sym));
 
              SYMBOL_SET_LINKAGE_NAME (sym, new_name);
-             SYMBOL_VALUE_ADDRESS (sym) = MSYMBOL_VALUE_ADDRESS (msym);
+             SYMBOL_VALUE_ADDRESS (sym) = MSYMBOL_VALUE_ADDRESS (msym.minsym);
            }
        }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
@@ -1360,17 +1360,17 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
                                            SYMBOL_LINKAGE_NAME (sym))
             != SYMBOL_LINKAGE_NAME (sym))
        {
-         struct minimal_symbol *msym;
+         struct bound_minimal_symbol msym;
 
          msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), 
                                        NULL, objfile);
-         if (msym != NULL)
+         if (msym.minsym != NULL)
            {
              const char *new_name = gdbarch_static_transform_name
                (gdbarch, SYMBOL_LINKAGE_NAME (sym));
 
              SYMBOL_SET_LINKAGE_NAME (sym, new_name);
-             SYMBOL_VALUE_ADDRESS (sym) = MSYMBOL_VALUE_ADDRESS (msym);
+             SYMBOL_VALUE_ADDRESS (sym) = MSYMBOL_VALUE_ADDRESS (msym.minsym);
            }
        }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
index 7420643f82e062f0ceb2e902463b61b67db52253..b8d4479117c5f07111284201a2e614aef7484d8e 100644 (file)
@@ -3532,7 +3532,7 @@ read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
 static int
 simple_read_overlay_table (void)
 {
-  struct minimal_symbol *novlys_msym;
+  struct bound_minimal_symbol novlys_msym;
   struct bound_minimal_symbol ovly_table_msym;
   struct gdbarch *gdbarch;
   int word_size;
@@ -3540,7 +3540,7 @@ simple_read_overlay_table (void)
 
   simple_free_overlay_table ();
   novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
-  if (! novlys_msym)
+  if (! novlys_msym.minsym)
     {
       error (_("Error reading inferior's overlay table: "
              "couldn't find `_novlys' variable\n"
@@ -3561,8 +3561,9 @@ simple_read_overlay_table (void)
   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
   byte_order = gdbarch_byte_order (gdbarch);
 
-  cache_novlys = read_memory_integer (MSYMBOL_VALUE_ADDRESS (novlys_msym),
-                                     4, byte_order);
+  cache_novlys
+    = read_memory_integer (MSYMBOL_VALUE_ADDRESS (novlys_msym.minsym),
+                          4, byte_order);
   cache_ovly_table
     = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
   cache_ovly_table_base = MSYMBOL_VALUE_ADDRESS (ovly_table_msym.minsym);
@@ -3633,15 +3634,15 @@ simple_overlay_update (struct obj_section *osect)
       {
        /* Does its cached location match what's currently in the
           symtab?  */
-       struct minimal_symbol *minsym
+       struct bound_minimal_symbol minsym
          = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
 
-       if (minsym == NULL)
+       if (minsym.minsym == NULL)
          error (_("Error reading inferior's overlay table: couldn't "
                   "find `_ovly_table' array\n"
                   "in inferior.  Use `overlay manual' mode."));
        
-       if (cache_ovly_table_base == MSYMBOL_VALUE_ADDRESS (minsym))
+       if (cache_ovly_table_base == MSYMBOL_VALUE_ADDRESS (minsym.minsym))
          /* Then go ahead and try to look up this single section in
             the cache.  */
          if (simple_overlay_update_1 (osect))
index 326f4c97175d1a2a648b19def33de2015550ca1a..65d7188a6c6a31e5df9e9009527fdac8a8b0a2eb 100644 (file)
@@ -2379,7 +2379,7 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
       {
        mfunsym
          = lookup_minimal_symbol_text (MSYMBOL_LINKAGE_NAME (msymbol.minsym),
-                                       NULL);
+                                       NULL).minsym;
        if (mfunsym == NULL)
          /* I eliminated this warning since it is coming out
           * in the following situation:
index 13e132f9a29b540e0c990c05785a74f38b4c94ae..bd3e9d07732c4fc7d26054c53047c5d27730fabb 100644 (file)
@@ -2701,7 +2701,7 @@ scope_info (char *args, int from_tty)
 {
   struct symtabs_and_lines sals;
   struct symbol *sym;
-  struct minimal_symbol *msym;
+  struct bound_minimal_symbol msym;
   struct block *block;
   const char *symname;
   char *save_args = args;
@@ -2824,14 +2824,14 @@ scope_info (char *args, int from_tty)
                case LOC_UNRESOLVED:
                  msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym),
                                                NULL, NULL);
-                 if (msym == NULL)
+                 if (msym.minsym == NULL)
                    printf_filtered ("Unresolved Static");
                  else
                    {
                      printf_filtered ("static storage at address ");
                      printf_filtered ("%s",
                                       paddress (gdbarch,
-                                                MSYMBOL_VALUE_ADDRESS (msym)));
+                                                MSYMBOL_VALUE_ADDRESS (msym.minsym)));
                    }
                  break;
                case LOC_OPTIMIZED_OUT:
index ee629f38344cccc1b9506c522a6083cd525a3b41..e0ea1837af19ded179d86bfe63c032309093c9cd 100644 (file)
@@ -339,17 +339,17 @@ tui_get_begin_asm_address (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
 
   if (element->addr == 0)
     {
-      struct minimal_symbol *main_symbol;
+      struct bound_minimal_symbol main_symbol;
 
       /* Find address of the start of program.
          Note: this should be language specific.  */
       main_symbol = lookup_minimal_symbol ("main", NULL, NULL);
-      if (main_symbol == 0)
+      if (main_symbol.minsym == 0)
         main_symbol = lookup_minimal_symbol ("MAIN", NULL, NULL);
-      if (main_symbol == 0)
+      if (main_symbol.minsym == 0)
         main_symbol = lookup_minimal_symbol ("_start", NULL, NULL);
-      if (main_symbol)
-        addr = MSYMBOL_VALUE_ADDRESS (main_symbol);
+      if (main_symbol.minsym)
+        addr = MSYMBOL_VALUE_ADDRESS (main_symbol.minsym);
       else
         addr = 0;
     }
index 0ee29f542c7983e8f70c84ad98291032840ad705..1dfc6d58f1de6479a25f5583782f8c7165c0771a 100644 (file)
@@ -2750,15 +2750,15 @@ value_static_field (struct type *type, int fieldno)
        {
          /* With some compilers, e.g. HP aCC, static data members are
             reported as non-debuggable symbols.  */
-         struct minimal_symbol *msym = lookup_minimal_symbol (phys_name,
-                                                              NULL, NULL);
+         struct bound_minimal_symbol msym
+           = lookup_minimal_symbol (phys_name, NULL, NULL);
 
-         if (!msym)
+         if (!msym.minsym)
            return allocate_optimized_out_value (type);
          else
            {
              retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
-                                     MSYMBOL_VALUE_ADDRESS (msym));
+                                     MSYMBOL_VALUE_ADDRESS (msym.minsym));
            }
        }
       else