* [PATCH] DWARF support for AIX v5
@ 2015-09-25 19:18 David Edelsohn
2015-09-25 19:18 ` Richard Henderson
2015-09-30 9:25 ` Matthias Klose
0 siblings, 2 replies; 3+ messages in thread
From: David Edelsohn @ 2015-09-25 19:18 UTC (permalink / raw)
To: Richard Henderson; +Cc: Richard Biener, GCC Patches
This version adds extra tests for HAVE_XCOFF_DWARF_EXTRAS. I placed
the default in dwarf2out.c instead of defaults.h.
Because eh_frame is internal to GCC with its own section, I emit the
length, but inhibit the length for AIX debug_frame section.
This allows DWARF debugging to work on older AIX 7.1 systems within
the limitations of the available sections. It also allows it to build
and test on a wider variety of AIX 7.1 systems.
I also changed the TLS decorations to use a switch statement, as suggested.
Thanks, David
* dwarf2out.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
(HAVE_XCOFF_DWARF_EXTRAS): Default to 0 definition.
(output_fde): Don't output length for debug_frame on AIX.
(output_call_frame_info): Don't output length for debug_frame on AIX.
(have_macinfo): Force to False for XCOFF_DEBUGGING_INFO and not
HAVE_XCOFF_DWARF_EXTRAS.
(add_AT_loc_list): Return early if XCOFF_DEBUGGING_INFO and not
HAVE_XCOFF_DWARF_EXTRAS.
(output_compilation_unit_header): Don't output length on AIX.
(output_pubnames): Don't output length on AIX.
(output_aranges): Delete argument. Compute length locally. Don't
output length on AIX.
(output_line_info): Don't output length on AIX.
(dwarf2out_finish): Don't compute aranges_length.
* dwarf2asm.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
(dw2_asm_output_nstring): Emit .byte not .ascii on AIX.
* config/rs6000/rs6000.c (rs6000_output_dwrf_dtprel): Emit correct
symbol decoration for AIX.
(rs6000_xcoff_debug_unwind_info): New.
(rs6000_xcoff_asm_named_section): Emit .dwsect pseudo-op
for SECTION_DEBUG.
(rs6000_xcoff_declare_function_name): Emit different
.function pseudo-op when DWARF2_DEBUG. Don't call
xcoffout_declare_function for DWARF2_DEBUG.
* config/rs6000/xcoff.h (TARGET_DEBUG_UNWIND_INFO):
Redefine.
* config/rs6000/aix71.h (DWARF2_DEBUGGING_INFO): Define.
(PREFERRED_DEBUGGING_TYPE): Define.
(DEBUG_INFO_SECTION): Define.
(DEBUG_ABBREV_SECTION): Define.
(DEBUG_ARANGES_SECTION): Define.
(DEBUG_LINE_SECTION): Define.
(DEBUG_PUBNAMES_SECTION): Define.
(DEBUG_PUBTYPES_SECTION): Define.
(DEBUG_STR_SECTION): Define.
(DEBUG_RANGES_SECTION): Define.
Index: dwarf2out.c
===================================================================
--- dwarf2out.c (revision 228137)
+++ dwarf2out.c (working copy)
@@ -108,6 +108,14 @@ static rtx_insn *last_var_location_insn;
static rtx_insn *cached_next_real_insn;
static void dwarf2out_decl (tree);
+#ifndef XCOFF_DEBUGGING_INFO
+#define XCOFF_DEBUGGING_INFO 0
+#endif
+
+#ifndef HAVE_XCOFF_DWARF_EXTRAS
+#define HAVE_XCOFF_DWARF_EXTRAS 0
+#endif
+
#ifdef VMS_DEBUGGING_INFO
int vms_file_stats_name (const char *, long long *, long *, char *, int *);
@@ -594,11 +602,14 @@ output_fde (dw_fde_ref fde, bool for_eh, bool seco
for_eh + j);
ASM_GENERATE_INTERNAL_LABEL (l1, FDE_AFTER_SIZE_LABEL, for_eh + j);
ASM_GENERATE_INTERNAL_LABEL (l2, FDE_END_LABEL, for_eh + j);
- if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4 && !for_eh)
- dw2_asm_output_data (4, 0xffffffff, "Initial length escape value"
- " indicating 64-bit DWARF extension");
- dw2_asm_output_delta (for_eh ? 4 : DWARF_OFFSET_SIZE, l2, l1,
- "FDE Length");
+ if (!XCOFF_DEBUGGING_INFO || for_eh)
+ {
+ if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4 && !for_eh)
+ dw2_asm_output_data (4, 0xffffffff, "Initial length escape value"
+ " indicating 64-bit DWARF extension");
+ dw2_asm_output_delta (for_eh ? 4 : DWARF_OFFSET_SIZE, l2, l1,
+ "FDE Length");
+ }
ASM_OUTPUT_LABEL (asm_out_file, l1);
if (for_eh)
@@ -794,11 +805,14 @@ output_call_frame_info (int for_eh)
/* Output the CIE. */
ASM_GENERATE_INTERNAL_LABEL (l1, CIE_AFTER_SIZE_LABEL, for_eh);
ASM_GENERATE_INTERNAL_LABEL (l2, CIE_END_LABEL, for_eh);
- if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4 && !for_eh)
- dw2_asm_output_data (4, 0xffffffff,
- "Initial length escape value indicating 64-bit DWARF extension");
- dw2_asm_output_delta (for_eh ? 4 : DWARF_OFFSET_SIZE, l2, l1,
- "Length of Common Information Entry");
+ if (!XCOFF_DEBUGGING_INFO || for_eh)
+ {
+ if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4 && !for_eh)
+ dw2_asm_output_data (4, 0xffffffff,
+ "Initial length escape value indicating 64-bit DWARF extension");
+ dw2_asm_output_delta (for_eh ? 4 : DWARF_OFFSET_SIZE, l2, l1,
+ "Length of Common Information Entry");
+ }
ASM_OUTPUT_LABEL (asm_out_file, l1);
/* Now that the CIE pointer is PC-relative for EH,
@@ -2995,7 +3009,8 @@ static GTY (()) vec<macinfo_entry, va_gc> *macinfo
/* True if .debug_macinfo or .debug_macros section is going to be
emitted. */
#define have_macinfo \
- (debug_info_level >= DINFO_LEVEL_VERBOSE \
+ ((!XCOFF_DEBUGGING_INFO || HAVE_XCOFF_DWARF_EXTRAS) \
+ && debug_info_level >= DINFO_LEVEL_VERBOSE \
&& !macinfo_table->is_empty ())
/* Array of dies for which we should generate .debug_ranges info. */
@@ -3202,7 +3217,7 @@ static void add_enumerator_pubname (const char *,
static void add_pubname_string (const char *, dw_die_ref);
static void add_pubtype (tree, dw_die_ref);
static void output_pubnames (vec<pubname_entry, va_gc> *);
-static void output_aranges (unsigned long);
+static void output_aranges (void);
static unsigned int add_ranges_num (int);
static unsigned int add_ranges (const_tree);
static void add_ranges_by_labels (dw_die_ref, const char *, const char *,
@@ -4236,6 +4251,9 @@ add_AT_loc_list (dw_die_ref die, enum dwarf_attrib
{
dw_attr_node attr;
+ if (XCOFF_DEBUGGING_INFO && !HAVE_XCOFF_DWARF_EXTRAS)
+ return;
+
attr.dw_attr = attr_kind;
attr.dw_attr_val.val_class = dw_val_class_loc_list;
attr.dw_attr_val.val_entry = NULL;
@@ -9197,12 +9215,16 @@ output_compilation_unit_header (void)
DWARFv5 draft DIE tags in DWARFv4 format. */
int ver = dwarf_version < 5 ? dwarf_version : 4;
- if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
- dw2_asm_output_data (4, 0xffffffff,
- "Initial length escape value indicating 64-bit DWARF extension");
- dw2_asm_output_data (DWARF_OFFSET_SIZE,
- next_die_offset - DWARF_INITIAL_LENGTH_SIZE,
- "Length of Compilation Unit Info");
+ if (!XCOFF_DEBUGGING_INFO)
+ {
+ if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
+ dw2_asm_output_data (4, 0xffffffff,
+ "Initial length escape value indicating 64-bit DWARF extension");
+ dw2_asm_output_data (DWARF_OFFSET_SIZE,
+ next_die_offset - DWARF_INITIAL_LENGTH_SIZE,
+ "Length of Compilation Unit Info");
+ }
+
dw2_asm_output_data (2, ver, "DWARF version number");
dw2_asm_output_offset (DWARF_OFFSET_SIZE, abbrev_section_label,
debug_abbrev_section,
@@ -9632,10 +9654,14 @@ output_pubnames (vec<pubname_entry, va_gc> *names)
unsigned long pubnames_length = size_of_pubnames (names);
pubname_entry *pub;
- if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
- dw2_asm_output_data (4, 0xffffffff,
- "Initial length escape value indicating 64-bit DWARF extension");
- dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, "Pub Info Length");
+ if (!XCOFF_DEBUGGING_INFO)
+ {
+ if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
+ dw2_asm_output_data (4, 0xffffffff,
+ "Initial length escape value indicating 64-bit DWARF extension");
+ dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length,
+ "Pub Info Length");
+ }
/* Version number for pubnames/pubtypes is independent of dwarf version. */
dw2_asm_output_data (2, 2, "DWARF Version");
@@ -9705,15 +9731,20 @@ output_pubtables (void)
text section generated for this compilation unit. */
static void
-output_aranges (unsigned long aranges_length)
+output_aranges (void)
{
unsigned i;
+ unsigned long aranges_length = size_of_aranges ();
+
+ if (!XCOFF_DEBUGGING_INFO)
+ {
+ if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
+ dw2_asm_output_data (4, 0xffffffff,
+ "Initial length escape value indicating 64-bit DWARF extension");
+ dw2_asm_output_data (DWARF_OFFSET_SIZE, aranges_length,
+ "Length of Address Ranges Info");
+ }
- if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
- dw2_asm_output_data (4, 0xffffffff,
- "Initial length escape value indicating 64-bit DWARF extension");
- dw2_asm_output_data (DWARF_OFFSET_SIZE, aranges_length,
- "Length of Address Ranges Info");
/* Version number for aranges is still 2, even up to DWARF5. */
dw2_asm_output_data (2, 2, "DWARF Version");
if (dwarf_split_debug_info)
@@ -10397,11 +10428,15 @@ output_line_info (bool prologue_only)
ASM_GENERATE_INTERNAL_LABEL (p1, LN_PROLOG_AS_LABEL, 0);
ASM_GENERATE_INTERNAL_LABEL (p2, LN_PROLOG_END_LABEL, 0);
- if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
- dw2_asm_output_data (4, 0xffffffff,
- "Initial length escape value indicating 64-bit DWARF extension");
- dw2_asm_output_delta (DWARF_OFFSET_SIZE, l2, l1,
- "Length of Source Line Info");
+ if (!XCOFF_DEBUGGING_INFO)
+ {
+ if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
+ dw2_asm_output_data (4, 0xffffffff,
+ "Initial length escape value indicating 64-bit DWARF extension");
+ dw2_asm_output_delta (DWARF_OFFSET_SIZE, l2, l1,
+ "Length of Source Line Info");
+ }
+
ASM_OUTPUT_LABEL (asm_out_file, l1);
dw2_asm_output_data (2, ver, "DWARF Version");
@@ -22031,7 +22066,7 @@ dwarf_file_hasher::hash (dwarf_file_data *p)
just a unique number which is associated with only that one filename. We
need such numbers for the sake of generating labels (in the .debug_sfnames
section) and references to those files numbers (in the .debug_srcinfo
- and.debug_macinfo sections). If the filename given as an argument is not
+ and .debug_macinfo sections). If the filename given as an argument is not
found in our current list, add it to the list and assign it the next
available unique index number. */
@@ -25502,10 +25537,8 @@ dwarf2out_finish (const char *filename)
generate a table that would have contained data. */
if (info_section_emitted)
{
- unsigned long aranges_length = size_of_aranges ();
-
switch_to_section (debug_aranges_section);
- output_aranges (aranges_length);
+ output_aranges ();
}
/* Output ranges section if necessary. */
Index: dwarf2asm.c
===================================================================
--- dwarf2asm.c (revision 228137)
+++ dwarf2asm.c (working copy)
@@ -34,6 +34,10 @@ along with GCC; see the file COPYING3. If not see
#include "dwarf2.h"
#include "tm_p.h"
+#ifndef XCOFF_DEBUGGING_INFO
+#define XCOFF_DEBUGGING_INFO 0
+#endif
+
^L
/* Output an unaligned integer with the given value and size. Prefer not
to print a newline, since the caller may want to add a comment. */
@@ -306,7 +310,11 @@ dw2_asm_output_nstring (const char *str, size_t or
if (flag_debug_asm && comment)
{
- fputs ("\t.ascii \"", asm_out_file);
+ if (XCOFF_DEBUGGING_INFO)
+ fputs ("\t.byte \"", asm_out_file);
+ else
+ fputs ("\t.ascii \"", asm_out_file);
+
for (i = 0; i < len; i++)
{
int c = str[i];
Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c (revision 228137)
+++ config/rs6000/rs6000.c (working copy)
@@ -7204,7 +7204,28 @@ rs6000_output_dwarf_dtprel (FILE *file, int size,
gcc_unreachable ();
}
output_addr_const (file, x);
- fputs ("@dtprel+0x8000", file);
+ if (TARGET_ELF)
+ fputs ("@dtprel+0x8000", file);
+ else if (TARGET_XCOFF && GET_CODE (x) == SYMBOL_REF)
+ {
+ switch (SYMBOL_REF_TLS_MODEL (x))
+ {
+ case 0:
+ break;
+ case TLS_MODEL_LOCAL_EXEC:
+ fputs ("@le", file);
+ break;
+ case TLS_MODEL_INITIAL_EXEC:
+ fputs ("@ie", file);
+ break;
+ case TLS_MODEL_GLOBAL_DYNAMIC:
+ case TLS_MODEL_LOCAL_DYNAMIC:
+ fputs ("@m", file);
+ break;
+ default:
+ gcc_unreachable ();
+ }
+ }
}
/* Return true if X is a symbol that refers to real (rather than emulated)
@@ -27316,17 +27337,21 @@ output_toc (FILE *file, rtx x, int labelno, machin
output_addr_const (file, x);
#if HAVE_AS_TLS
- if (TARGET_XCOFF && GET_CODE (base) == SYMBOL_REF
- && SYMBOL_REF_TLS_MODEL (base) != 0)
+ if (TARGET_XCOFF && GET_CODE (base) == SYMBOL_REF)
{
- if (SYMBOL_REF_TLS_MODEL (base) == TLS_MODEL_LOCAL_EXEC)
- fputs ("@le", file);
- else if (SYMBOL_REF_TLS_MODEL (base) == TLS_MODEL_INITIAL_EXEC)
- fputs ("@ie", file);
- /* Use global-dynamic for local-dynamic. */
- else if (SYMBOL_REF_TLS_MODEL (base) == TLS_MODEL_GLOBAL_DYNAMIC
- || SYMBOL_REF_TLS_MODEL (base) == TLS_MODEL_LOCAL_DYNAMIC)
+ switch (SYMBOL_REF_TLS_MODEL (base))
{
+ case 0:
+ break;
+ case TLS_MODEL_LOCAL_EXEC:
+ fputs ("@le", file);
+ break;
+ case TLS_MODEL_INITIAL_EXEC:
+ fputs ("@ie", file);
+ break;
+ /* Use global-dynamic for local-dynamic. */
+ case TLS_MODEL_GLOBAL_DYNAMIC:
+ case TLS_MODEL_LOCAL_DYNAMIC:
putc ('\n', file);
(*targetm.asm_out.internal_label) (file, "LCM", labelno);
fputs ("\t.tc .", file);
@@ -27334,6 +27359,9 @@ output_toc (FILE *file, rtx x, int labelno, machin
fputs ("[TC],", file);
output_addr_const (file, x);
fputs ("@m", file);
+ break;
+ default:
+ gcc_unreachable ();
}
}
#endif
@@ -30684,6 +30712,20 @@ rs6000_elf_file_end (void)
#endif
#if TARGET_XCOFF
+
+#ifndef HAVE_XCOFF_DWARF_EXTRAS
+#define HAVE_XCOFF_DWARF_EXTRAS 0
+#endif
+
+static enum unwind_info_type
+rs6000_xcoff_debug_unwind_info (void)
+{
+ if (HAVE_XCOFF_DWARF_EXTRAS)
+ return UI_DWARF2;
+ else
+ return UI_NONE;
+}
+
static void
rs6000_xcoff_asm_output_anchor (rtx symbol)
{
@@ -30805,6 +30847,11 @@ rs6000_xcoff_asm_named_section (const char *name,
int smclass;
static const char * const suffix[4] = { "PR", "RO", "RW", "TL" };
+ if (flags & SECTION_DEBUG)
+ {
+ fprintf (asm_out_file, "\t.dwsect %s\n", name);
+ return;
+ }
if (flags & SECTION_CODE)
smclass = 0;
else if (flags & SECTION_TLS)
@@ -31140,8 +31187,16 @@ rs6000_xcoff_declare_function_name (FILE *file, co
fputs (":\n", file);
data.function_descriptor = true;
symtab_node::get (decl)->call_for_symbol_and_aliases (rs6000_declare_alias, &
data, true);
- if (write_symbols != NO_DEBUG && !DECL_IGNORED_P (decl))
- xcoffout_declare_function (file, decl, buffer);
+ if (!DECL_IGNORED_P (decl))
+ {
+ if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
+ xcoffout_declare_function (file, decl, buffer);
+ else if (write_symbols == DWARF2_DEBUG)
+ {
+ name = (*targetm.strip_name_encoding) (name);
+ fprintf (file, "\t.function .%s,.%s,2,0\n", name, name);
+ }
+ }
return;
}
Index: config/rs6000/xcoff.h
===================================================================
--- config/rs6000/xcoff.h (revision 228137)
+++ config/rs6000/xcoff.h (working copy)
@@ -86,6 +86,8 @@
|| (SCALAR_FLOAT_MODE_P (GET_MODE (X)) \
&& ! TARGET_NO_FP_IN_TOC)))))
+#undef TARGET_DEBUG_UNWIND_INFO
+#define TARGET_DEBUG_UNWIND_INFO rs6000_xcoff_debug_unwind_info
#define TARGET_ASM_OUTPUT_ANCHOR rs6000_xcoff_asm_output_anchor
#define TARGET_ASM_GLOBALIZE_LABEL rs6000_xcoff_asm_globalize_label
#define TARGET_ASM_INIT_SECTIONS rs6000_xcoff_asm_init_sections
Index: config/rs6000/aix71.h
===================================================================
--- config/rs6000/aix71.h
+++ config/rs6000/aix71.h
+/* AIX 7.1 supports DWARF2 debugging, but XCOFF remains the default. */
+#define DWARF2_DEBUGGING_INFO 1
+#define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG
+#define DEBUG_INFO_SECTION "0x10000"
+#define DEBUG_LINE_SECTION "0x20000"
+#define DEBUG_PUBNAMES_SECTION "0x30000"
+#define DEBUG_PUBTYPES_SECTION "0x40000"
+#define DEBUG_ARANGES_SECTION "0x50000"
+#define DEBUG_ABBREV_SECTION "0x60000"
+#define DEBUG_STR_SECTION "0x70000"
+#define DEBUG_RANGES_SECTION "0x80000"
+#define DEBUG_LOC_SECTION "0x90000"
+#define DEBUG_FRAME_SECTION "0xA0000"
+#define DEBUG_MACINFO_SECTION "0xB0000"
+#define DEBUG_MACRO_SECTION "0xB0000"
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] DWARF support for AIX v5
2015-09-25 19:18 [PATCH] DWARF support for AIX v5 David Edelsohn
@ 2015-09-25 19:18 ` Richard Henderson
2015-09-30 9:25 ` Matthias Klose
1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2015-09-25 19:18 UTC (permalink / raw)
To: David Edelsohn; +Cc: Richard Biener, GCC Patches
On 09/25/2015 11:59 AM, David Edelsohn wrote:
> * dwarf2out.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
> (HAVE_XCOFF_DWARF_EXTRAS): Default to 0 definition.
> (output_fde): Don't output length for debug_frame on AIX.
> (output_call_frame_info): Don't output length for debug_frame on AIX.
> (have_macinfo): Force to False for XCOFF_DEBUGGING_INFO and not
> HAVE_XCOFF_DWARF_EXTRAS.
> (add_AT_loc_list): Return early if XCOFF_DEBUGGING_INFO and not
> HAVE_XCOFF_DWARF_EXTRAS.
> (output_compilation_unit_header): Don't output length on AIX.
> (output_pubnames): Don't output length on AIX.
> (output_aranges): Delete argument. Compute length locally. Don't
> output length on AIX.
> (output_line_info): Don't output length on AIX.
> (dwarf2out_finish): Don't compute aranges_length.
> * dwarf2asm.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
> (dw2_asm_output_nstring): Emit .byte not .ascii on AIX.
> * config/rs6000/rs6000.c (rs6000_output_dwrf_dtprel): Emit correct
> symbol decoration for AIX.
> (rs6000_xcoff_debug_unwind_info): New.
> (rs6000_xcoff_asm_named_section): Emit .dwsect pseudo-op
> for SECTION_DEBUG.
> (rs6000_xcoff_declare_function_name): Emit different
> .function pseudo-op when DWARF2_DEBUG. Don't call
> xcoffout_declare_function for DWARF2_DEBUG.
> * config/rs6000/xcoff.h (TARGET_DEBUG_UNWIND_INFO):
> Redefine.
> * config/rs6000/aix71.h (DWARF2_DEBUGGING_INFO): Define.
> (PREFERRED_DEBUGGING_TYPE): Define.
> (DEBUG_INFO_SECTION): Define.
> (DEBUG_ABBREV_SECTION): Define.
> (DEBUG_ARANGES_SECTION): Define.
> (DEBUG_LINE_SECTION): Define.
> (DEBUG_PUBNAMES_SECTION): Define.
> (DEBUG_PUBTYPES_SECTION): Define.
> (DEBUG_STR_SECTION): Define.
> (DEBUG_RANGES_SECTION): Define.
Ok.
r~
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] DWARF support for AIX v5
2015-09-25 19:18 [PATCH] DWARF support for AIX v5 David Edelsohn
2015-09-25 19:18 ` Richard Henderson
@ 2015-09-30 9:25 ` Matthias Klose
1 sibling, 0 replies; 3+ messages in thread
From: Matthias Klose @ 2015-09-30 9:25 UTC (permalink / raw)
To: David Edelsohn, Richard Henderson; +Cc: Richard Biener, GCC Patches
On 25.09.2015 20:59, David Edelsohn wrote:
> This version adds extra tests for HAVE_XCOFF_DWARF_EXTRAS. I placed
> the default in dwarf2out.c instead of defaults.h.
>
> Because eh_frame is internal to GCC with its own section, I emit the
> length, but inhibit the length for AIX debug_frame section.
>
> This allows DWARF debugging to work on older AIX 7.1 systems within
> the limitations of the available sections. It also allows it to build
> and test on a wider variety of AIX 7.1 systems.
>
> I also changed the TLS decorations to use a switch statement, as suggested.
>
> Thanks, David
>
> * dwarf2out.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
> (HAVE_XCOFF_DWARF_EXTRAS): Default to 0 definition.
> (output_fde): Don't output length for debug_frame on AIX.
> (output_call_frame_info): Don't output length for debug_frame on AIX.
> (have_macinfo): Force to False for XCOFF_DEBUGGING_INFO and not
> HAVE_XCOFF_DWARF_EXTRAS.
> (add_AT_loc_list): Return early if XCOFF_DEBUGGING_INFO and not
> HAVE_XCOFF_DWARF_EXTRAS.
> (output_compilation_unit_header): Don't output length on AIX.
> (output_pubnames): Don't output length on AIX.
> (output_aranges): Delete argument. Compute length locally. Don't
> output length on AIX.
> (output_line_info): Don't output length on AIX.
> (dwarf2out_finish): Don't compute aranges_length.
> * dwarf2asm.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
> (dw2_asm_output_nstring): Emit .byte not .ascii on AIX.
> * config/rs6000/rs6000.c (rs6000_output_dwrf_dtprel): Emit correct
> symbol decoration for AIX.
> (rs6000_xcoff_debug_unwind_info): New.
> (rs6000_xcoff_asm_named_section): Emit .dwsect pseudo-op
> for SECTION_DEBUG.
> (rs6000_xcoff_declare_function_name): Emit different
> .function pseudo-op when DWARF2_DEBUG. Don't call
> xcoffout_declare_function for DWARF2_DEBUG.
> * config/rs6000/xcoff.h (TARGET_DEBUG_UNWIND_INFO):
> Redefine.
> * config/rs6000/aix71.h (DWARF2_DEBUGGING_INFO): Define.
> (PREFERRED_DEBUGGING_TYPE): Define.
> (DEBUG_INFO_SECTION): Define.
> (DEBUG_ABBREV_SECTION): Define.
> (DEBUG_ARANGES_SECTION): Define.
> (DEBUG_LINE_SECTION): Define.
> (DEBUG_PUBNAMES_SECTION): Define.
> (DEBUG_PUBTYPES_SECTION): Define.
> (DEBUG_STR_SECTION): Define.
> (DEBUG_RANGES_SECTION): Define.
I see a build failure on powerpc64le-linux-gnu:
/home/doko/gcc/gcc-snapshot-20150929/src/gcc/configure: line 26465: syntax error
near unexpected token `$target'
/home/doko/gcc/gcc-snapshot-20150929/src/gcc/configure: line 26465: ` case
$target in'
Makefile:4165: recipe for target 'configure-stage1-gcc' failed
make[4]: *** [configure-stage1-gcc] Error 2
make[4]: Leaving directory '/home/doko/gcc/gcc-snapshot-20150929/build'
$ bash -n src/gcc/configure
src/gcc/configure: line 26465: syntax error near unexpected token `$target'
src/gcc/configure: line 26465: ` case $target in'
The above ChangeLog entry doesn't mention the patch to configure.ac and the
regeneration of configure, but it is included in the commit message. It looks
like that gcc/configure was manually fixed without fixing gcc/configure.ac.
Committing as obvious (although I see some whitespace changes with an unmodified
autoconf2.64 downloaded from ftp.gnu.org).
Matthias
gcc/
2015-09-30 Matthias Klose <doko@ubuntu.com>
* configure.ac: Remove extraneous ;;.
* configure: Regenerate.
Index: configure.ac
===================================================================
--- configure.ac (revision 228280)
+++ configure.ac (working copy)
@@ -4326,7 +4326,6 @@
[Define if your assembler supports .ref])])
;;
esac
- ;;
case $target in
*-*-aix*)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-09-30 8:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-25 19:18 [PATCH] DWARF support for AIX v5 David Edelsohn
2015-09-25 19:18 ` Richard Henderson
2015-09-30 9:25 ` Matthias Klose
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).