Subversion Repositories Games.Carmageddon

Rev

Rev 11 | Rev 18 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 11 Rev 14
Line 31... Line 31...
31
static void* stack_traces[MAX_STACK_FRAMES];
31
static void* stack_traces[MAX_STACK_FRAMES];
32
static char name_buf[4096];
32
static char name_buf[4096];
33
 
33
 
34
// Resolve symbol name and source location given the path to the executable and an address
34
// Resolve symbol name and source location given the path to the executable and an address
35
int addr2line(char const* const program_name, intptr_t slide, void const* const addr) {
35
int addr2line(char const* const program_name, intptr_t slide, void const* const addr) {
36
    char addr2line_cmd[512] = { 0 };
36
    static char addr2line_cmd[MAXPATHLEN]; // Pierre-Marie Baty -- use the heap instead
37
 
37
 
38
    /* have addr2line map the address to the related line in the code */
38
    /* have addr2line map the address to the related line in the code */
39
    sprintf(addr2line_cmd, "atos -s %" PRIxPTR " -o \"%s\" %p", slide, program_name, addr);
39
    sprintf(addr2line_cmd, "atos -s %" PRIxPTR " -o \"%s\" %p", slide, program_name, addr); // Pierre-Marie Baty -- enclosed program_name within quotes to support pathnames with spaces
40
 
40
 
41
    // printf("addr2line command: %s\n", addr2line_cmd);
41
    // printf("addr2line command: %s\n", addr2line_cmd);
42
 
42
 
43
    fprintf(stderr, "%d: ", stack_nbr++);
43
    fprintf(stderr, "%d: ", stack_nbr++);
44
    return system(addr2line_cmd);
44
    return system(addr2line_cmd);