Commit | Line | Data |
---|---|---|
c3a1a56b | 1 | /* Table of stab names for the BFD library. |
033d545b | 2 | Copyright (C) 1990, 91, 92, 93, 94, 1995 Free Software Foundation, Inc. |
c3a1a56b PB |
3 | Written by Cygnus Support. |
4 | ||
5 | This file is part of BFD, the Binary File Descriptor library. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program; if not, write to the Free Software | |
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
20 | ||
21 | #include "bfd.h" | |
22 | ||
033d545b | 23 | #define ARCH_SIZE 32 /* Value doesn't matter. */ |
c3a1a56b | 24 | #include "libaout.h" |
033d545b | 25 | #include "aout/aout64.h" |
c3a1a56b PB |
26 | |
27 | /* Create a table of debugging stab-codes and corresponding names. */ | |
28 | ||
c3a1a56b | 29 | #define __define_stab(NAME, CODE, STRING) __define_name(CODE, STRING) |
c3a1a56b PB |
30 | |
31 | /* These are not really stab symbols, but it is | |
32 | convenient to have them here for the sake of nm. | |
33 | For completeness, we could also add N_TEXT etc, but those | |
34 | are never needed, since nm treats those specially. */ | |
033d545b FF |
35 | #define EXTRA_SYMBOLS \ |
36 | __define_name (N_SETA, "SETA")/* Absolute set element symbol */ \ | |
37 | __define_name (N_SETT, "SETT")/* Text set element symbol */ \ | |
38 | __define_name (N_SETD, "SETD")/* Data set element symbol */ \ | |
39 | __define_name (N_SETB, "SETB")/* Bss set element symbol */ \ | |
40 | __define_name (N_SETV, "SETV")/* Pointer to set vector in data area. */ \ | |
41 | __define_name (N_INDR, "INDR") \ | |
42 | __define_name (N_WARNING, "WARNING") | |
43 | ||
44 | CONST char * | |
45 | aout_stab_name (code) | |
46 | int code; | |
c3a1a56b | 47 | { |
033d545b FF |
48 | #if 0 /* This lookup table is slower than lots of explicit tests, at |
49 | least on the i386. One advantage is that the compiler can | |
50 | eliminate duplicates from the code, whereas they can't easily | |
51 | be eliminated from the lookup table. */ | |
52 | ||
53 | #define __define_name(CODE, STRING) {(int)CODE, STRING}, | |
54 | static const struct { | |
55 | int code; | |
56 | char string[7]; | |
57 | } aout_stab_names[] = { | |
58 | #include "aout/stab.def" | |
59 | EXTRA_SYMBOLS | |
60 | }; | |
61 | register int i = sizeof (aout_stab_names) / sizeof (aout_stab_names[0]); | |
c3a1a56b PB |
62 | while (--i >= 0) |
63 | if (aout_stab_names[i].code == code) | |
64 | return aout_stab_names[i].string; | |
033d545b FF |
65 | |
66 | #else | |
67 | ||
68 | #define __define_name(val, str) if (val == code) return str ; | |
69 | #include "aout/stab.def" | |
70 | EXTRA_SYMBOLS | |
71 | ||
72 | #endif | |
73 | ||
c3a1a56b PB |
74 | return 0; |
75 | } |