dwarf2out.c (output_macinfo_op): Ensure fd->filename points to GC allocated copy of the string.
* 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. From-SVN: r176811
This commit is contained in:
parent
625f85e91b
commit
b56bc05b9f
@ -1,3 +1,10 @@
|
||||
2011-07-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2011-07-26 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR middle-end/47046
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user