diff options
author | obrien <obrien@FreeBSD.org> | 2002-02-01 18:16:02 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-02-01 18:16:02 +0000 |
commit | c9ab9ae440a8066b2c2b85b157b1fdadcf09916a (patch) | |
tree | 086d9d6c8fbd4fc8fe4495059332f66bc0f8d12b /contrib/gcc/mips-tdump.c | |
parent | 2ecfd8bd04b63f335c1ec6295740a4bfd97a4fa6 (diff) | |
download | FreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.zip FreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.tar.gz |
Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
Diffstat (limited to 'contrib/gcc/mips-tdump.c')
-rw-r--r-- | contrib/gcc/mips-tdump.c | 197 |
1 files changed, 70 insertions, 127 deletions
diff --git a/contrib/gcc/mips-tdump.c b/contrib/gcc/mips-tdump.c index 9d3143d..d7040d9 100644 --- a/contrib/gcc/mips-tdump.c +++ b/contrib/gcc/mips-tdump.c @@ -1,31 +1,30 @@ /* Read and manage MIPS symbol tables from object modules. - Copyright (C) 1991, 1994, 1995, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1991, 1994, 1995, 1997, 1998, 1999, 2000, 2001 + Free Software Foundation, Inc. Contributed by hartzell@boulder.colorado.edu, Rewritten by meissner@osf.org. -This file is part of GNU CC. +This file is part of GCC. -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +along with GCC; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ #include "config.h" #include "system.h" - #ifdef index #undef index -#undef rindex #endif #ifndef CROSS_COMPILE #include <a.out.h> @@ -47,45 +46,11 @@ Boston, MA 02111-1307, USA. */ #define MIPS_UNMARK_STAB(code) ((code)-CODE_MASK) #endif -#define __proto(x) PARAMS(x) -typedef PTR PTR_T; -typedef const PTR_T CPTR_T; - #define uchar unsigned char #define ushort unsigned short #define uint unsigned int #define ulong unsigned long - -static void -fatal(s) - const char *s; -{ - fprintf(stderr, "%s\n", s); - exit(FATAL_EXIT_CODE); -} - -/* Same as `malloc' but report error if no memory available. */ -/* Do this before size_t is fiddled with so it matches the prototype - in libiberty.h . */ -PTR -xmalloc (size) - size_t size; -{ - register PTR value = (PTR) malloc (size); - if (value == 0) - fatal ("Virtual memory exhausted."); - return value; -} - -/* Due to size_t being defined in sys/types.h and different - in stddef.h, we have to do this by hand..... Note, these - types are correct for MIPS based systems, and may not be - correct for other systems. */ - -#define size_t uint -#define ptrdiff_t int - /* Redefinition of storage classes as an enumeration for better debugging. */ @@ -261,31 +226,19 @@ ulong *rfile_desc; /* relative file tables */ PDR *proc_desc; /* procedure tables */ /* Forward reference for functions. */ -PTR_T read_seek __proto((PTR_T, size_t, off_t, const char *)); -void read_tfile __proto((void)); -void print_global_hdr __proto((struct filehdr *)); -void print_sym_hdr __proto((HDRR *)); -void print_file_desc __proto((FDR *, int)); -void print_symbol __proto((SYMR *, int, char *, AUXU *, int, FDR *)); -void print_aux __proto((AUXU, int, int)); -void emit_aggregate __proto((char *, AUXU, AUXU, const char *, FDR *)); -const char *st_to_string __proto((st_t)); -const char *sc_to_string __proto((sc_t)); -const char *glevel_to_string __proto((glevel_t)); -const char *lang_to_string __proto((lang_t)); -const char *type_to_string __proto((AUXU *, int, FDR *)); - -#ifndef __alpha -# ifdef NEED_DECLARATION_MALLOC -extern PTR_T malloc __proto((size_t)); -# endif -# ifdef NEED_DECLARATION_CALLOC -extern PTR_T calloc __proto((size_t, size_t)); -# endif -# ifdef NEED_DECLARATION_REALLOC -extern PTR_T realloc __proto((PTR_T, size_t)); -# endif -#endif +static PTR read_seek PARAMS ((PTR, size_t, off_t, const char *)); +static void read_tfile PARAMS ((void)); +static void print_global_hdr PARAMS ((struct filehdr *)); +static void print_sym_hdr PARAMS ((HDRR *)); +static void print_file_desc PARAMS ((FDR *, int)); +static void print_symbol PARAMS ((SYMR *, int, const char *, AUXU *, int, FDR *)); +static void print_aux PARAMS ((AUXU, int, int)); +static void emit_aggregate PARAMS ((char *, AUXU, AUXU, const char *, FDR *)); +static const char *st_to_string PARAMS ((st_t)); +static const char *sc_to_string PARAMS ((sc_t)); +static const char *glevel_to_string PARAMS ((glevel_t)); +static const char *lang_to_string PARAMS ((lang_t)); +static const char *type_to_string PARAMS ((AUXU *, int, FDR *)); extern char *optarg; extern int optind; @@ -294,7 +247,7 @@ extern int opterr; /* Create a table of debugging stab-codes and corresponding names. */ #define __define_stab(NAME, CODE, STRING) {(int)CODE, STRING}, -struct {short code; char string[10];} stab_names[] = { +const struct {const short code; const char string[10];} stab_names[] = { #include "stab.def" #undef __define_stab }; @@ -302,9 +255,9 @@ struct {short code; char string[10];} stab_names[] = { /* Read some bytes at a specified location, and return a pointer. */ -PTR_T +static PTR read_seek (ptr, size, offset, context) - PTR_T ptr; /* pointer to buffer or NULL */ + PTR ptr; /* pointer to buffer or NULL */ size_t size; /* # bytes to read */ off_t offset; /* offset to read at */ const char *context; /* context for error message */ @@ -314,15 +267,17 @@ read_seek (ptr, size, offset, context) if (size == 0) /* nothing to read */ return ptr; - if ((ptr == (PTR_T) 0 && (ptr = malloc (size)) == (PTR_T) 0) - || (tfile_offset != offset && lseek (tfile_fd, offset, 0) == -1) + if (!ptr) + ptr = xmalloc (size); + + if ((tfile_offset != offset && lseek (tfile_fd, offset, 0) == -1) || (read_size = read (tfile_fd, ptr, size)) < 0) { perror (context); exit (1); } - if (read_size != size) + if (read_size != (long) size) { fprintf (stderr, "%s: read %ld bytes, expected %ld bytes\n", context, read_size, (long) size); @@ -336,7 +291,7 @@ read_seek (ptr, size, offset, context) /* Convert language code to string format. */ -const char * +static const char * lang_to_string (lang) lang_t lang; { @@ -359,7 +314,7 @@ lang_to_string (lang) /* Convert storage class to string. */ -const char * +static const char * sc_to_string(storage_class) sc_t storage_class; { @@ -397,7 +352,7 @@ sc_to_string(storage_class) /* Convert symbol type to string. */ -const char * +static const char * st_to_string(symbol_type) st_t symbol_type; { @@ -438,7 +393,7 @@ st_to_string(symbol_type) /* Convert debug level to string. */ -const char * +static const char * glevel_to_string (g_level) glevel_t g_level; { @@ -456,7 +411,7 @@ glevel_to_string (g_level) /* Convert the type information to string format. */ -const char * +static const char * type_to_string (aux_ptr, index, fdp) AUXU *aux_ptr; int index; @@ -769,7 +724,7 @@ type_to_string (aux_ptr, index, fdp) /* Print out the global file header for object files. */ -void +static void print_global_hdr (ptr) struct filehdr *ptr; { @@ -824,7 +779,7 @@ print_global_hdr (ptr) /* Print out the symbolic header. */ -void +static void print_sym_hdr (sym_ptr) HDRR *sym_ptr; { @@ -898,11 +853,11 @@ print_sym_hdr (sym_ptr) /* Print out a symbol. */ -void +static void print_symbol (sym_ptr, number, strbase, aux_base, ifd, fdp) SYMR *sym_ptr; int number; - char *strbase; + const char *strbase; AUXU *aux_base; int ifd; FDR *fdp; @@ -928,7 +883,7 @@ print_symbol (sym_ptr, number, strbase, aux_base, ifd, fdp) if (want_scope) { if (free_scope == (scope_t *) 0) - scope_ptr = (scope_t *) malloc (sizeof (scope_t)); + scope_ptr = (scope_t *) xmalloc (sizeof (scope_t)); else { scope_ptr = free_scope; @@ -982,7 +937,7 @@ print_symbol (sym_ptr, number, strbase, aux_base, ifd, fdp) if (want_scope) { if (free_scope == (scope_t *) 0) - scope_ptr = (scope_t *) malloc (sizeof (scope_t)); + scope_ptr = (scope_t *) xmalloc (sizeof (scope_t)); else { scope_ptr = free_scope; @@ -1056,9 +1011,10 @@ print_symbol (sym_ptr, number, strbase, aux_base, ifd, fdp) if (MIPS_IS_STAB(sym_ptr)) { - register int i = sizeof(stab_names) / sizeof(stab_names[0]); + int i = ARRAY_SIZE (stab_names); const char *stab_name = "stab"; short code = MIPS_UNMARK_STAB(sym_ptr->index); + while (--i >= 0) if (stab_names[i].code == code) { @@ -1077,7 +1033,7 @@ print_symbol (sym_ptr, number, strbase, aux_base, ifd, fdp) /* Print out a word from the aux. table in various formats. */ -void +static void print_aux (u, auxi, used) AUXU u; int auxi; @@ -1103,7 +1059,7 @@ print_aux (u, auxi, used) /* Write aggregate information to a string. */ -void +static void emit_aggregate (string, u, u2, which, fdp) char *string; AUXU u; @@ -1143,7 +1099,7 @@ emit_aggregate (string, u, u2, which, fdp) /* Print out information about a file descriptor, and the symbols, procedures, and line numbers within it. */ -void +static void print_file_desc (fdp, number) FDR *fdp; int number; @@ -1371,18 +1327,18 @@ print_file_desc (fdp, number) /* Read in the portions of the .T file that we will print out. */ -void -read_tfile __proto((void)) +static void +read_tfile () { short magic; off_t sym_hdr_offset = 0; - (void) read_seek ((PTR_T) &magic, sizeof (magic), (off_t) 0, "Magic number"); + (void) read_seek ((PTR) &magic, sizeof (magic), (off_t) 0, "Magic number"); if (!tfile) { /* Print out the global header, since this is not a T-file. */ - (void) read_seek ((PTR_T) &global_hdr, sizeof (global_hdr), (off_t) 0, + (void) read_seek ((PTR) &global_hdr, sizeof (global_hdr), (off_t) 0, "Global file header"); print_global_hdr (&global_hdr); @@ -1396,74 +1352,67 @@ read_tfile __proto((void)) sym_hdr_offset = global_hdr.f_symptr; } - (void) read_seek ((PTR_T) &sym_hdr, + (void) read_seek ((PTR) &sym_hdr, sizeof (sym_hdr), sym_hdr_offset, "Symbolic header"); print_sym_hdr (&sym_hdr); - lines = (LINER *) read_seek ((PTR_T) 0, + lines = (LINER *) read_seek (NULL, sym_hdr.cbLine, sym_hdr.cbLineOffset, "Line numbers"); - dense_nums = (DNR *) read_seek ((PTR_T) 0, + dense_nums = (DNR *) read_seek (NULL, sym_hdr.idnMax * sizeof (DNR), sym_hdr.cbDnOffset, "Dense numbers"); - proc_desc = (PDR *) read_seek ((PTR_T) 0, + proc_desc = (PDR *) read_seek (NULL, sym_hdr.ipdMax * sizeof (PDR), sym_hdr.cbPdOffset, "Procedure tables"); - l_symbols = (SYMR *) read_seek ((PTR_T) 0, + l_symbols = (SYMR *) read_seek (NULL, sym_hdr.isymMax * sizeof (SYMR), sym_hdr.cbSymOffset, "Local symbols"); - opt_symbols = (OPTR *) read_seek ((PTR_T) 0, + opt_symbols = (OPTR *) read_seek (NULL, sym_hdr.ioptMax * sizeof (OPTR), sym_hdr.cbOptOffset, "Optimization symbols"); - aux_symbols = (AUXU *) read_seek ((PTR_T) 0, + aux_symbols = (AUXU *) read_seek (NULL, sym_hdr.iauxMax * sizeof (AUXU), sym_hdr.cbAuxOffset, "Auxiliary symbols"); if (sym_hdr.iauxMax > 0) - { - aux_used = calloc (sym_hdr.iauxMax, 1); - if (aux_used == (char *) 0) - { - perror ("calloc"); - exit (1); - } - } + aux_used = xcalloc (sym_hdr.iauxMax, 1); - l_strings = (char *) read_seek ((PTR_T) 0, + l_strings = (char *) read_seek (NULL, sym_hdr.issMax, sym_hdr.cbSsOffset, "Local string table"); - e_strings = (char *) read_seek ((PTR_T) 0, + e_strings = (char *) read_seek (NULL, sym_hdr.issExtMax, sym_hdr.cbSsExtOffset, "External string table"); - file_desc = (FDR *) read_seek ((PTR_T) 0, + file_desc = (FDR *) read_seek (NULL, sym_hdr.ifdMax * sizeof (FDR), sym_hdr.cbFdOffset, "File tables"); - rfile_desc = (ulong *) read_seek ((PTR_T) 0, + rfile_desc = (ulong *) read_seek (NULL, sym_hdr.crfd * sizeof (ulong), sym_hdr.cbRfdOffset, "Relative file tables"); - e_symbols = (EXTR *) read_seek ((PTR_T) 0, + e_symbols = (EXTR *) read_seek (NULL, sym_hdr.iextMax * sizeof (EXTR), sym_hdr.cbExtOffset, "External symbols"); @@ -1471,6 +1420,8 @@ read_tfile __proto((void)) +extern int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -1596,11 +1547,3 @@ main (argc, argv) return 0; } - - -void -fancy_abort () -{ - fprintf (stderr, "mips-tdump internal error"); - exit (1); -} |