dwarf2_aranges_info *info = (dwarf2_aranges_info *)d;
yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
/*@null@*/ dwarf2_section_data *dsd;
- /*@dependent@*/ yasm_symrec *ssym, *esym;
/*@only@*/ yasm_expr *start, *length;
dsd = yasm_section_get_data(sect, &yasm_dwarf2__section_data_cb);
return 0; /* no line data for this section */
/* Create address range descriptor */
- ssym = yasm_symtab_define_label(dbgfmt_dwarf2->symtab, "start",
- yasm_section_bcs_first(sect), 0, 0);
- esym = yasm_symtab_define_label(dbgfmt_dwarf2->symtab, "end",
- yasm_section_bcs_last(sect), 0, 0);
- start = yasm_expr_create_ident(yasm_expr_sym(ssym), 0);
- length = yasm_expr_create(YASM_EXPR_SUB, yasm_expr_sym(esym),
- yasm_expr_sym(ssym), 0);
+ start = yasm_expr_create_ident(
+ yasm_expr_sym(yasm_dwarf2__bc_sym(dbgfmt_dwarf2->symtab,
+ yasm_section_bcs_first(sect))), 0);
+ length = yasm_expr_create_ident(
+ yasm_expr_int(yasm_common_calc_bc_dist(
+ yasm_section_bcs_first(sect), yasm_section_bcs_last(sect))), 0);
dwarf2_append_arange(info->debug_aranges, start, length,
dbgfmt_dwarf2->sizeof_address);
yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
yasm_bytecode *start_prevbc;
yasm_bytecode *end_prevbc;
- /*@null@*/ yasm_symrec *debug_ptr;
+ /*@null@*/ yasm_section *debug_ptr;
int with_address;
int with_segment;
};
bc->len += 4;
if (debug_ptr) {
- head->debug_ptr =
- yasm_dwarf2__bc_sym(dbgfmt_dwarf2->symtab,
- yasm_section_bcs_first(debug_ptr));
+ head->debug_ptr = debug_ptr;
bc->len += dbgfmt_dwarf2->sizeof_offset;
} else
head->debug_ptr = NULL;
/* Pointer to another debug section */
if (head->debug_ptr) {
yasm_value value;
- yasm_value_init_sym(&value, head->debug_ptr);
+ yasm_value_init_sym(&value,
+ yasm_dwarf2__bc_sym(dbgfmt_dwarf2->symtab,
+ yasm_section_bcs_first(head->debug_ptr)));
output_value(&value, buf, dbgfmt_dwarf2->sizeof_offset,
dbgfmt_dwarf2->sizeof_offset*8, 0,
(unsigned long)(buf-*bufp), bc, 0, d);
dbgfmt_dwarf2->sizeof_offset, 0);
if (main_code) {
+ yasm_symrec *first;
+ first = yasm_dwarf2__bc_sym(dbgfmt_dwarf2->symtab,
+ yasm_section_bcs_first(main_code));
/* All code is contiguous in one section */
abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_low_pc, DW_FORM_addr);
dwarf2_append_expr(debug_info,
- yasm_expr_create_ident(yasm_expr_sym(
- yasm_dwarf2__bc_sym(dbgfmt_dwarf2->symtab,
- yasm_section_bcs_first(main_code))), 0),
+ yasm_expr_create_ident(yasm_expr_sym(first), 0),
dbgfmt_dwarf2->sizeof_address, 0);
abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_high_pc, DW_FORM_addr);
dwarf2_append_expr(debug_info,
- yasm_expr_create_ident(yasm_expr_sym(
- yasm_dwarf2__bc_sym(dbgfmt_dwarf2->symtab,
- yasm_section_bcs_last(main_code))), 0),
+ yasm_expr_create(YASM_EXPR_ADD, yasm_expr_sym(first),
+ yasm_expr_int(yasm_common_calc_bc_dist(
+ yasm_section_bcs_first(main_code),
+ yasm_section_bcs_last(main_code))), 0),
dbgfmt_dwarf2->sizeof_address, 0);
}