diff options
Diffstat (limited to 'bfd/stab-syms.c')
-rw-r--r-- | bfd/stab-syms.c | 61 |
1 files changed, 39 insertions, 22 deletions
diff --git a/bfd/stab-syms.c b/bfd/stab-syms.c index 209c8a4..b227af6 100644 --- a/bfd/stab-syms.c +++ b/bfd/stab-syms.c @@ -1,5 +1,5 @@ /* Table of stab names for the BFD library. - Copyright (C) 1990-1991 Free Software Foundation, Inc. + Copyright (C) 1990, 91, 92, 93, 94, 1995 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -20,40 +20,57 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "bfd.h" -#define ARCH_SIZE 32 /* Value doesn't matter. */ +#define ARCH_SIZE 32 /* Value doesn't matter. */ +#include <stdio.h> /* Required by bfdlink.h, from libaout.h */ #include "libaout.h" -#include "aout64.h" +#include "aout/aout64.h" /* Create a table of debugging stab-codes and corresponding names. */ -#define __define_name(CODE, STRING) {(int)CODE, STRING}, #define __define_stab(NAME, CODE, STRING) __define_name(CODE, STRING) -struct {short code; char string[10];} aout_stab_names[] - = { -#include "stab.def" /* These are not really stab symbols, but it is convenient to have them here for the sake of nm. For completeness, we could also add N_TEXT etc, but those are never needed, since nm treats those specially. */ -__define_name (N_SETA, "SETA") /* Absolute set element symbol */ -__define_name (N_SETT, "SETT") /* Text set element symbol */ -__define_name (N_SETD, "SETD") /* Data set element symbol */ -__define_name (N_SETB, "SETB") /* Bss set element symbol */ -__define_name (N_SETV, "SETV") /* Pointer to set vector in data area. */ -__define_name (N_INDR, "INDR") -__define_name (N_WARNING, "WARNING") - }; -#undef __define_stab -#undef GNU_EXTRA_STABS - -char * -DEFUN(aout_stab_name,(code), -int code) +#define EXTRA_SYMBOLS \ + __define_name (N_SETA, "SETA")/* Absolute set element symbol */ \ + __define_name (N_SETT, "SETT")/* Text set element symbol */ \ + __define_name (N_SETD, "SETD")/* Data set element symbol */ \ + __define_name (N_SETB, "SETB")/* Bss set element symbol */ \ + __define_name (N_SETV, "SETV")/* Pointer to set vector in data area. */ \ + __define_name (N_INDR, "INDR") \ + __define_name (N_WARNING, "WARNING") + +CONST char * +aout_stab_name (code) + int code; { - register int i = sizeof(aout_stab_names) / sizeof(aout_stab_names[0]); +#if 0 /* This lookup table is slower than lots of explicit tests, at + least on the i386. One advantage is that the compiler can + eliminate duplicates from the code, whereas they can't easily + be eliminated from the lookup table. */ + +#define __define_name(CODE, STRING) {(int)CODE, STRING}, + static const struct { + int code; + char string[7]; + } aout_stab_names[] = { +#include "aout/stab.def" + EXTRA_SYMBOLS + }; + register int i = sizeof (aout_stab_names) / sizeof (aout_stab_names[0]); while (--i >= 0) if (aout_stab_names[i].code == code) return aout_stab_names[i].string; + +#else + +#define __define_name(val, str) if (val == code) return str ; +#include "aout/stab.def" + EXTRA_SYMBOLS + +#endif + return 0; } |