diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2004-02-06 18:25:16 +0000 |
---|---|---|
committer | Josef Zlomek <zlomek@gcc.gnu.org> | 2004-02-06 18:25:16 +0000 |
commit | 1711adc261965d9e88dc92fb3b16829a90145d01 (patch) | |
tree | a23590aff41e5fe6c576fb7be0dd07606b42951c /gcc | |
parent | b1e5a971c566abfca67ee34f1255721c25eb2de2 (diff) | |
download | gcc-1711adc261965d9e88dc92fb3b16829a90145d01.zip gcc-1711adc261965d9e88dc92fb3b16829a90145d01.tar.gz gcc-1711adc261965d9e88dc92fb3b16829a90145d01.tar.bz2 |
dwarf2out.c (output_loc_list): Don't use deltas if we have a separate line info table in use.
* dwarf2out.c (output_loc_list): Don't use deltas if we have
a separate line info table in use.
Use the correct size for terminators.
(output_die): Use offset, not delta.
From-SVN: r77409
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 33 |
2 files changed, 29 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 72a80b9..f2ea897 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-02-06 Daniel Berlin <dberlin@dberlin.org> + + * dwarf2out.c (output_loc_list): Don't use deltas if we have + a separate line info table in use. + Use the correct size for terminators. + (output_die): Use offset, not delta. + 2004-02-06 H.J. Lu <hongjiu.lu@intel.com> * doc/invoke.texi: Remove the pni option from -mfpmath=. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 824add7..468b6dd 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -6551,16 +6551,28 @@ output_loc_list (dw_loc_list_ref list_head) "Location list base address specifier base"); } + /* Walk the location list, and output each range + expression. */ for (curr = list_head; curr != NULL; curr = curr->dw_loc_next) { unsigned long size; - - dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->begin, curr->section, - "Location list begin address (%s)", - list_head->ll_symbol); - dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->end, curr->section, - "Location list end address (%s)", - list_head->ll_symbol); + if (separate_line_info_table_in_use == 0) + { + dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->begin, curr->section, + "Location list begin address (%s)", + list_head->ll_symbol); + dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->end, curr->section, + "Location list end address (%s)", + list_head->ll_symbol); + } + else + { + dw2_asm_output_addr (DWARF2_ADDR_SIZE, curr->begin, + "Location list begin address (%s)", + list_head->ll_symbol); + dw2_asm_output_addr (DWARF2_ADDR_SIZE, curr->end, + "Location list end address (%s)", + list_head->ll_symbol); + } size = size_of_locs (curr->expr); /* Output the block length for this list of location operations. */ @@ -6571,10 +6583,10 @@ output_loc_list (dw_loc_list_ref list_head) output_loc_sequence (curr->expr); } - dw2_asm_output_data (DWARF_OFFSET_SIZE, 0, + dw2_asm_output_data (DWARF2_ADDR_SIZE, 0, "Location list terminator begin (%s)", list_head->ll_symbol); - dw2_asm_output_data (DWARF_OFFSET_SIZE, 0, + dw2_asm_output_data (DWARF2_ADDR_SIZE, 0, "Location list terminator end (%s)", list_head->ll_symbol); } @@ -6694,8 +6706,7 @@ output_die (dw_die_ref die) if (sym == 0) abort (); - dw2_asm_output_delta (DWARF_OFFSET_SIZE, sym, - loc_section_label, "%s", name); + dw2_asm_output_offset (DWARF_OFFSET_SIZE, sym, "%s", name); } break; |