re PR debug/86456 (Segfault in switch_to_section at gcc/varasm.c:7353 since r259317)
2018-07-17 Richard Biener <rguenther@suse.de> PR lto/86456 * dwarf2out.c (init_sections_and_labels): Always generate a debug_line_str_section for early LTO debug. (dwarf2out_finish): Reset debug_line_str_hash output early. Bump counter for extra dwarf5 .debug_loc labels to not conflict with fat LTO part. (dwarf2out_early_finish): Output debug_line_str. * g++.dg/debug/dwarf2/pr86456.C: New testcase. From-SVN: r262819
This commit is contained in:
parent
5211d26a26
commit
3447025f2f
4 changed files with 35 additions and 3 deletions
|
@ -1,3 +1,13 @@
|
|||
2018-07-17 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR lto/86456
|
||||
* dwarf2out.c (init_sections_and_labels): Always generate
|
||||
a debug_line_str_section for early LTO debug.
|
||||
(dwarf2out_finish): Reset debug_line_str_hash output early.
|
||||
Bump counter for extra dwarf5 .debug_loc labels to not conflict
|
||||
with fat LTO part.
|
||||
(dwarf2out_early_finish): Output debug_line_str.
|
||||
|
||||
2018-07-17 Robin Dapp <rdapp@linux.ibm.com>
|
||||
|
||||
* config/s390/s390.c (preferred_la_operand_p): Do not use LA with
|
||||
|
|
|
@ -28488,7 +28488,7 @@ init_sections_and_labels (bool early_lto_debug)
|
|||
debug_str_section = get_section (DEBUG_LTO_STR_SECTION,
|
||||
DEBUG_STR_SECTION_FLAGS
|
||||
| SECTION_EXCLUDE, NULL);
|
||||
if (!dwarf_split_debug_info && !output_asm_line_debug_info ())
|
||||
if (!dwarf_split_debug_info)
|
||||
debug_line_str_section
|
||||
= get_section (DEBUG_LTO_LINE_STR_SECTION,
|
||||
DEBUG_STR_SECTION_FLAGS | SECTION_EXCLUDE, NULL);
|
||||
|
@ -31149,6 +31149,11 @@ dwarf2out_finish (const char *)
|
|||
|
||||
/* Remove indirect string decisions. */
|
||||
debug_str_hash->traverse<void *, reset_indirect_string> (NULL);
|
||||
if (debug_line_str_hash)
|
||||
{
|
||||
debug_line_str_hash->traverse<void *, reset_indirect_string> (NULL);
|
||||
debug_line_str_hash = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#if ENABLE_ASSERT_CHECKING
|
||||
|
@ -31433,8 +31438,8 @@ dwarf2out_finish (const char *)
|
|||
switch_to_section (debug_loc_section);
|
||||
if (dwarf_version >= 5)
|
||||
{
|
||||
ASM_GENERATE_INTERNAL_LABEL (l1, DEBUG_LOC_SECTION_LABEL, 1);
|
||||
ASM_GENERATE_INTERNAL_LABEL (l2, DEBUG_LOC_SECTION_LABEL, 2);
|
||||
ASM_GENERATE_INTERNAL_LABEL (l1, DEBUG_LOC_SECTION_LABEL, 2);
|
||||
ASM_GENERATE_INTERNAL_LABEL (l2, DEBUG_LOC_SECTION_LABEL, 3);
|
||||
if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
|
||||
dw2_asm_output_data (4, 0xffffffff,
|
||||
"Initial length escape value indicating "
|
||||
|
@ -32053,6 +32058,13 @@ dwarf2out_early_finish (const char *filename)
|
|||
/* If we emitted any indirect strings, output the string table too. */
|
||||
if (debug_str_hash || skeleton_debug_str_hash)
|
||||
output_indirect_strings ();
|
||||
if (debug_line_str_hash)
|
||||
{
|
||||
switch_to_section (debug_line_str_section);
|
||||
const enum dwarf_form form = DW_FORM_line_strp;
|
||||
debug_line_str_hash->traverse<enum dwarf_form,
|
||||
output_indirect_string> (form);
|
||||
}
|
||||
|
||||
/* Switch back to the text section. */
|
||||
switch_to_section (text_section);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-07-17 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR lto/86456
|
||||
* g++.dg/debug/dwarf2/pr86456.C: New testcase.
|
||||
|
||||
2018-07-17 Robin Dapp <rdapp@linux.ibm.com>
|
||||
|
||||
* gcc.target/s390/function-align1.c: New test.
|
||||
|
|
5
gcc/testsuite/g++.dg/debug/dwarf2/pr86456.C
Normal file
5
gcc/testsuite/g++.dg/debug/dwarf2/pr86456.C
Normal file
|
@ -0,0 +1,5 @@
|
|||
// { dg-do compile }
|
||||
// { dg-require-effective-target lto }
|
||||
// { dg-options "-g -gdwarf-5 -flto -ffat-lto-objects" }
|
||||
|
||||
int a;
|
Loading…
Add table
Reference in a new issue