From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Mark E." To: binutils@sourceware.cygnus.com Subject: Minor fix to COFF .section change Date: Sat, 01 Jul 2000 18:39:00 -0000 Message-id: <395E6539.8406.8A0BBB@localhost> X-SW-Source: 2000-07/msg00004.html Hi guys, Looks like I found one more reason to post. It turns out SEC_LOAD may not be so good as a default. For example, ".section .eh_frame" according to objdump: ehframe.s: .section .eh_frame 3 .eh_frame 00000000 00000000 00000000 00000000 2**2 ALLOC, LOAD, CODE Ouch. Not only does this cause crashes when throwing a C++ exception if the default is treated as code, but it's contrary to my reading of the .section docs. I didn't think SEC_LOAD by itself would add SEC_ALLOC and SEC_CODE, but looking at styp_to_sec_flags and sec_to_styp_flags reveals this to be true. I believe the right thing to do is make the default so that SEC_CODE can't be added and guarantee that the section is writable according to the docs. 2000-07-01 Mark Elbrecht * config/obj-coff.c (obj_coff_section) [BFD_ASSEMBLER]: Make the default section flags 'SEC_LOAD | SEC_DATA' to prevent the section from mistakenly being marked as code when output. Index: src/gas/config/obj-coff.c =================================================================== RCS file: /cvs/src/src/gas/config/obj-coff.c,v retrieving revision 1.26 diff -c -p -r1.26 obj-coff.c *** obj-coff.c 2000/06/29 23:54:13 1.26 --- obj-coff.c 2000/07/02 01:26:05 *************** obj_coff_section (ignore) *** 1426,1432 **** /* Set section flags for a new section just created by subseg_new. Provide a default if no flags were parsed. */ if (flags == SEC_NO_FLAGS) ! flags = SEC_LOAD; #ifdef COFF_LONG_SECTION_NAMES /* Add SEC_LINK_ONCE and SEC_LINK_DUPLICATES_DISCARD to .gnu.linkonce --- 1426,1432 ---- /* Set section flags for a new section just created by subseg_new. Provide a default if no flags were parsed. */ if (flags == SEC_NO_FLAGS) ! flags = SEC_LOAD | SEC_DATA; #ifdef COFF_LONG_SECTION_NAMES /* Add SEC_LINK_ONCE and SEC_LINK_DUPLICATES_DISCARD to .gnu.linkonce