While working to move the Solaris libgcc configuration to the toplevel, I came across the definition of FORCE_CODE_SECTION_ALIGN in i386/sol2.h. It refers to a Solaris 2.0 ld bug, which is ancient history by now. The definition can simply be removed, as verified by bootstraps on i386-pc-solaris2.{[89],1[01]} with both as/ld and gas/ld.
The macro is still used in config/mcore/mcore-elf.h, so it cannot be removed completely. Installed on mainline. Rainer diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -19,16 +19,6 @@ You should have received a copy of the G along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -/* The Solaris 2.0 x86 linker botches alignment of code sections. - It tries to align to a 16 byte boundary by padding with 0x00000090 - ints, rather than 0x90 bytes (nop). This generates trash in the - ".init" section since the contribution from crtbegin.o is only 7 - bytes. The linker pads it to 16 bytes with a single 0x90 byte, and - two 0x00000090 ints, which generates a segmentation violation when - executed. This macro forces the assembler to do the padding, since - it knows what it is doing. */ -#define FORCE_CODE_SECTION_ALIGN asm(ALIGN_ASM_OP "16"); - /* Old versions of the Solaris assembler can not handle the difference of labels in different sections, so force DW_EH_PE_datarel. */ #undef ASM_PREFERRED_EH_DATA_FORMAT -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University