diff options
Diffstat (limited to 'contrib/binutils/binutils/addr2line.c')
-rw-r--r-- | contrib/binutils/binutils/addr2line.c | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/contrib/binutils/binutils/addr2line.c b/contrib/binutils/binutils/addr2line.c index a9ceb91..174a034 100644 --- a/contrib/binutils/binutils/addr2line.c +++ b/contrib/binutils/binutils/addr2line.c @@ -20,10 +20,10 @@ /* Derived from objdump.c and nm.c by Ulrich.Lauther@mchp.siemens.de - Usage: + Usage: addr2line [options] addr addr ... or - addr2line [options] + addr2line [options] both forms write results to stdout, the second form reads addresses to be converted from stdin. */ @@ -35,6 +35,7 @@ #include "libiberty.h" #include "demangle.h" #include "bucomm.h" +#include "budemang.h" static boolean with_functions; /* -f, show function names. */ static boolean do_demangle; /* -C, demangle names. */ @@ -191,23 +192,22 @@ translate_addresses (abfd) { if (with_functions) { - if (functionname == NULL || *functionname == '\0') - printf ("??\n"); - else if (! do_demangle) - printf ("%s\n", functionname); - else + const char *name; + char *alloc = NULL; + + name = functionname; + if (name == NULL || *name == '\0') + name = "??"; + else if (do_demangle) { - char *res; - - res = cplus_demangle (functionname, DMGL_ANSI | DMGL_PARAMS); - if (res == NULL) - printf ("%s\n", functionname); - else - { - printf ("%s\n", res); - free (res); - } + alloc = demangle (abfd, name); + name = alloc; } + + printf ("%s\n", name); + + if (alloc != NULL) + free (alloc); } if (base_names && filename != NULL) @@ -233,19 +233,19 @@ translate_addresses (abfd) /* Process a file. */ static void -process_file (filename, target) - const char *filename; +process_file (file_name, target) + const char *file_name; const char *target; { bfd *abfd; char **matching; - abfd = bfd_openr (filename, target); + abfd = bfd_openr (file_name, target); if (abfd == NULL) - bfd_fatal (filename); + bfd_fatal (file_name); if (bfd_check_format (abfd, bfd_archive)) - fatal (_("%s: can not get addresses from archive"), filename); + fatal (_("%s: can not get addresses from archive"), file_name); if (! bfd_check_format_matches (abfd, bfd_object, &matching)) { @@ -278,7 +278,7 @@ main (argc, argv) int argc; char **argv; { - const char *filename; + const char *file_name; char *target; int c; @@ -297,7 +297,7 @@ main (argc, argv) bfd_init (); set_default_bfd_target (); - filename = NULL; + file_name = NULL; target = NULL; while ((c = getopt_long (argc, argv, "b:Ce:sfHhVv", long_options, (int *) 0)) != EOF) @@ -314,17 +314,17 @@ main (argc, argv) if (optarg != NULL) { enum demangling_styles style; - + style = cplus_demangle_name_to_style (optarg); - if (style == unknown_demangling) + if (style == unknown_demangling) fatal (_("unknown demangling style `%s'"), optarg); - + cplus_demangle_set_style (style); - } + } break; case 'e': - filename = optarg; + file_name = optarg; break; case 's': base_names = true; @@ -346,13 +346,13 @@ main (argc, argv) } } - if (filename == NULL) - filename = "a.out"; + if (file_name == NULL) + file_name = "a.out"; addr = argv + optind; naddr = argc - optind; - process_file (filename, target); + process_file (file_name, target); return 0; } |