version 1.11, 2001/05/31 16:28:51 |
version 1.12, 2001/08/16 15:45:05 |
|
|
int print_only_undefined_symbols; |
int print_only_undefined_symbols; |
int print_all_symbols; |
int print_all_symbols; |
int print_file_each_line; |
int print_file_each_line; |
|
int show_extensions = 0; |
int fcount; |
int fcount; |
|
|
int rev; |
int rev; |
|
|
extern int optind; |
extern int optind; |
int ch, errors; |
int ch, errors; |
|
|
while ((ch = getopt(argc, argv, "aBCgnopruw")) != -1) { |
while ((ch = getopt(argc, argv, "aBCegnopruw")) != -1) { |
switch (ch) { |
switch (ch) { |
case 'a': |
case 'a': |
print_all_symbols = 1; |
print_all_symbols = 1; |
|
|
case 'C': |
case 'C': |
demangle = 1; |
demangle = 1; |
break; |
break; |
|
case 'e': |
|
show_extensions = 1; |
|
break; |
case 'g': |
case 'g': |
print_only_external_symbols = 1; |
print_only_external_symbols = 1; |
break; |
break; |
|
|
char *objname; |
char *objname; |
register struct nlist *sym; |
register struct nlist *sym; |
{ |
{ |
char *typestring(), typeletter(); |
char *typestring(), typeletter(), *otherstring(); |
|
|
if (print_file_each_line) |
if (print_file_each_line) |
(void)printf("%s:", objname); |
(void)printf("%s:", objname); |
|
|
if (IS_DEBUGGER_SYMBOL(sym->n_type)) |
if (IS_DEBUGGER_SYMBOL(sym->n_type)) |
(void)printf(" - %02x %04x %5s ", sym->n_other, |
(void)printf(" - %02x %04x %5s ", sym->n_other, |
sym->n_desc&0xffff, typestring(sym->n_type)); |
sym->n_desc&0xffff, typestring(sym->n_type)); |
|
else if (show_extensions) |
|
(void)printf(" %c%2s ", typeletter(sym->n_type), |
|
otherstring(sym->n_other)); |
else |
else |
(void)printf(" %c ", typeletter(sym->n_type)); |
(void)printf(" %c ", typeletter(sym->n_type)); |
} |
} |
|
|
(void)puts(sym->n_un.n_name + 1); |
(void)puts(sym->n_un.n_name + 1); |
else |
else |
(void)puts(sym->n_un.n_name); |
(void)puts(sym->n_un.n_name); |
|
} |
|
|
|
#define AUX_OBJECT 1 |
|
#define AUX_FUNC 2 |
|
#define BIND_WEAK 2 |
|
|
|
char * |
|
otherstring(other) |
|
u_char other; |
|
{ |
|
static char buf[3]; |
|
char *result; |
|
u_char bindtype; |
|
u_char aux; |
|
|
|
result = buf; |
|
|
|
bindtype = other >> 4; |
|
aux = other & 0x0f; |
|
if (bindtype == BIND_WEAK) |
|
*result++ = 'w'; |
|
if (aux == AUX_OBJECT) |
|
*result++ = 'o'; |
|
else if (aux == AUX_FUNC) |
|
*result++ = 'f'; |
|
*result++ = 0; |
|
return buf; |
} |
} |
|
|
/* |
/* |