mirror of
https://github.com/mirror/tinycc.git
synced 2025-03-26 12:04:59 +08:00
New dwarf update
tccdbg.c - Fix typo in dwarf_file. This resulted in not finding correct include files. tccrun.c: - Change FILE_TABLE_SIZE to 512. Some files use very large includes. - When a dll containted more then 1 file the pc was not calculated correctly.
This commit is contained in:
parent
53dd065daf
commit
0e47167cbe
2
tccdbg.c
2
tccdbg.c
@ -557,7 +557,7 @@ static void dwarf_file(TCCState *s1)
|
|||||||
for (i = 0; i < dwarf_line.dir_size; i++)
|
for (i = 0; i < dwarf_line.dir_size; i++)
|
||||||
if (strcmp(dwarf_line.dir_table[i], file->filename) == 0)
|
if (strcmp(dwarf_line.dir_table[i], file->filename) == 0)
|
||||||
for (j = 1; j < dwarf_line.filename_size; j++)
|
for (j = 1; j < dwarf_line.filename_size; j++)
|
||||||
if (dwarf_line.filename_table[i].dir_entry == i &&
|
if (dwarf_line.filename_table[j].dir_entry == i &&
|
||||||
strcmp(dwarf_line.filename_table[j].name,
|
strcmp(dwarf_line.filename_table[j].name,
|
||||||
filename) == 0) {
|
filename) == 0) {
|
||||||
*undo = '/';
|
*undo = '/';
|
||||||
|
12
tccrun.c
12
tccrun.c
@ -600,7 +600,7 @@ found:
|
|||||||
#define MAX_128 ((8 * sizeof (long long) + 6) / 7)
|
#define MAX_128 ((8 * sizeof (long long) + 6) / 7)
|
||||||
|
|
||||||
#define DIR_TABLE_SIZE (64)
|
#define DIR_TABLE_SIZE (64)
|
||||||
#define FILE_TABLE_SIZE (256)
|
#define FILE_TABLE_SIZE (512)
|
||||||
|
|
||||||
#define dwarf_read_1(ln,end) \
|
#define dwarf_read_1(ln,end) \
|
||||||
((ln) < (end) ? *(ln)++ : 0)
|
((ln) < (end) ? *(ln)++ : 0)
|
||||||
@ -695,11 +695,13 @@ static addr_t rt_printline_dwarf (rt_context *rc, addr_t wanted_pc,
|
|||||||
addr_t last_pc;
|
addr_t last_pc;
|
||||||
addr_t pc;
|
addr_t pc;
|
||||||
addr_t func_addr;
|
addr_t func_addr;
|
||||||
|
addr_t offset_dll;
|
||||||
int line;
|
int line;
|
||||||
char *filename;
|
char *filename;
|
||||||
char *function;
|
char *function;
|
||||||
|
|
||||||
next:
|
next:
|
||||||
|
offset_dll = 0;
|
||||||
ln = rc->dwarf_line;
|
ln = rc->dwarf_line;
|
||||||
while (ln < rc->dwarf_line_end) {
|
while (ln < rc->dwarf_line_end) {
|
||||||
dir_size = 0;
|
dir_size = 0;
|
||||||
@ -827,8 +829,12 @@ next:
|
|||||||
#else
|
#else
|
||||||
pc = dwarf_read_8(cp, end);
|
pc = dwarf_read_8(cp, end);
|
||||||
#endif
|
#endif
|
||||||
if (rc->num_callers < 0)
|
if (rc->num_callers < 0) {
|
||||||
pc = rc->dwarf_text; /* dll */
|
/* dll */
|
||||||
|
if (!offset_dll)
|
||||||
|
offset_dll = pc;
|
||||||
|
pc = rc->dwarf_text + (pc - offset_dll);
|
||||||
|
}
|
||||||
opindex = 0;
|
opindex = 0;
|
||||||
break;
|
break;
|
||||||
case DW_LNE_define_file: /* deprecated */
|
case DW_LNE_define_file: /* deprecated */
|
||||||
|
Loading…
Reference in New Issue
Block a user