projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* coffread.c: Replace all occurrences of bfd_read with bfd_bread.
[binutils-gdb.git]
/
gdb
/
coffread.c
diff --git
a/gdb/coffread.c
b/gdb/coffread.c
index 91fd8a451d84bc58fcd6c65420f79edca1e44c1d..7b93f3d4d88eba3074030470473cb0c489dc7c47 100644
(file)
--- a/
gdb/coffread.c
+++ b/
gdb/coffread.c
@@
-1,5
+1,6
@@
/* Read coff symbol tables and convert to internal format, for GDB.
/* Read coff symbol tables and convert to internal format, for GDB.
- Copyright 1987, 88, 89, 90, 91, 92, 93, 94, 96, 97, 1998
+ Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+ 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu).
Free Software Foundation, Inc.
Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu).
@@
-42,6
+43,7
@@
#include "stabsread.h"
#include "complaints.h"
#include "target.h"
#include "stabsread.h"
#include "complaints.h"
#include "target.h"
+#include "gdb_assert.h"
extern void _initialize_coffread (void);
extern void _initialize_coffread (void);
@@
-68,14
+70,6
@@
struct coff_symfile_info
#define SDB_TYPE(type) (BTYPE(type) | (type & N_TMASK))
#define SDB_TYPE(type) (BTYPE(type) | (type & N_TMASK))
-/* Convert from an sdb register number to an internal gdb register number.
- This should be defined in tm.h, if REGISTER_NAMES is not set up
- to map one to one onto the sdb register numbers. */
-
-#ifndef SDB_REG_TO_REGNUM
-#define SDB_REG_TO_REGNUM(value) (value)
-#endif
-
/* Core address of start and end of text of current source file.
This comes from a ".text" symbol where x_nlinno > 0. */
/* Core address of start and end of text of current source file.
This comes from a ".text" symbol where x_nlinno > 0. */
@@
-304,7
+298,7
@@
coff_locate_sections (bfd *abfd, asection *sectp, PTR csip)
/* This will be run after coffstab_build_psymtabs is called
in coff_symfile_read, at which point we no longer need
the information. */
/* This will be run after coffstab_build_psymtabs is called
in coff_symfile_read, at which point we no longer need
the information. */
- make_cleanup (free, n);
+ make_cleanup (
x
free, n);
}
}
}
}
}
}
@@
-318,7
+312,7
@@
struct find_targ_sec_arg
asection **resultp;
};
asection **resultp;
};
-static void find_targ_sec (bfd *, asection *,
void *
);
+static void find_targ_sec (bfd *, asection *,
PTR
);
static void
find_targ_sec (bfd *abfd, asection *sect, PTR obj)
static void
find_targ_sec (bfd *abfd, asection *sect, PTR obj)
@@
-450,7
+444,7
@@
static void
complete_symtab (char *name, CORE_ADDR start_addr, unsigned int size)
{
if (last_source_file != NULL)
complete_symtab (char *name, CORE_ADDR start_addr, unsigned int size)
{
if (last_source_file != NULL)
- free (last_source_file);
+
x
free (last_source_file);
last_source_file = savestring (name, strlen (name));
current_source_start_addr = start_addr;
current_source_end_addr = start_addr + size;
last_source_file = savestring (name, strlen (name));
current_source_start_addr = start_addr;
current_source_end_addr = start_addr + size;
@@
-695,6
+689,11
@@
coff_symfile_read (struct objfile *objfile, int mainline)
info->stabsects,
info->stabstrsect->filepos, stabstrsize);
}
info->stabsects,
info->stabstrsect->filepos, stabstrsize);
}
+ if (dwarf2_has_info (abfd))
+ {
+ /* DWARF2 sections. */
+ dwarf2_build_psymtabs (objfile, mainline);
+ }
do_cleanups (back_to);
}
do_cleanups (back_to);
}
@@
-747,7
+746,7
@@
coff_symtab_read (long symtab_offset, unsigned int nsyms,
char *filestring = "";
int depth = 0;
int fcn_first_line = 0;
char *filestring = "";
int depth = 0;
int fcn_first_line = 0;
- CORE_ADDR fcn_first_line_addr;
+ CORE_ADDR fcn_first_line_addr
= 0
;
int fcn_last_line = 0;
int fcn_start_addr = 0;
long fcn_line_ptr = 0;
int fcn_last_line = 0;
int fcn_start_addr = 0;
long fcn_line_ptr = 0;
@@
-782,7
+781,7
@@
coff_symtab_read (long symtab_offset, unsigned int nsyms,
memset (opaque_type_chain, 0, sizeof opaque_type_chain);
if (type_vector) /* Get rid of previous one */
memset (opaque_type_chain, 0, sizeof opaque_type_chain);
if (type_vector) /* Get rid of previous one */
-
free ((PTR)
type_vector);
+
xfree (
type_vector);
type_vector_length = 160;
type_vector = (struct type **)
xmalloc (type_vector_length * sizeof (struct type *));
type_vector_length = 160;
type_vector = (struct type **)
xmalloc (type_vector_length * sizeof (struct type *));
@@
-973,9
+972,15
@@
coff_symtab_read (long symtab_offset, unsigned int nsyms,
{
struct minimal_symbol *msym;
{
struct minimal_symbol *msym;
+ /* FIXME: cagney/2001-02-01: The nasty (int) -> (long)
+ -> (void*) cast is to ensure that that the value of
+ cs->c_sclass can be correctly stored in a void
+ pointer in MSYMBOL_INFO. Better solutions
+ welcome. */
+ gdb_assert (sizeof (void *) >= sizeof (cs->c_sclass));
msym = prim_record_minimal_symbol_and_info
msym = prim_record_minimal_symbol_and_info
- (cs->c_name, tmpaddr, ms_type, (
char *) cs->c_sclass, sec
,
- NULL, objfile);
+ (cs->c_name, tmpaddr, ms_type, (
void *) (long) cs->c_sclass
,
+
sec,
NULL, objfile);
#ifdef COFF_MAKE_MSYMBOL_SPECIAL
if (msym)
COFF_MAKE_MSYMBOL_SPECIAL (cs->c_sclass, msym);
#ifdef COFF_MAKE_MSYMBOL_SPECIAL
if (msym)
COFF_MAKE_MSYMBOL_SPECIAL (cs->c_sclass, msym);
@@
-1016,6
+1021,8
@@
coff_symtab_read (long symtab_offset, unsigned int nsyms,
}
else if (STREQ (cs->c_name, ".ef"))
{
}
else if (STREQ (cs->c_name, ".ef"))
{
+ if (!within_function)
+ error ("Bad coff function information\n");
/* the value of .ef is the address of epilogue code;
not useful for gdb. */
/* { main_aux.x_sym.x_misc.x_lnsz.x_lnno
/* the value of .ef is the address of epilogue code;
not useful for gdb. */
/* { main_aux.x_sym.x_misc.x_lnsz.x_lnno
@@
-1147,18
+1154,18
@@
read_one_sym (register struct coff_symbol *cs,
int i;
cs->c_symnum = symnum;
int i;
cs->c_symnum = symnum;
- bfd_
read (temp_sym, local_symesz, 1
, nlist_bfd_global);
+ bfd_
bread (temp_sym, local_symesz
, nlist_bfd_global);
bfd_coff_swap_sym_in (symfile_bfd, temp_sym, (char *) sym);
cs->c_naux = sym->n_numaux & 0xff;
if (cs->c_naux >= 1)
{
bfd_coff_swap_sym_in (symfile_bfd, temp_sym, (char *) sym);
cs->c_naux = sym->n_numaux & 0xff;
if (cs->c_naux >= 1)
{
- bfd_
read (temp_aux, local_auxesz, 1
, nlist_bfd_global);
+ bfd_
bread (temp_aux, local_auxesz
, nlist_bfd_global);
bfd_coff_swap_aux_in (symfile_bfd, temp_aux, sym->n_type, sym->n_sclass,
0, cs->c_naux, (char *) aux);
/* If more than one aux entry, read past it (only the first aux
is important). */
for (i = 1; i < cs->c_naux; i++)
bfd_coff_swap_aux_in (symfile_bfd, temp_aux, sym->n_type, sym->n_sclass,
0, cs->c_naux, (char *) aux);
/* If more than one aux entry, read past it (only the first aux
is important). */
for (i = 1; i < cs->c_naux; i++)
- bfd_
read (temp_aux, local_auxesz, 1
, nlist_bfd_global);
+ bfd_
bread (temp_aux, local_auxesz
, nlist_bfd_global);
}
cs->c_name = getsymname (sym);
cs->c_value = sym->n_value;
}
cs->c_name = getsymname (sym);
cs->c_value = sym->n_value;
@@
-1225,7
+1232,7
@@
init_stringtab (bfd *abfd, long offset)
if (bfd_seek (abfd, offset, 0) < 0)
return -1;
if (bfd_seek (abfd, offset, 0) < 0)
return -1;
- val = bfd_
read ((char *) lengthbuf, sizeof lengthbuf, 1
, abfd);
+ val = bfd_
bread ((char *) lengthbuf, sizeof lengthbuf
, abfd);
length = bfd_h_get_32 (symfile_bfd, lengthbuf);
/* If no string table is needed, then the file may end immediately
length = bfd_h_get_32 (symfile_bfd, lengthbuf);
/* If no string table is needed, then the file may end immediately
@@
-1240,7
+1247,8
@@
init_stringtab (bfd *abfd, long offset)
if (length == sizeof length) /* Empty table -- just the count */
return 0;
if (length == sizeof length) /* Empty table -- just the count */
return 0;
- val = bfd_read (stringtab + sizeof lengthbuf, length - sizeof lengthbuf, 1, abfd);
+ val = bfd_bread (stringtab + sizeof lengthbuf, length - sizeof lengthbuf,
+ abfd);
if (val != length - sizeof lengthbuf || stringtab[length - 1] != '\0')
return -1;
if (val != length - sizeof lengthbuf || stringtab[length - 1] != '\0')
return -1;
@@
-1251,7
+1259,7
@@
static void
free_stringtab (void)
{
if (stringtab)
free_stringtab (void)
{
if (stringtab)
- free (stringtab);
+
x
free (stringtab);
stringtab = NULL;
}
stringtab = NULL;
}
@@
-1339,7
+1347,7
@@
init_lineno (bfd *abfd, long offset, int size)
/* Allocate the desired table, plus a sentinel */
linetab = (char *) xmalloc (size + local_linesz);
/* Allocate the desired table, plus a sentinel */
linetab = (char *) xmalloc (size + local_linesz);
- val = bfd_
read (linetab, size, 1
, abfd);
+ val = bfd_
bread (linetab, size
, abfd);
if (val != size)
return -1;
if (val != size)
return -1;
@@
-1353,7
+1361,7
@@
static void
free_linetab (void)
{
if (linetab)
free_linetab (void)
{
if (linetab)
- free (linetab);
+
x
free (linetab);
linetab = NULL;
}
linetab = NULL;
}
@@
-1421,7
+1429,7
@@
patch_type (struct type *type, struct type *real_type)
if (TYPE_NAME (real_target))
{
if (TYPE_NAME (target))
if (TYPE_NAME (real_target))
{
if (TYPE_NAME (target))
- free (TYPE_NAME (target));
+
x
free (TYPE_NAME (target));
TYPE_NAME (target) = concat (TYPE_NAME (real_target), NULL);
}
}
TYPE_NAME (target) = concat (TYPE_NAME (real_target), NULL);
}
}