aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-01-04 21:03:59 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-01-04 21:03:59 +0100
commitfb85f9d05f09a3e122d702f85b8af306a3999357 (patch)
tree90f35d4f1a343de8289b7d95299fc67845dbb79c /gcc
parent598bd6878aedc11ddffc0cc3908bfdaf86e212e8 (diff)
downloadgcc-fb85f9d05f09a3e122d702f85b8af306a3999357.zip
gcc-fb85f9d05f09a3e122d702f85b8af306a3999357.tar.gz
gcc-fb85f9d05f09a3e122d702f85b8af306a3999357.tar.bz2
dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for -gdwarf-5 and emit them as...
* dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for -gdwarf-5 and emit them as uleb128 instead of 2-byte data. From-SVN: r244069
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c13
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5568ec6..242bf69 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-04 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (output_loc_list): Don't throw away 64K+ location
+ descriptions for -gdwarf-5 and emit them as uleb128 instead of
+ 2-byte data.
+
2017-01-04 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/78056
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 15b9a30..8abeb7a 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -9586,7 +9586,7 @@ output_loc_list (dw_loc_list_ref list_head)
perhaps put it into DW_TAG_dwarf_procedure and refer to that
in the expression, but >= 64KB expressions for a single value
in a single range are unlikely very useful. */
- if (size > 0xffff)
+ if (dwarf_version < 5 && size > 0xffff)
continue;
if (dwarf_version >= 5)
{
@@ -9638,8 +9638,6 @@ output_loc_list (dw_loc_list_ref list_head)
if (strcmp (curr2->begin, curr2->end) == 0
&& !curr2->force)
continue;
- if ((unsigned long) size_of_locs (curr2->expr) > 0xffff)
- continue;
break;
}
if (curr2 == NULL || curr->section != curr2->section)
@@ -9740,8 +9738,13 @@ output_loc_list (dw_loc_list_ref list_head)
}
/* Output the block length for this list of location operations. */
- gcc_assert (size <= 0xffff);
- dw2_asm_output_data (2, size, "%s", "Location expression size");
+ if (dwarf_version >= 5)
+ dw2_asm_output_data_uleb128 (size, "Location expression size");
+ else
+ {
+ gcc_assert (size <= 0xffff);
+ dw2_asm_output_data (2, size, "Location expression size");
+ }
output_loc_sequence (curr->expr, -1);
}