]> granicus.if.org Git - yasm/commitdiff
Merge [1478] from trunk.
authorPeter Johnson <peter@tortall.net>
Sat, 8 Apr 2006 18:36:33 +0000 (18:36 -0000)
committerPeter Johnson <peter@tortall.net>
Sat, 8 Apr 2006 18:36:33 +0000 (18:36 -0000)
svn path=/branches/yasm-0.5.x/; revision=1479

modules/dbgfmts/dwarf2/dwarf2-aranges.c
modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c
modules/dbgfmts/dwarf2/dwarf2-info.c

index 680912fa90baa01ee0b1b603d6d998d8424f2a44..0d434c28b0909c32c8d1a58fa0f93340ecc7bf4e 100644 (file)
@@ -60,7 +60,6 @@ dwarf2_generate_aranges_section(yasm_section *sect, /*@null@*/ void *d)
     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);
@@ -68,13 +67,12 @@ dwarf2_generate_aranges_section(yasm_section *sect, /*@null@*/ void *d)
        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);
 
index ea21be62eb0c35fffaa53ebc39d66f5aad781790..8b5a5190a9b006391373a2388705d22ccefe6baa 100644 (file)
@@ -37,7 +37,7 @@ struct dwarf2_head {
     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;
 };
@@ -209,9 +209,7 @@ yasm_dwarf2__add_head
        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;
@@ -292,7 +290,9 @@ dwarf2_head_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp, void *d,
     /* 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);
index 74cc4fb4586a9527df6c40e74acfb36a9b92d005..a53d6ff0ef6fa6a83076137741ae1d358d25d5d7 100644 (file)
@@ -319,19 +319,21 @@ yasm_dwarf2__generate_info(yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2,
        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);
     }