Commit fb85f9d0 by Jakub Jelinek Committed by Jakub Jelinek

dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for…

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
parent 598bd687
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> 2017-01-04 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/78056 PR target/78056
......
...@@ -9586,7 +9586,7 @@ output_loc_list (dw_loc_list_ref list_head) ...@@ -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 perhaps put it into DW_TAG_dwarf_procedure and refer to that
in the expression, but >= 64KB expressions for a single value in the expression, but >= 64KB expressions for a single value
in a single range are unlikely very useful. */ in a single range are unlikely very useful. */
if (size > 0xffff) if (dwarf_version < 5 && size > 0xffff)
continue; continue;
if (dwarf_version >= 5) if (dwarf_version >= 5)
{ {
...@@ -9638,8 +9638,6 @@ output_loc_list (dw_loc_list_ref list_head) ...@@ -9638,8 +9638,6 @@ output_loc_list (dw_loc_list_ref list_head)
if (strcmp (curr2->begin, curr2->end) == 0 if (strcmp (curr2->begin, curr2->end) == 0
&& !curr2->force) && !curr2->force)
continue; continue;
if ((unsigned long) size_of_locs (curr2->expr) > 0xffff)
continue;
break; break;
} }
if (curr2 == NULL || curr->section != curr2->section) if (curr2 == NULL || curr->section != curr2->section)
...@@ -9740,8 +9738,13 @@ output_loc_list (dw_loc_list_ref list_head) ...@@ -9740,8 +9738,13 @@ output_loc_list (dw_loc_list_ref list_head)
} }
/* Output the block length for this list of location operations. */ /* Output the block length for this list of location operations. */
if (dwarf_version >= 5)
dw2_asm_output_data_uleb128 (size, "Location expression size");
else
{
gcc_assert (size <= 0xffff); gcc_assert (size <= 0xffff);
dw2_asm_output_data (2, size, "%s", "Location expression size"); dw2_asm_output_data (2, size, "Location expression size");
}
output_loc_sequence (curr->expr, -1); output_loc_sequence (curr->expr, -1);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment