aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-01-08 13:13:48 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-01-08 13:13:48 +0000
commit131a0e78b01cf4a280d0ad861e75ef35eb050d29 (patch)
treee5595f68928e3529c93f816e4f49aa7c96cc5656 /gcc
parent4135a21f4dc1b490446722a40ce113a0f7a28305 (diff)
downloadgcc-131a0e78b01cf4a280d0ad861e75ef35eb050d29.zip
gcc-131a0e78b01cf4a280d0ad861e75ef35eb050d29.tar.gz
gcc-131a0e78b01cf4a280d0ad861e75ef35eb050d29.tar.bz2
re PR lto/83719 (ICE (segfault) in hash_table<indirect_string_hasher, xcallocator>::elements())
2018-01-08 Richard Biener <rguenther@suse.de> PR lto/83719 * dwarf2out.c (output_indirect_strings): Handle empty skeleton_debug_str_hash. (dwarf2out_early_finish): Index strings for -gsplit-dwarf. * gcc.dg/lto/pr83719_0.c: New testcase. From-SVN: r256338
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/dwarf2out.c11
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr83719_0.c4
4 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b176f6e..0c9d694 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-01-08 Richard Biener <rguenther@suse.de>
+
+ PR lto/83719
+ * dwarf2out.c (output_indirect_strings): Handle empty
+ skeleton_debug_str_hash.
+ (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
+
2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index ae91c2d..a34b294 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -27795,8 +27795,9 @@ output_indirect_strings (void)
unsigned int offset = 0;
unsigned int cur_idx = 0;
- skeleton_debug_str_hash->traverse<enum dwarf_form,
- output_indirect_string> (DW_FORM_strp);
+ if (skeleton_debug_str_hash)
+ skeleton_debug_str_hash->traverse<enum dwarf_form,
+ output_indirect_string> (DW_FORM_strp);
switch_to_section (debug_str_offsets_section);
debug_str_hash->traverse_noresize
@@ -30819,6 +30820,12 @@ dwarf2out_early_finish (const char *filename)
save_macinfo_strings ();
+ if (dwarf_split_debug_info)
+ {
+ unsigned int index = 0;
+ debug_str_hash->traverse_noresize<unsigned int *, index_string> (&index);
+ }
+
/* Output all of the compilation units. We put the main one last so that
the offsets are available to output_pubnames. */
for (limbo_die_node *node = limbo_die_list; node; node = node->next)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 04eecf8..ccc94d1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-08 Richard Biener <rguenther@suse.de>
+
+ PR lto/83719
+ * gcc.dg/lto/pr83719_0.c: New testcase.
+
2018-01-08 Tom de Vries <tom@codesourcery.com>
* gcc.dg/graphite/interchange-7.c: Add dg-require-stack-size.
diff --git a/gcc/testsuite/gcc.dg/lto/pr83719_0.c b/gcc/testsuite/gcc.dg/lto/pr83719_0.c
new file mode 100644
index 0000000..6d5c16d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/pr83719_0.c
@@ -0,0 +1,4 @@
+/* { dg-lto-do assemble } */
+/* { dg-lto-options { { -flto -g -gsplit-dwarf } } } */
+
+/* Empty. */