1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Changeset 2190

Show
Ignore:
Timestamp:
11/21/11 08:14:45 (2 years ago)
Author:
jkoshy
Message:

Work-around a compilation warning in nm.

Convert the print_demangle_name() helper function to a macro to
accomodate compilation with -Wformat-nonliteral.

Ticket: #363

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/nm/nm.c

    r2189 r2190  
    194194static bool             is_sec_text(GElf_Shdr *); 
    195195static void             print_ar_index(int, Elf *); 
    196 static void             print_demangle_name(const char *, const char *); 
    197196static void             print_header(const char *, const char *); 
    198197static void             print_version(void); 
     
    846845} 
    847846 
    848 static void 
    849 print_demangle_name(const char *format, const char *name) 
    850 { 
    851         char dem[8192]; 
    852  
    853         if (format == NULL || name == NULL) 
    854                 return; 
    855  
    856         if (nm_opts.demangle_type < 0 || 
    857             elftc_demangle(name, dem, sizeof(dem), nm_opts.demangle_type) < 0) 
    858                 printf(format, name); 
    859         else 
    860                 printf(format, dem); 
    861 } 
     847#define DEMANGLED_BUFFER_SIZE   (8 * 1024) 
     848#define PRINT_DEMANGLED_NAME(FORMAT, NAME) do {                         \ 
     849        char _demangled[DEMANGLED_BUFFER_SIZE];                         \ 
     850        if (nm_opts.demangle_type < 0 ||                                \ 
     851            elftc_demangle((NAME), _demangled, sizeof(_demangled),      \ 
     852                nm_opts.demangle_type) < 0)                             \ 
     853                printf((FORMAT), (NAME));                               \ 
     854        else                                                            \ 
     855                printf((FORMAT), _demangled);                           \ 
     856        } while (0) 
    862857 
    863858static void 
     
    16091604 
    16101605        printf(" %c ", type); 
    1611         print_demangle_name("%s", name); 
     1606        PRINT_DEMANGLED_NAME("%s", name); 
    16121607} 
    16131608 
     
    16211616                return; 
    16221617 
    1623         print_demangle_name("%s", name); 
     1618        PRINT_DEMANGLED_NAME("%s", name); 
    16241619        printf(" %c ", type); 
    16251620        if (!IS_UNDEF_SYM_TYPE(type)) { 
     
    16411636                return; 
    16421637 
    1643         print_demangle_name("%-20s|", name); 
     1638        PRINT_DEMANGLED_NAME("%-20s|", name); 
    16441639        if (IS_UNDEF_SYM_TYPE(type)) 
    16451640                printf("                ");