X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmipsread.c;h=27a59d23299dc42f6ed338c0950dcba6c5679fe0;hb=2b2798cc9716f45f752ea03411b6f9c9afc17cc6;hp=5790730f3f14e0b99591c4eab1eea7e93c2d53c5;hpb=0b30217134add051e159a192066a1e568ebd837f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mipsread.c b/gdb/mipsread.c index 5790730f3f..27a59d2329 100644 --- a/gdb/mipsread.c +++ b/gdb/mipsread.c @@ -1,7 +1,6 @@ /* Read a symbol table in MIPS' format (Third-Eye). - Copyright (C) 1986-1987, 1989-1996, 1998-2001, 2003-2004, 2007-2012 - Free Software Foundation, Inc. + Copyright (C) 1986-2016 Free Software Foundation, Inc. Contributed by Alessandro Forin (af@cs.cmu.edu) at CMU. Major work by Per Bothner, John Gilmore and Ian Lance Taylor at Cygnus Support. @@ -25,7 +24,6 @@ mdebugread.c. */ #include "defs.h" -#include "gdb_string.h" #include "bfd.h" #include "symtab.h" #include "objfiles.h" @@ -217,27 +215,39 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets, str_secsize = bfd_get_section_size (si.str_sect); dyninfo_secsize = bfd_get_section_size (si.dyninfo_sect); got_secsize = bfd_get_section_size (si.got_sect); - sym_secptr = xmalloc (sym_secsize); + sym_secptr = (char *) xmalloc (sym_secsize); cleanups = make_cleanup (xfree, sym_secptr); - str_secptr = xmalloc (str_secsize); + str_secptr = (char *) xmalloc (str_secsize); make_cleanup (xfree, str_secptr); - dyninfo_secptr = xmalloc (dyninfo_secsize); + dyninfo_secptr = (char *) xmalloc (dyninfo_secsize); make_cleanup (xfree, dyninfo_secptr); - got_secptr = xmalloc (got_secsize); + got_secptr = (char *) xmalloc (got_secsize); make_cleanup (xfree, got_secptr); if (!bfd_get_section_contents (abfd, si.sym_sect, sym_secptr, (file_ptr) 0, sym_secsize)) - return; + { + do_cleanups (cleanups); + return; + } if (!bfd_get_section_contents (abfd, si.str_sect, str_secptr, (file_ptr) 0, str_secsize)) - return; + { + do_cleanups (cleanups); + return; + } if (!bfd_get_section_contents (abfd, si.dyninfo_sect, dyninfo_secptr, (file_ptr) 0, dyninfo_secsize)) - return; + { + do_cleanups (cleanups); + return; + } if (!bfd_get_section_contents (abfd, si.got_sect, got_secptr, (file_ptr) 0, got_secsize)) - return; + { + do_cleanups (cleanups); + return; + } /* Find the number of local GOT entries and the index for the first dynamic symbol in the GOT. */ @@ -265,7 +275,10 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets, } } if (dt_mips_local_gotno < 0 || dt_mips_gotsym < 0) - return; + { + do_cleanups (cleanups); + return; + } /* Scan all dynamic symbols and enter them into the minimal symbol table if appropriate. */ @@ -353,7 +366,6 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets, ms_type = mst_text; else ms_type = mst_file_text; - sym_value += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile)); } else if (sym_shndx == SHN_MIPS_DATA) { @@ -361,7 +373,6 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets, ms_type = mst_data; else ms_type = mst_file_data; - sym_value += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile)); } else if (sym_shndx == SHN_MIPS_ACOMMON) { @@ -369,7 +380,6 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets, ms_type = mst_bss; else ms_type = mst_file_bss; - sym_value += ANOFFSET (section_offsets, SECT_OFF_BSS (objfile)); } else if (sym_shndx == SHN_ABS) { @@ -391,7 +401,6 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets, static const struct sym_fns ecoff_sym_fns = { - bfd_target_ecoff_flavour, mipscoff_new_init, /* init anything gbl to entire symtab */ mipscoff_symfile_init, /* read initial info, setup for sym_read() */ mipscoff_symfile_read, /* read a symbol file into symtab */ @@ -401,6 +410,7 @@ static const struct sym_fns ecoff_sym_fns = default_symfile_segments, /* Get segment information from a file. */ NULL, default_symfile_relocate, /* Relocate a debug section. */ + NULL, /* sym_probe_fns */ &psym_functions }; @@ -410,5 +420,5 @@ void _initialize_mipsread (void); void _initialize_mipsread (void) { - add_symtab_fns (&ecoff_sym_fns); + add_symtab_fns (bfd_target_ecoff_flavour, &ecoff_sym_fns); }