From 02c9b1ca813452f2546d21f4403d2b051d0f4302 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 13 Aug 2001 14:14:01 -0700 Subject: [PATCH] xcoff.h (EH_FRAME_IN_DATA_SECTION): New. * config/rs6000/xcoff.h (EH_FRAME_IN_DATA_SECTION): New. * defaults.h (EH_FRAME_SECTION_NAME): Respect it. * doc/tm.texi (Exception Region Output): Document it. From-SVN: r44869 --- gcc/ChangeLog | 8 +++++++- gcc/config/rs6000/xcoff.h | 11 +++++++---- gcc/defaults.h | 2 +- gcc/doc/tm.texi | 10 ++++++++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7b8cb0fca07..1b24e2d433e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-08-13 Richard Henderson + + * config/rs6000/xcoff.h (EH_FRAME_IN_DATA_SECTION): New. + * defaults.h (EH_FRAME_SECTION_NAME): Respect it. + * doc/tm.texi (Exception Region Output): Document it. + 2001-08-13 Geoffrey Keating * config/rs6000/sysv4.h (PREFERRED_DEBUGGING_TYPE): Use @@ -226,7 +232,7 @@ Mon Aug 13 02:27:39 CEST 2001 Jan Hubicka * s390.c, s390.h, s390.md, s390-protos.h, linux.h, t-linux: Clean up code: add missing comments and prototypes, fix warnings, - remove obsolete code, fix spacing to conform to coding style. + remove obsolete code, fix spacing to conform to coding style. 2001-08-11 Ulrich Weigand diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h index f7d6c5f39ad..c120e643c94 100644 --- a/gcc/config/rs6000/xcoff.h +++ b/gcc/config/rs6000/xcoff.h @@ -492,8 +492,11 @@ toc_section () \ /* Switch into a generic section. */ #define TARGET_ASM_NAMED_SECTION xcoff_asm_named_section -/* Define the name of the section to use for the exception tables. - TODO: test and see if we can use read_only_data_section, if so, - remove this. */ - +/* Define the name of the section to use for the EH language specific + data areas (.gcc_except_table on most other systems). */ #define EXCEPTION_SECTION data_section + +/* Define to prevent DWARF2 unwind info in the data section rather + than in the .eh_frame section. We do this because the AIX linker + would otherwise garbage collect these sections. */ +#define EH_FRAME_IN_DATA_SECTION 1 diff --git a/gcc/defaults.h b/gcc/defaults.h index d20bc28f6ff..14635b3e2c9 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -211,7 +211,7 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) /* If we have named sections, and we're using crtstuff to run ctors, use them for registering eh frame information. */ -#if defined (TARGET_ASM_NAMED_SECTION) +#if defined (TARGET_ASM_NAMED_SECTION) && !defined(EH_FRAME_IN_DATA_SECTION) #ifndef EH_FRAME_SECTION_NAME #define EH_FRAME_SECTION_NAME ".eh_frame" #endif diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index caf0a026578..538888b16d4 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -7068,6 +7068,16 @@ provide a default definition if the target supports named sections. You should define this symbol if your target supports DWARF 2 frame unwind information and the default definition does not work. +@findex EH_FRAME_IN_DATA_SECTION +@item EH_FRAME_IN_DATA_SECTION +If defined, DWARF 2 frame unwind information will be placed in the +data section even though the target supports named sections. This +might be necessary, for instance, if the system linker does garbage +collection and sections cannot be marked as not to be collected. + +Do not define this macro unless @code{TARGET_ASM_NAMED_SECTION} is +also defined. + @findex OMIT_EH_TABLE @item OMIT_EH_TABLE () A C expression that is nonzero if the normal exception table output