diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-11-24 14:35:31 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2004-11-24 14:35:31 +0000 |
commit | 1a35e62db38e212a6ec713b10d37b4d67e0e04d8 (patch) | |
tree | fd5df5cbebf2f9c06f98b70a94d7cce4d7792239 /gcc/dwarf2out.c | |
parent | f78ce0c2f31182305ffe14ed95c4b4a18cb0d906 (diff) | |
download | gcc-1a35e62db38e212a6ec713b10d37b4d67e0e04d8.zip gcc-1a35e62db38e212a6ec713b10d37b4d67e0e04d8.tar.gz gcc-1a35e62db38e212a6ec713b10d37b4d67e0e04d8.tar.bz2 |
crtstuff.c (IN_LIBGCC2): Define it.
2004-11-24 Mark Mitchell <mark@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* crtstuff.c (IN_LIBGCC2): Define it.
(EH_FRAME_SECTION_CONST): Check EH_TABLES_CAN_BE_READ_ONLY
instead of HAVE_LD_RO_RW_SECTION_MIXING.
* defaults.h (EH_TABLES_CAN_BE_READ_ONLY): New macro.
* dwarf2out.c (named_section_eh_frame_section): Check
EH_TABLES_CAN_BE_READ_ONLY.
* except.c (default_exception_section): Likewise.
* config/i386/sol2.h (EH_TABLES_CAN_BE_READ_ONLY): Define.
* doc/tm.texi (EH_TABLES_CAN_BE_READ_ONLY): Document.
Co-Authored-By: Joseph Myers <joseph@codesourcery.com>
From-SVN: r91160
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 63a4614..044a65c 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -121,24 +121,29 @@ void named_section_eh_frame_section (void) { #ifdef EH_FRAME_SECTION_NAME -#ifdef HAVE_LD_RO_RW_SECTION_MIXING - int fde_encoding = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/1, /*global=*/0); - int per_encoding = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/2, /*global=*/1); - int lsda_encoding = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/0, /*global=*/0); int flags; - flags = (! flag_pic - || ((fde_encoding & 0x70) != DW_EH_PE_absptr - && (fde_encoding & 0x70) != DW_EH_PE_aligned - && (per_encoding & 0x70) != DW_EH_PE_absptr - && (per_encoding & 0x70) != DW_EH_PE_aligned - && (lsda_encoding & 0x70) != DW_EH_PE_absptr - && (lsda_encoding & 0x70) != DW_EH_PE_aligned)) - ? 0 : SECTION_WRITE; + if (EH_TABLES_CAN_BE_READ_ONLY) + { + int fde_encoding; + int per_encoding; + int lsda_encoding; + + fde_encoding = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/1, /*global=*/0); + per_encoding = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/2, /*global=*/1); + lsda_encoding = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/0, /*global=*/0); + flags = (! flag_pic + || ((fde_encoding & 0x70) != DW_EH_PE_absptr + && (fde_encoding & 0x70) != DW_EH_PE_aligned + && (per_encoding & 0x70) != DW_EH_PE_absptr + && (per_encoding & 0x70) != DW_EH_PE_aligned + && (lsda_encoding & 0x70) != DW_EH_PE_absptr + && (lsda_encoding & 0x70) != DW_EH_PE_aligned)) + ? 0 : SECTION_WRITE; + } + else + flags = SECTION_WRITE; named_section_flags (EH_FRAME_SECTION_NAME, flags); -#else - named_section_flags (EH_FRAME_SECTION_NAME, SECTION_WRITE); -#endif #endif } |