Automatic date update in version.in
[deliverable/binutils-gdb.git] / gdb / solib.c
index 6260dac7ce7e332442b5f867f0e7e5d1889d8df1..98d5cfd405fb6dddae695f7691a7bb63d6740ae7 100644 (file)
@@ -1,6 +1,6 @@
 /* Handle shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 1990-2014 Free Software Foundation, Inc.
+   Copyright (C) 1990-2015 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1404,7 +1404,7 @@ show_auto_solib_add (struct ui_file *file, int from_tty,
    the library-specific handler if it is installed for the current target.  */
 
 struct symbol *
-solib_global_lookup (const struct objfile *objfile,
+solib_global_lookup (struct objfile *objfile,
                     const char *name,
                     const domain_enum domain)
 {
@@ -1443,8 +1443,28 @@ gdb_bfd_lookup_symbol_from_symtab (bfd *abfd,
 
          if (match_sym (sym, data))
            {
+             struct gdbarch *gdbarch = target_gdbarch ();
+             symaddr = sym->value;
+
+             /* Some ELF targets fiddle with addresses of symbols they
+                consider special.  They use minimal symbols to do that
+                and this is needed for correct breakpoint placement,
+                but we do not have full data here to build a complete
+                minimal symbol, so just set the address and let the
+                targets cope with that.  */
+             if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+                 && gdbarch_elf_make_msymbol_special_p (gdbarch))
+               {
+                 struct minimal_symbol msym;
+
+                 memset (&msym, 0, sizeof (msym));
+                 SET_MSYMBOL_VALUE_ADDRESS (&msym, symaddr);
+                 gdbarch_elf_make_msymbol_special (gdbarch, sym, &msym);
+                 symaddr = MSYMBOL_VALUE_RAW_ADDRESS (&msym);
+               }
+
              /* BFD symbols are section relative.  */
-             symaddr = sym->value + sym->section->vma;
+             symaddr += sym->section->vma;
              break;
            }
        }
This page took 0.024713 seconds and 4 git commands to generate.