* Rename remote-es1800.c to remote-es.c
[deliverable/binutils-gdb.git] / gdb / elfread.c
index d51a0f70de80c8ddb193e723aeabd3189843a7b4..4e1afe9bd8ff099e59a0cc2b13c1df96c105d1ee 100644 (file)
@@ -33,11 +33,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  ************************************************************************/
 
 #include "defs.h"
-#include "elf/common.h"
-#include "elf/external.h"
-#include "elf/internal.h"
 #include "bfd.h"
 #include "libbfd.h"            /* For bfd_elf_find_section */
+#include "libelf.h"
 #include "symtab.h"
 #include "symfile.h"
 #include "objfiles.h"
@@ -187,7 +185,7 @@ record_minimal_symbol_and_info (name, address, ms_type, info, objfile)
      struct objfile *objfile;
 {
   name = obsavestring (name, strlen (name), &objfile -> symbol_obstack);
-  prim_record_minimal_symbol_and_info (name, address, ms_type, info);
+  prim_record_minimal_symbol_and_info (name, address, ms_type, info, -1);
 }
 
 /*
@@ -257,7 +255,8 @@ elf_symtab_read (abfd, addr, objfile)
          if ((sym -> flags & (BSF_GLOBAL | BSF_WEAK))
              && (sym -> section != NULL))
            {
-             symaddr = sym -> value;
+             /* Bfd symbols are section relative. */
+             symaddr = sym -> value + sym -> section -> vma;
              /* Relocate all non-absolute symbols by base address.  */
              if (sym -> section != &bfd_abs_section)
                symaddr += addr;
@@ -283,8 +282,12 @@ elf_symtab_read (abfd, addr, objfile)
                  continue;             /* Skip this symbol. */
                }
              /* Pass symbol size field in via BFD.  FIXME!!!  */
-             record_minimal_symbol_and_info ((char *) sym -> name,
-                        symaddr, ms_type, sym->udata, objfile);
+             {
+               elf32_symbol_type *esym = (elf32_symbol_type *) sym;
+               unsigned long size = esym->internal_elf_sym.st_size;
+               record_minimal_symbol_and_info ((char *) sym -> name, symaddr,
+                                               ms_type, (PTR) size, objfile);
+             }
            }
 
          /* See if this is a debugging symbol that helps Solaris
@@ -341,7 +344,8 @@ elf_symtab_read (abfd, addr, objfile)
                  if (sectinfo->sections[index])
                    complain (&section_info_dup_complaint, sectinfo->filename);
 
-                 symaddr = sym -> value;
+                 /* Bfd symbols are section relative. */
+                 symaddr = sym -> value + sym -> section -> vma;
                  /* Relocate all non-absolute symbols by base address.  */
                  if (sym -> section != &bfd_abs_section)
                      symaddr += addr;
@@ -436,9 +440,9 @@ elf_symfile_read (objfile, section_offsets, mainline)
         sections visible to the caller.  So we have to search the
         ELF section table, not the BFD section table, for the string
         table.  */
-      struct elf_internal_shdr *elf_sect;
+      struct elf32_internal_shdr *elf_sect;
 
-      elf_sect = bfd_elf_find_section (abfd, ".stabstr");
+      elf_sect = bfd_elf32_find_section (abfd, ".stabstr");
       if (elf_sect)
        elfstab_build_psymtabs (objfile,
          section_offsets,
This page took 0.023986 seconds and 4 git commands to generate.