* dbxread.c (process_one_symbol): cast enum value N_SO into int when
comparing against an int. Avoids superfluous warning from vax ultrix 4.2 cc.
This commit is contained in:
parent
9549404ee4
commit
040b959771
@ -1,5 +1,9 @@
|
||||
Wed Feb 17 13:40:29 1993 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* dbxread.c (process_one_symbol): cast enum value N_SO into int
|
||||
when comparing against an int. Avoids superfluous warning from
|
||||
vax ultrix 4.2 cc.
|
||||
|
||||
* inflow.c (set_sigint_trap): add cast to assignment from signal.
|
||||
Avoids superfluous warnings from some systems and/or compilers
|
||||
(like vax ultrix 4.2.)
|
||||
|
225
gdb/dbxread.c
225
gdb/dbxread.c
@ -41,11 +41,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#define L_INCR 1
|
||||
#endif
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
/* We don't want to use HP-UX's nlists. */
|
||||
#define _NLIST_INCLUDED
|
||||
#endif
|
||||
|
||||
#include <obstack.h>
|
||||
#include <sys/param.h>
|
||||
#ifndef NO_SYS_FILE
|
||||
@ -59,12 +54,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include "target.h"
|
||||
#include "gdbcore.h" /* for bfd stuff */
|
||||
#include "libbfd.h" /* FIXME Secret internal BFD stuff (bfd_read) */
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
#include "libhppa.h"
|
||||
#include "syms.h"
|
||||
#else
|
||||
#include "libaout.h" /* FIXME Secret internal BFD stuff for a.out */
|
||||
#endif
|
||||
#include "symfile.h"
|
||||
#include "objfiles.h"
|
||||
#include "buildsym.h"
|
||||
@ -470,11 +460,7 @@ dbx_symfile_read (objfile, section_offsets, mainline)
|
||||
if (mainline || objfile->global_psymbols.size == 0 || objfile->static_psymbols.size == 0)
|
||||
init_psymbol_list (objfile);
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
symbol_size = obj_dbx_symbol_entry_size (sym_bfd);
|
||||
#else
|
||||
symbol_size = DBX_SYMBOL_SIZE (objfile);
|
||||
#endif
|
||||
symbol_table_offset = DBX_SYMTAB_OFFSET (objfile);
|
||||
|
||||
pending_blocks = 0;
|
||||
@ -536,22 +522,16 @@ dbx_symfile_init (objfile)
|
||||
int val;
|
||||
bfd *sym_bfd = objfile->obfd;
|
||||
char *name = bfd_get_filename (sym_bfd);
|
||||
unsigned char size_temp[4];
|
||||
unsigned char size_temp[sizeof(long)];
|
||||
|
||||
/* Allocate struct to keep track of the symfile */
|
||||
objfile->sym_private = (PTR)
|
||||
xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info));
|
||||
|
||||
/* FIXME POKING INSIDE BFD DATA STRUCTURES */
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
#define STRING_TABLE_OFFSET (sym_bfd->origin + obj_dbx_str_filepos (sym_bfd))
|
||||
#define SYMBOL_TABLE_OFFSET (sym_bfd->origin + obj_dbx_sym_filepos (sym_bfd))
|
||||
#define HP_STRING_TABLE_OFFSET (sym_bfd->origin + obj_hp_str_filepos (sym_bfd))
|
||||
#define HP_SYMBOL_TABLE_OFFSET (sym_bfd->origin + obj_hp_sym_filepos (sym_bfd))
|
||||
#else
|
||||
#define STRING_TABLE_OFFSET (sym_bfd->origin + obj_str_filepos (sym_bfd))
|
||||
#define SYMBOL_TABLE_OFFSET (sym_bfd->origin + obj_sym_filepos (sym_bfd))
|
||||
#endif
|
||||
|
||||
/* FIXME POKING INSIDE BFD DATA STRUCTURES */
|
||||
|
||||
DBX_SYMFILE_INFO (objfile)->stab_section_info = NULL;
|
||||
@ -559,13 +539,8 @@ dbx_symfile_init (objfile)
|
||||
if (!DBX_TEXT_SECT (objfile))
|
||||
error ("Can't find .text section in symbol file");
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
HP_SYMCOUNT (objfile) = obj_hp_sym_count (sym_bfd);
|
||||
DBX_SYMCOUNT (objfile) = obj_dbx_sym_count (sym_bfd);
|
||||
#else
|
||||
DBX_SYMBOL_SIZE (objfile) = obj_symbol_entry_size (sym_bfd);
|
||||
DBX_SYMCOUNT (objfile) = bfd_get_symcount (sym_bfd);
|
||||
#endif
|
||||
DBX_SYMTAB_OFFSET (objfile) = SYMBOL_TABLE_OFFSET;
|
||||
|
||||
/* Read the string table and stash it away in the psymbol_obstack. It is
|
||||
@ -580,10 +555,6 @@ dbx_symfile_init (objfile)
|
||||
however at least check to see if the size is zero or some negative
|
||||
value. */
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
DBX_STRINGTAB_SIZE (objfile) = obj_dbx_stringtab_size (sym_bfd);
|
||||
HP_STRINGTAB_SIZE (objfile) = obj_hp_stringtab_size (sym_bfd);
|
||||
#else
|
||||
val = bfd_seek (sym_bfd, STRING_TABLE_OFFSET, L_SET);
|
||||
if (val < 0)
|
||||
perror_with_name (name);
|
||||
@ -593,7 +564,6 @@ dbx_symfile_init (objfile)
|
||||
perror_with_name (name);
|
||||
|
||||
DBX_STRINGTAB_SIZE (objfile) = bfd_h_get_32 (sym_bfd, size_temp);
|
||||
#endif
|
||||
|
||||
if (DBX_STRINGTAB_SIZE (objfile) <= 0
|
||||
|| DBX_STRINGTAB_SIZE (objfile) > bfd_get_size (sym_bfd))
|
||||
@ -603,16 +573,6 @@ dbx_symfile_init (objfile)
|
||||
DBX_STRINGTAB (objfile) =
|
||||
(char *) obstack_alloc (&objfile -> psymbol_obstack,
|
||||
DBX_STRINGTAB_SIZE (objfile));
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
if (HP_STRINGTAB_SIZE (objfile) <= 0
|
||||
|| HP_STRINGTAB_SIZE (objfile) > bfd_get_size (sym_bfd))
|
||||
error ("ridiculous string table size (%d bytes).",
|
||||
HP_STRINGTAB_SIZE (objfile));
|
||||
|
||||
HP_STRINGTAB (objfile) =
|
||||
(char *) obstack_alloc (&objfile -> psymbol_obstack,
|
||||
HP_STRINGTAB_SIZE (objfile));
|
||||
#endif
|
||||
|
||||
/* Now read in the string table in one big gulp. */
|
||||
|
||||
@ -623,18 +583,6 @@ dbx_symfile_init (objfile)
|
||||
sym_bfd);
|
||||
if (val != DBX_STRINGTAB_SIZE (objfile))
|
||||
perror_with_name (name);
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
val = bfd_seek (sym_bfd, HP_STRING_TABLE_OFFSET, L_SET);
|
||||
if (val < 0)
|
||||
perror_with_name (name);
|
||||
val = bfd_read (HP_STRINGTAB (objfile), HP_STRINGTAB_SIZE (objfile), 1,
|
||||
sym_bfd);
|
||||
if (val != HP_STRINGTAB_SIZE (objfile))
|
||||
perror_with_name (name);
|
||||
#endif
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
HP_SYMTAB_OFFSET (objfile) = HP_SYMBOL_TABLE_OFFSET;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Perform any local cleanups required when we are done with a particular
|
||||
@ -688,25 +636,6 @@ fill_symbuf (sym_bfd)
|
||||
symbuf_end = nbytes / symbol_size;
|
||||
symbuf_idx = 0;
|
||||
}
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
/* same as above for the HP symbol table */
|
||||
|
||||
static struct symbol_dictionary_record hp_symbuf[4096];
|
||||
static int hp_symbuf_idx;
|
||||
static int hp_symbuf_end;
|
||||
|
||||
static int
|
||||
fill_hp_symbuf (sym_bfd)
|
||||
bfd *sym_bfd;
|
||||
{
|
||||
int nbytes = bfd_read ((PTR)hp_symbuf, sizeof (hp_symbuf), 1, sym_bfd);
|
||||
if (nbytes <= 0)
|
||||
error ("error or end of file reading symbol table");
|
||||
hp_symbuf_end = nbytes / sizeof (struct symbol_dictionary_record);
|
||||
hp_symbuf_idx = 0;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define SWAP_SYMBOL(symp, abfd) \
|
||||
{ \
|
||||
@ -754,15 +683,8 @@ init_psymbol_list (objfile)
|
||||
/* Current best guess is that there are approximately a twentieth
|
||||
of the total symbols (in a debugging file) are global or static
|
||||
oriented symbols */
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
objfile -> global_psymbols.size = (DBX_SYMCOUNT (objfile) +
|
||||
HP_SYMCOUNT (objfile)) / 10;
|
||||
objfile -> static_psymbols.size = (DBX_SYMCOUNT (objfile) +
|
||||
HP_SYMCOUNT (objfile)) / 10;
|
||||
#else
|
||||
objfile -> global_psymbols.size = DBX_SYMCOUNT (objfile) / 10;
|
||||
objfile -> static_psymbols.size = DBX_SYMCOUNT (objfile) / 10;
|
||||
#endif
|
||||
objfile -> global_psymbols.next = objfile -> global_psymbols.list = (struct partial_symbol *)
|
||||
xmmalloc (objfile -> md, objfile -> global_psymbols.size * sizeof (struct partial_symbol));
|
||||
objfile -> static_psymbols.next = objfile -> static_psymbols.list = (struct partial_symbol *)
|
||||
@ -854,14 +776,6 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size)
|
||||
CORE_ADDR last_o_file_start = 0;
|
||||
struct cleanup *old_chain;
|
||||
bfd *abfd;
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
/* HP stuff */
|
||||
struct symbol_dictionary_record *hp_bufp;
|
||||
int hp_symnum;
|
||||
/* A hack: the first text symbol in the debugging library */
|
||||
int dbsubc_addr = 0;
|
||||
#endif
|
||||
|
||||
|
||||
/* End of the text segment of the executable file. */
|
||||
CORE_ADDR end_of_text_addr;
|
||||
@ -883,11 +797,7 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size)
|
||||
file_string_table_offset = 0;
|
||||
next_file_string_table_offset = 0;
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
stringtab_global = HP_STRINGTAB (objfile);
|
||||
#else
|
||||
stringtab_global = DBX_STRINGTAB (objfile);
|
||||
#endif
|
||||
|
||||
pst = (struct partial_symtab *) 0;
|
||||
|
||||
@ -922,75 +832,6 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size)
|
||||
symbuf_end = symbuf_idx = 0;
|
||||
next_symbol_text_func = dbx_next_symbol_text;
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
/* On pa machines, the global symbols are all in the regular HP-UX
|
||||
symbol table. Read them in first. */
|
||||
|
||||
hp_symbuf_end = hp_symbuf_idx = 0;
|
||||
bfd_seek (abfd, HP_SYMTAB_OFFSET (objfile), L_SET);
|
||||
|
||||
for (hp_symnum = 0; hp_symnum < HP_SYMCOUNT (objfile); hp_symnum++)
|
||||
{
|
||||
int dbx_type;
|
||||
|
||||
QUIT;
|
||||
if (hp_symbuf_idx == hp_symbuf_end)
|
||||
fill_hp_symbuf (abfd);
|
||||
hp_bufp = &hp_symbuf[hp_symbuf_idx++];
|
||||
switch (hp_bufp->symbol_type)
|
||||
{
|
||||
case ST_SYM_EXT:
|
||||
case ST_ARG_EXT:
|
||||
continue;
|
||||
case ST_CODE:
|
||||
case ST_PRI_PROG:
|
||||
case ST_SEC_PROG:
|
||||
case ST_ENTRY:
|
||||
case ST_MILLICODE:
|
||||
dbx_type = N_TEXT;
|
||||
hp_bufp->symbol_value &= ~3; /* clear out permission bits */
|
||||
break;
|
||||
case ST_DATA:
|
||||
dbx_type = N_DATA;
|
||||
break;
|
||||
#ifdef KERNELDEBUG
|
||||
case ST_ABSOLUTE:
|
||||
{
|
||||
extern int kernel_debugging;
|
||||
if (!kernel_debugging)
|
||||
continue;
|
||||
dbx_type = N_ABS;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
/* Use the address of dbsubc to finish the last psymtab. */
|
||||
if (hp_bufp->symbol_type == ST_CODE &&
|
||||
HP_STRINGTAB (objfile)[hp_bufp->name.n_strx] == '_' &&
|
||||
STREQ (HP_STRINGTAB (objfile) + hp_bufp->name.n_strx, "_dbsubc"))
|
||||
dbsubc_addr = hp_bufp->symbol_value;
|
||||
if (hp_bufp->symbol_scope == SS_UNIVERSAL)
|
||||
{
|
||||
if (hp_bufp->name.n_strx > HP_STRINGTAB_SIZE (objfile))
|
||||
error ("Invalid symbol data; bad HP string table offset: %d",
|
||||
hp_bufp->name.n_strx);
|
||||
/* A hack, but gets the job done. */
|
||||
if (STREQ (hp_bufp->name.n_strx + HP_STRINGTAB (objfile),
|
||||
"$START$"))
|
||||
objfile -> ei.entry_file_lowpc = hp_bufp->symbol_value;
|
||||
if (STREQ (hp_bufp->name.n_strx + HP_STRINGTAB (objfile),
|
||||
"_sr4export"))
|
||||
objfile -> ei.entry_file_highpc = hp_bufp->symbol_value;
|
||||
record_minimal_symbol (hp_bufp->name.n_strx + HP_STRINGTAB (objfile),
|
||||
hp_bufp->symbol_value, dbx_type | N_EXT,
|
||||
objfile);
|
||||
}
|
||||
}
|
||||
bfd_seek (abfd, DBX_SYMTAB_OFFSET (objfile), L_SET);
|
||||
#endif
|
||||
|
||||
for (symnum = 0; symnum < DBX_SYMCOUNT (objfile); symnum++)
|
||||
{
|
||||
/* Get the symbol for this run and pull out some info */
|
||||
@ -1044,7 +885,6 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size)
|
||||
}
|
||||
|
||||
/* If there's stuff to be cleaned up, clean it up. */
|
||||
#ifndef GDB_TARGET_IS_HPPA
|
||||
if (DBX_SYMCOUNT (objfile) > 0 /* We have some syms */
|
||||
/*FIXME, does this have a bug at start address 0? */
|
||||
&& last_o_file_start
|
||||
@ -1054,19 +894,12 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size)
|
||||
objfile -> ei.entry_file_lowpc = last_o_file_start;
|
||||
objfile -> ei.entry_file_highpc = bufp->n_value;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pst)
|
||||
{
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
end_psymtab (pst, psymtab_include_list, includes_used,
|
||||
symnum * symbol_size, dbsubc_addr,
|
||||
dependency_list, dependencies_used);
|
||||
#else
|
||||
end_psymtab (pst, psymtab_include_list, includes_used,
|
||||
symnum * symbol_size, end_of_text_addr,
|
||||
dependency_list, dependencies_used);
|
||||
#endif
|
||||
}
|
||||
|
||||
free_bincl_list (objfile);
|
||||
@ -1358,11 +1191,7 @@ dbx_psymtab_to_symtab_1 (pst)
|
||||
buildsym_init ();
|
||||
old_chain = make_cleanup (really_free_pendings, 0);
|
||||
file_string_table_offset = FILE_STRING_OFFSET (pst);
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
symbol_size = obj_dbx_symbol_entry_size (pst->objfile->obfd);
|
||||
#else
|
||||
symbol_size = SYMBOL_SIZE (pst);
|
||||
#endif
|
||||
|
||||
/* Read in this file's symbols */
|
||||
bfd_seek (pst->objfile->obfd, SYMBOL_OFFSET (pst), L_SET);
|
||||
@ -1454,11 +1283,7 @@ read_ofile_symtab (objfile, sym_offset, sym_size, text_offset, text_size,
|
||||
current_objfile = objfile;
|
||||
subfile_stack = NULL;
|
||||
|
||||
#ifdef GDB_TARGET_IS_HPPA
|
||||
stringtab_global = HP_STRINGTAB (objfile);
|
||||
#else
|
||||
stringtab_global = DBX_STRINGTAB (objfile);
|
||||
#endif
|
||||
last_source_file = NULL;
|
||||
|
||||
abfd = objfile->obfd;
|
||||
@ -1825,7 +1650,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
|
||||
sanity checks). If so, that one was actually the directory
|
||||
name, and the current one is the real file name.
|
||||
Patch things up. */
|
||||
if (previous_stab_code == N_SO)
|
||||
if (previous_stab_code == (int) N_SO)
|
||||
{
|
||||
patch_subfile_names (current_subfile, name);
|
||||
break; /* Ignore repeated SOs */
|
||||
@ -2126,10 +1951,37 @@ elfstab_build_psymtabs (objfile, section_offsets, mainline,
|
||||
dbx_symfile_read (objfile, section_offsets, 0);
|
||||
}
|
||||
|
||||
/* Scan and build partial symbols for a PA symbol file.
|
||||
This PA file has already been processed to get its minimal symbols.
|
||||
|
||||
OBJFILE is the object file we are reading symbols from.
|
||||
ADDR is the address relative to which the symbols are (e.g.
|
||||
the base address of the text segment).
|
||||
MAINLINE is true if we are reading the main symbol
|
||||
table (as opposed to a shared lib or dynamically loaded file).
|
||||
|
||||
*/
|
||||
|
||||
void
|
||||
pastab_build_psymtabs (objfile, section_offsets, mainline)
|
||||
struct objfile *objfile;
|
||||
struct section_offsets *section_offsets;
|
||||
int mainline;
|
||||
{
|
||||
free_header_files ();
|
||||
init_header_files ();
|
||||
|
||||
/* In a PA file, we've already installed the minimal symbols that came
|
||||
from the PA (non-stab) symbol table, so always act like an
|
||||
incremental load here. */
|
||||
|
||||
dbx_symfile_read (objfile, section_offsets, mainline);
|
||||
}
|
||||
|
||||
/* Parse the user's idea of an offset for dynamic linking, into our idea
|
||||
of how to represent it for fast symbol reading. */
|
||||
|
||||
struct section_offsets *
|
||||
static struct section_offsets *
|
||||
dbx_symfile_offsets (objfile, addr)
|
||||
struct objfile *objfile;
|
||||
CORE_ADDR addr;
|
||||
@ -2186,25 +2038,10 @@ static struct sym_fns bout_sym_fns =
|
||||
NULL /* next: pointer to next struct sym_fns */
|
||||
};
|
||||
|
||||
/* This is probably a mistake. FIXME. Why can't the HP's use an ordinary
|
||||
file format name with an -hppa suffix? */
|
||||
static struct sym_fns hppa_sym_fns =
|
||||
{
|
||||
"hppa", /* sym_name: name or name prefix of BFD target type */
|
||||
4, /* sym_namelen: number of significant sym_name chars */
|
||||
dbx_new_init, /* sym_new_init: init anything gbl to entire symtab */
|
||||
dbx_symfile_init, /* sym_init: read initial info, setup for sym_read() */
|
||||
dbx_symfile_read, /* sym_read: read a symbol file into symtab */
|
||||
dbx_symfile_finish, /* sym_finish: finished with file, cleanup */
|
||||
dbx_symfile_offsets, /* sym_offsets: parse user's offsets to internal form */
|
||||
NULL /* next: pointer to next struct sym_fns */
|
||||
};
|
||||
|
||||
void
|
||||
_initialize_dbxread ()
|
||||
{
|
||||
add_symtab_fns(&sunos_sym_fns);
|
||||
add_symtab_fns(&aout_sym_fns);
|
||||
add_symtab_fns(&bout_sym_fns);
|
||||
add_symtab_fns(&hppa_sym_fns);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user