summaryrefslogtreecommitdiffstats
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-26 21:12:39 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-26 21:12:39 +0000
commit4d29a91aae48750c8fa96363ce1555b5ce678ca8 (patch)
treebd25d5376ab1105cc0cf4c82e057b9bf9b787ac2 /gcc/dwarf2out.c
parentca338b2737f3838ac04274cf9e71f53fdd54e0f4 (diff)
downloadppe42-gcc-4d29a91aae48750c8fa96363ce1555b5ce678ca8.tar.gz
ppe42-gcc-4d29a91aae48750c8fa96363ce1555b5ce678ca8.zip
* dwarf2out.c (output_macinfo_op): Ensure fd->filename points
to GC allocated copy of the string. (dwarf2out_finish): Emit .debug_macinfo or .debug_macro sections before .debug_line, not after it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176811 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index d430753bfe5..8ea9f378786 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -20552,11 +20552,15 @@ output_macinfo_op (macinfo_entry *ref)
size_t len;
struct indirect_string_node *node;
char label[MAX_ARTIFICIAL_LABEL_BYTES];
+ struct dwarf_file_data *fd;
switch (ref->code)
{
case DW_MACINFO_start_file:
- file_num = maybe_emit_file (lookup_filename (ref->info));
+ fd = lookup_filename (ref->info);
+ if (fd->filename == ref->info)
+ fd->filename = ggc_strdup (fd->filename);
+ file_num = maybe_emit_file (fd);
dw2_asm_output_data (1, DW_MACINFO_start_file, "Start new file");
dw2_asm_output_data_uleb128 (ref->lineno,
"Included from line number %lu",
@@ -22637,6 +22641,16 @@ dwarf2out_finish (const char *filename)
output_ranges ();
}
+ /* Have to end the macro section. */
+ if (debug_info_level >= DINFO_LEVEL_VERBOSE)
+ {
+ switch_to_section (debug_macinfo_section);
+ ASM_OUTPUT_LABEL (asm_out_file, macinfo_section_label);
+ if (!VEC_empty (macinfo_entry, macinfo_table))
+ output_macinfo ();
+ dw2_asm_output_data (1, 0, "End compilation unit");
+ }
+
/* Output the source line correspondence table. We must do this
even if there is no line information. Otherwise, on an empty
translation unit, we will generate a present, but empty,
@@ -22648,16 +22662,6 @@ dwarf2out_finish (const char *filename)
if (! DWARF2_ASM_LINE_DEBUG_INFO)
output_line_info ();
- /* Have to end the macro section. */
- if (debug_info_level >= DINFO_LEVEL_VERBOSE)
- {
- switch_to_section (debug_macinfo_section);
- ASM_OUTPUT_LABEL (asm_out_file, macinfo_section_label);
- if (!VEC_empty (macinfo_entry, macinfo_table))
- output_macinfo ();
- dw2_asm_output_data (1, 0, "End compilation unit");
- }
-
/* If we emitted any DW_FORM_strp form attribute, output the string
table too. */
if (debug_str_hash)
OpenPOWER on IntegriCloud