X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmipsread.c;h=27a59d23299dc42f6ed338c0950dcba6c5679fe0;hb=2b2798cc9716f45f752ea03411b6f9c9afc17cc6;hp=697f784ed567f3d9736286f71bf3dd5d06ed3f73;hpb=025bb325db8dce957db69eaf148c5bec373d4bb6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mipsread.c b/gdb/mipsread.c index 697f784ed5..27a59d2329 100644 --- a/gdb/mipsread.c +++ b/gdb/mipsread.c @@ -1,8 +1,6 @@ /* Read a symbol table in MIPS' format (Third-Eye). - Copyright (C) 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1998, 1999, 2000, 2001, 2003, 2004, 2007, 2008, 2009, 2010, 2011 - 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. @@ -26,7 +24,6 @@ mdebugread.c. */ #include "defs.h" -#include "gdb_string.h" #include "bfd.h" #include "symtab.h" #include "objfiles.h" @@ -218,29 +215,41 @@ 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 the + /* Find the number of local GOT entries and the index for the first dynamic symbol in the GOT. */ for (dyninfo_p = dyninfo_secptr, dyninfo_end = dyninfo_p + dyninfo_secsize; dyninfo_p < dyninfo_end; @@ -266,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. */ @@ -354,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) { @@ -362,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) { @@ -370,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) { @@ -392,15 +401,16 @@ 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 */ + NULL, /* sym_read_psymbols */ mipscoff_symfile_finish, /* finished with file, cleanup */ default_symfile_offsets, /* dummy FIXME til implem sym reloc */ 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); }