From 7e78cfda8219a0e7d95232e15fe49cb4de620134 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Tue, 25 Jul 2017 13:11:37 +0000 Subject: [PATCH] dwarf2asm.c (dw2_asm_output_nstring): Encode double quote character for AIX. * 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: r250516 --- gcc/ChangeLog | 8 ++++++++ gcc/dwarf2asm.c | 4 +++- gcc/dwarf2out.c | 9 ++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a756bee60f..5a623bd6ddc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-07-25 David Edelsohn + + * 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-25 Segher Boessenkool * configure.ac: If any of the config.* scripts fail, exit 1. diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index 3f420405038..8e3e86f224c 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -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); diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 201045075a1..5231683ee9e 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -26975,6 +26975,7 @@ output_macinfo (void) macinfo_entry *ref; vec *files = NULL; macinfo_hash_type *macinfo_htab = NULL; + char dl_section_ref[MAX_ARTIFICIAL_LABEL_BYTES]; if (! length) return; @@ -26985,6 +26986,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) { @@ -26995,7 +27002,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); } -- 2.30.2