* 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:
K. Richard Pixley 1993-02-17 21:58:25 +00:00
parent 9549404ee4
commit 040b959771
2 changed files with 35 additions and 194 deletions

View File

@ -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.)

View File

@ -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);
}