aboutsummaryrefslogtreecommitdiff
path: root/binutils/objdump.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1994-01-17 22:03:42 +0000
committerStan Shebs <shebs@codesourcery.com>1994-01-17 22:03:42 +0000
commitfe2750e101480876387020fa5b59996d06ca1b42 (patch)
tree08410abfd9367561f09f69733f1a18bf110d01d0 /binutils/objdump.c
parent446918c82c7c056cb0858b501e41e31ffd244ae9 (diff)
downloadgdb-fe2750e101480876387020fa5b59996d06ca1b42.zip
gdb-fe2750e101480876387020fa5b59996d06ca1b42.tar.gz
gdb-fe2750e101480876387020fa5b59996d06ca1b42.tar.bz2
Mon Jan 17 13:57:25 1994 Stan Shebs (shebs@andros.cygnus.com)
* objdump.c (stab_name): Allocate dynamically. (stab_print): Use pointers to strings instead of char arrays. (dump_stabs): Change alloc and init of arrays appropriately. (dump_stabs_1): Always decide whether to print stab_name or the stab's type number, if unnamed.
Diffstat (limited to 'binutils/objdump.c')
-rw-r--r--binutils/objdump.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c
index b2eaae3..46474af 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -639,13 +639,11 @@ disassemble_data (abfd)
could be a direct-mapped table, but instead we build one the first
time we need it. */
-#define STAB_STRING_LENGTH 6
-
-char stab_name[256][STAB_STRING_LENGTH];
+char **stab_name;
struct stab_print {
int value;
- char string[STAB_STRING_LENGTH];
+ char *string;
};
struct stab_print stab_print[] = {
@@ -667,16 +665,16 @@ dump_stabs (abfd)
{
int i;
- /* Initialize stab name array if first time. */
- if (stab_name[0][0] == 0)
+ /* Allocate and initialize stab name array if first time. */
+ if (stab_name == NULL)
{
- /* Fill in numeric values for all possible strings. */
+ stab_name = (char **) xmalloc (256 * sizeof(char *));
+ /* Clear the array. */
for (i = 0; i < 256; i++)
- {
- sprintf (stab_name[i], "%d", i);
- }
- for (i = 0; stab_print[i].string[0]; i++)
- strcpy (stab_name[stab_print[i].value], stab_print[i].string);
+ stab_name[i] = NULL;
+ /* Fill in the defined stabs. */
+ for (i = 0; *stab_print[i].string; i++)
+ stab_name[stab_print[i].value] = stab_print[i].string;
}
dump_stabs_1 (abfd, ".stab", ".stabstr");
@@ -794,9 +792,14 @@ dump_stabs_1 (abfd, name1, name2)
for (i = -1; stabs < stabs_end; stabs++, i++)
{
SWAP_SYMBOL (stabs, abfd);
- printf ("\n%-6d %-6s %-6d %-6d ", i,
- stab_name [stabs->n_type],
- stabs->n_other, stabs->n_desc);
+ printf ("\n%-6d ", i);
+ /* Print either the stab name, or, if unnamed, print its number
+ again (makes consistent formatting for tools like awk). */
+ if (stab_name[stabs->n_type])
+ printf ("%-6s", stab_name[stabs->n_type]);
+ else
+ printf ("%-6d", i);
+ printf (" %-6d %-6d ", stabs->n_other, stabs->n_desc);
printf_vma (stabs->n_value);
printf (" %-6lu", stabs->n_strx);