From 96d0f4dc5c9293d5c61fbc60f0966766db4d99e4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 26 Nov 2002 13:34:25 +0100 Subject: varasm.c (default_exception_section): Move to... * varasm.c (default_exception_section): Move to... * except.c (default_exception_section): ... here. Make .gcc_except_table read-only if it is not expected to have any dynamic relocations and linker handles it. * dwarf2out.c (default_eh_frame_section): Make .eh_frame read-only if it is not expected to have any dynamic relocations and linker handles it. * configure.in (HAVE_LD_RO_RW_SECTION_MIXING): Check what ld does when linking read-only and read-write sections together. * configure, config.in: Rebuilt. * crtstuff.c (EH_FRAME_SECTION_CONST): Define. (__EH_FRAME_BEGIN__, __FRAME_END__): Add it. From-SVN: r59507 --- gcc/dwarf2out.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'gcc/dwarf2out.c') diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index ed2a0ec..2e8fe61 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -117,7 +117,24 @@ void default_eh_frame_section () { #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; + named_section_flags (EH_FRAME_SECTION_NAME, flags); +#else named_section_flags (EH_FRAME_SECTION_NAME, SECTION_WRITE); +#endif #else tree label = get_file_function_name ('F'); -- cgit v1.1