|
10 | 10 | #include <limits.h>
|
11 | 11 | #include <ctype.h>
|
12 | 12 |
|
13 |
| -#include <libasr/runtime/lfortran_intrinsics.h>w |
| 13 | +#include <libasr/runtime/lfortran_intrinsics.h> |
14 | 14 | #include <libasr/config.h>
|
15 | 15 |
|
16 | 16 | #ifdef HAVE_RUNTIME_STACKTRACE
|
@@ -1501,78 +1501,45 @@ char *remove_whitespace(char *str) {
|
1501 | 1501 | return str;
|
1502 | 1502 | }
|
1503 | 1503 |
|
1504 |
| -int generate_stacktrace_files() { |
1505 |
| - // TODO: Replace the hardcoded part |
1506 |
| - char *base_name = get_base_name(source_filename); |
1507 |
| - char *cmd = malloc(strlen(base_name)*7 + 200); |
1508 |
| -#ifdef HAVE_LFORTRAN_MACHO |
1509 |
| - strcpy(cmd, "dsymutil "); |
1510 |
| - strcat(cmd, base_name); |
1511 |
| - strcat(cmd, ".out && llvm-dwarfdump --debug-line "); |
1512 |
| - strcat(cmd, base_name); |
1513 |
| - strcat(cmd, ".out.dSYM > "); |
1514 |
| -#else |
1515 |
| - strcpy(cmd, "llvm-dwarfdump --debug-line "); |
1516 |
| - strcat(cmd, base_name); |
1517 |
| - strcat(cmd, ".out > "); |
1518 |
| -#endif |
1519 |
| - strcat(cmd, base_name); |
1520 |
| - strcat(cmd, "_ldd.txt && (cd src/bin; ./dwarf_convert.py ../../"); |
1521 |
| - strcat(cmd, base_name); |
1522 |
| - strcat(cmd, "_ldd.txt ../../"); |
1523 |
| - strcat(cmd, base_name); |
1524 |
| - strcat(cmd, "_lines.txt ../../"); |
1525 |
| - strcat(cmd, base_name); |
1526 |
| - strcat(cmd, "_lines.dat && ./dat_convert.py ../../"); |
1527 |
| - strcat(cmd, base_name); |
1528 |
| - strcat(cmd, "_lines.dat)"); |
1529 |
| - int status = system(cmd); |
1530 |
| - free(cmd); |
1531 |
| - return status; |
1532 |
| -} |
1533 |
| - |
1534 | 1504 | LFORTRAN_API void print_stacktrace_addresses(char *filename, bool use_colors) {
|
1535 | 1505 | source_filename = filename;
|
1536 |
| - int status = generate_stacktrace_files(); |
1537 |
| - if (status == 0) { |
1538 |
| - struct Stacktrace d = get_stacktrace_addresses(); |
1539 |
| - get_local_address(&d); |
1540 |
| - get_local_info_dwarfdump(&d); |
| 1506 | + struct Stacktrace d = get_stacktrace_addresses(); |
| 1507 | + get_local_address(&d); |
| 1508 | + get_local_info_dwarfdump(&d); |
1541 | 1509 |
|
1542 | 1510 | #ifdef HAVE_LFORTRAN_MACHO
|
1543 |
| - for (int32_t i = d.local_pc_size-2; i > 1; i--) { |
| 1511 | + for (int32_t i = d.local_pc_size-2; i > 1; i--) { |
1544 | 1512 | #else
|
1545 |
| - for (int32_t i = d.local_pc_size-3; i >= 0; i--) { |
| 1513 | + for (int32_t i = d.local_pc_size-3; i >= 0; i--) { |
1546 | 1514 | #endif
|
1547 |
| - uint64_t index = bisection(d.addresses, d.stack_size, d.local_pc[i]); |
1548 |
| - if(use_colors) { |
1549 |
| - fprintf(stderr, DIM " File " S_RESET |
1550 |
| - BOLD MAGENTA "\"%s\"" C_RESET S_RESET |
| 1515 | + uint64_t index = bisection(d.addresses, d.stack_size, d.local_pc[i]); |
| 1516 | + if(use_colors) { |
| 1517 | + fprintf(stderr, DIM " File " S_RESET |
| 1518 | + BOLD MAGENTA "\"%s\"" C_RESET S_RESET |
1551 | 1519 | #ifdef HAVE_LFORTRAN_MACHO
|
1552 |
| - DIM ", line %lld\n" S_RESET |
| 1520 | + DIM ", line %lld\n" S_RESET |
1553 | 1521 | #else
|
1554 |
| - DIM ", line %ld\n" S_RESET |
| 1522 | + DIM ", line %ld\n" S_RESET |
1555 | 1523 | #endif
|
1556 |
| - " %s\n", source_filename, d.line_numbers[index], |
1557 |
| - remove_whitespace(read_line_from_file(source_filename, |
1558 |
| - d.line_numbers[index]))); |
1559 |
| - } else { |
1560 |
| - fprintf(stderr, " File \"%s\", " |
| 1524 | + " %s\n", source_filename, d.line_numbers[index], |
| 1525 | + remove_whitespace(read_line_from_file(source_filename, |
| 1526 | + d.line_numbers[index]))); |
| 1527 | + } else { |
| 1528 | + fprintf(stderr, " File \"%s\", " |
1561 | 1529 | #ifdef HAVE_LFORTRAN_MACHO
|
1562 |
| - "line %lld\n %s\n", |
| 1530 | + "line %lld\n %s\n", |
1563 | 1531 | #else
|
1564 |
| - "line %ld\n %s\n", |
| 1532 | + "line %ld\n %s\n", |
1565 | 1533 | #endif
|
1566 |
| - source_filename, d.line_numbers[index], |
1567 |
| - remove_whitespace(read_line_from_file(source_filename, |
1568 |
| - d.line_numbers[index]))); |
1569 |
| - } |
1570 |
| -#ifdef HAVE_LFORTRAN_MACHO |
| 1534 | + source_filename, d.line_numbers[index], |
| 1535 | + remove_whitespace(read_line_from_file(source_filename, |
| 1536 | + d.line_numbers[index]))); |
1571 | 1537 | }
|
| 1538 | +#ifdef HAVE_LFORTRAN_MACHO |
| 1539 | + } |
1572 | 1540 | #else
|
1573 |
| - } |
1574 |
| -#endif |
1575 | 1541 | }
|
| 1542 | +#endif |
1576 | 1543 | }
|
1577 | 1544 |
|
1578 | 1545 | #endif // HAVE_RUNTIME_STACKTRACE
|
|
0 commit comments