mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
write_debug_record should dump info recursively; close #1581
This commit is contained in:
+18
-9
@@ -384,7 +384,7 @@ write_lineno_record(mrb_state *mrb, mrb_irep *irep, uint8_t* bin)
|
||||
bin += rlen;
|
||||
size += rlen;
|
||||
for (i=0; i<irep->rlen; i++) {
|
||||
rlen = write_lineno_record_1(mrb, irep, bin);
|
||||
rlen = write_lineno_record(mrb, irep, bin);
|
||||
bin += rlen;
|
||||
size += rlen;
|
||||
}
|
||||
@@ -405,7 +405,6 @@ write_section_lineno(mrb_state *mrb, mrb_irep *irep, uint8_t *bin)
|
||||
section_size += sizeof(struct rite_section_lineno_header);
|
||||
|
||||
rlen = write_lineno_record(mrb, irep, cur);
|
||||
cur += rlen;
|
||||
section_size += rlen;
|
||||
|
||||
write_section_lineno_header(mrb, section_size, bin);
|
||||
@@ -498,7 +497,7 @@ get_filename_table_size(mrb_state *mrb, mrb_irep *irep, mrb_sym **fp, size_t *lp
|
||||
}
|
||||
|
||||
static int
|
||||
write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len)
|
||||
write_debug_record_1(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len)
|
||||
{
|
||||
uint8_t *cur;
|
||||
uint32_t f_idx;
|
||||
@@ -551,6 +550,22 @@ write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const*
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len)
|
||||
{
|
||||
uint32_t size, len;
|
||||
size_t irep_no;
|
||||
|
||||
size = len = write_debug_record_1(mrb, irep, bin, filenames, filenames_len);
|
||||
bin += len;
|
||||
for (irep_no = 0; irep_no < irep->rlen; irep_no++) {
|
||||
len = write_debug_record(mrb, irep->reps[irep_no], bin, filenames, filenames_len);
|
||||
bin += len;
|
||||
size += len;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
static int
|
||||
write_filename_table(mrb_state *mrb, mrb_irep *irep, uint8_t **cp, mrb_sym **fp, size_t *lp)
|
||||
{
|
||||
@@ -614,13 +629,7 @@ write_section_debug(mrb_state *mrb, mrb_irep *irep, uint8_t *cur)
|
||||
|
||||
// debug records
|
||||
dlen = write_debug_record(mrb, irep, cur, filenames, filenames_len);
|
||||
cur += dlen;
|
||||
section_size += dlen;
|
||||
for (i=0; i<irep->rlen; i++) {
|
||||
dlen = write_debug_record(mrb, irep->reps[i], cur, filenames, filenames_len);
|
||||
cur += dlen;
|
||||
section_size += dlen;
|
||||
}
|
||||
|
||||
memcpy(header->section_identify, RITE_SECTION_DEBUG_IDENTIFIER, sizeof(header->section_identify));
|
||||
uint32_to_bin(section_size, header->section_size);
|
||||
|
||||
Reference in New Issue
Block a user