backport: dwarf2asm.c (dw2_asm_output_nstring): Encode double quote character for AIX.

Backport from mainline
2017-07-25  David Edelsohn  <dje.gcc@gmail.com>

        * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
        character for AIX.
        * dwarf2out.c (output_macinfo): Copy debug_line_section_label
        to dl_section_ref.  On AIX, append an expression to subtract
        the size of the section length to dl_section_ref.

From-SVN: r250663
This commit is contained in:
David Edelsohn 2017-07-28 13:25:40 +00:00 committed by David Edelsohn
parent c2ca7b74ce
commit fc626ac32f
3 changed files with 22 additions and 2 deletions

View File

@ -1,3 +1,14 @@
2017-07-28 David Edelsohn <dje.gcc@gmail.com>
Backport from mainline
2017-07-25 David Edelsohn <dje.gcc@gmail.com>
* dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
character for AIX.
* dwarf2out.c (output_macinfo): Copy debug_line_section_label
to dl_section_ref. On AIX, append an expression to subtract
the size of the section length to dl_section_ref.
2017-07-28 Bin Cheng <bin.cheng@arm.com>
Backport from mainline r250496

View File

@ -345,7 +345,9 @@ dw2_asm_output_nstring (const char *str, size_t orig_len,
for (i = 0; i < len; i++)
{
int c = str[i];
if (c == '\"' || c == '\\')
if (c == '\"')
fputc (XCOFF_DEBUGGING_INFO ? '\"' : '\\', asm_out_file);
else if (c == '\\')
fputc ('\\', asm_out_file);
if (ISPRINT (c))
fputc (c, asm_out_file);

View File

@ -27076,6 +27076,7 @@ output_macinfo (void)
macinfo_entry *ref;
vec<macinfo_entry, va_gc> *files = NULL;
macinfo_hash_type *macinfo_htab = NULL;
char dl_section_ref[MAX_ARTIFICIAL_LABEL_BYTES];
if (! length)
return;
@ -27086,6 +27087,12 @@ output_macinfo (void)
&& (int) DW_MACINFO_start_file == (int) DW_MACRO_start_file
&& (int) DW_MACINFO_end_file == (int) DW_MACRO_end_file);
/* AIX Assembler inserts the length, so adjust the reference to match the
offset expected by debuggers. */
strcpy (dl_section_ref, debug_line_section_label);
if (XCOFF_DEBUGGING_INFO)
strcat (dl_section_ref, DWARF_INITIAL_LENGTH_SIZE_STR);
/* For .debug_macro emit the section header. */
if (!dwarf_strict || dwarf_version >= 5)
{
@ -27096,7 +27103,7 @@ output_macinfo (void)
else
dw2_asm_output_data (1, 2, "Flags: 32-bit, lineptr present");
dw2_asm_output_offset (DWARF_OFFSET_SIZE,
(!dwarf_split_debug_info ? debug_line_section_label
(!dwarf_split_debug_info ? dl_section_ref
: debug_skeleton_line_section_label),
debug_line_section, NULL);
}