summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/mips-tdump.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2002-02-01 18:16:02 +0000
committerobrien <obrien@FreeBSD.org>2002-02-01 18:16:02 +0000
commitc9ab9ae440a8066b2c2b85b157b1fdadcf09916a (patch)
tree086d9d6c8fbd4fc8fe4495059332f66bc0f8d12b /contrib/gcc/mips-tdump.c
parent2ecfd8bd04b63f335c1ec6295740a4bfd97a4fa6 (diff)
downloadFreeBSD-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.c197
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);
-}
OpenPOWER on IntegriCloud