X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fstab-syms.c;h=a685e31eb81879716044e2b94e6cb727dc5bd9ab;hb=e19f872c5bec6fbb9476abdc4ea5cee44da598e2;hp=16cd6973e8d30af4452dc778caeb7e6d595fb386;hpb=e98fe4f7b54cbdf29aef9287bbb1bea8801dd05a;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/stab-syms.c b/bfd/stab-syms.c index 16cd6973e8..a685e31eb8 100644 --- a/bfd/stab-syms.c +++ b/bfd/stab-syms.c @@ -1,5 +1,6 @@ /* Table of stab names for the BFD library. - Copyright (C) 1990, 91, 92, 93, 94, 1995 Free Software Foundation, Inc. + Copyright 1990, 1991, 1992, 1994, 1995, 1996, 2000 + Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -16,60 +17,42 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" -#define ARCH_SIZE 32 /* Value doesn't matter. */ +#define ARCH_SIZE 32 /* Value doesn't matter. */ #include "libaout.h" #include "aout/aout64.h" -/* Create a table of debugging stab-codes and corresponding names. */ - +/* Ignore duplicate stab codes; just return the string for the first + one. */ #define __define_stab(NAME, CODE, STRING) __define_name(CODE, STRING) +#define __define_stab_duplicate(NAME, CODE, STRING) /* 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. */ + are never needed, since nm treats those specially. */ #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_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) +const char * +bfd_get_stab_name (code) int code; { -#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 ; + switch (code) + { +#define __define_name(val, str) case val: return str; #include "aout/stab.def" - EXTRA_SYMBOLS - -#endif + EXTRA_SYMBOLS + } - return 0; + return (const char *) 0; }