diff options
author | Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> | 2008-11-20 17:13:01 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2008-11-20 17:13:01 +0000 |
commit | 19523300a00967225f9d377b241c8442aa261792 (patch) | |
tree | 05532f9b36c19db3ba4c3c2a298e1d0c80348696 /libgcc | |
parent | 7391b59739f9c1dc026643d78f16ea6b0e0b3f7a (diff) | |
download | gcc-19523300a00967225f9d377b241c8442aa261792.zip gcc-19523300a00967225f9d377b241c8442aa261792.tar.gz gcc-19523300a00967225f9d377b241c8442aa261792.tar.bz2 |
re PR bootstrap/33100 (on bootstrap getting section .eh_frame: bad cie version 0: offset 0x0)
gcc:
PR bootstrap/33100
* config.gcc (i[34567]86-*-solaris2*): Don't include
i386/t-crtstuff here.
Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
* config/i386/t-sol2: Move to libgcc/config/i386.
libgcc:
PR bootstrap/33100
* configure.ac (i?86-*-solaris2.1[0-9]*): Only include
i386/t-crtstuff if linker supports ZERO terminator unwind entries.
* configure: Regenerate.
* config.host (i[34567]86-*-solaris2*): Move i386/t-sol2 in
tmake_file here from gcc/config.gcc.
Move extra_parts here from gcc/config.gcc.
* config/i386/t-sol2: Move here from gcc/config/i386.
Use gcc_srcdir instead of srcdir.
From-SVN: r142050
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 12 | ||||
-rw-r--r-- | libgcc/config.host | 11 | ||||
-rw-r--r-- | libgcc/config/i386/t-sol2 | 34 | ||||
-rw-r--r-- | libgcc/configure | 25 | ||||
-rw-r--r-- | libgcc/configure.ac | 20 |
5 files changed, 102 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index f73b8c7..dd079c2 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,15 @@ +2008-11-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + PR bootstrap/33100 + * configure.ac (i?86-*-solaris2.1[0-9]*): Only include + i386/t-crtstuff if linker supports ZERO terminator unwind entries. + * configure: Regenerate. + * config.host (i[34567]86-*-solaris2*): Move i386/t-sol2 in + tmake_file here from gcc/config.gcc. + Move extra_parts here from gcc/config.gcc. + * config/i386/t-sol2: Move here from gcc/config/i386. + Use gcc_srcdir instead of srcdir. + 2008-11-18 Adam Nemet <anemet@caviumnetworks.com> * config.host (mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*): New diff --git a/libgcc/config.host b/libgcc/config.host index 747fd7e..f85f3cf 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -318,6 +318,17 @@ i[34567]86-*-nto-qnx*) i[34567]86-*-rtems*) ;; i[34567]86-*-solaris2*) + tmake_file="${tmake_file} i386/t-sol2" + case ${host} in + *-*-solaris2.1[0-9]*) + # Solaris 2.10 provides crt1.o, crti.o, crtn.o, and gcrt1.o as + # part of the base system. + extra_parts="gmon.o crtbegin.o crtend.o" + ;; + *) + extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" + ;; + esac ;; i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae) ;; diff --git a/libgcc/config/i386/t-sol2 b/libgcc/config/i386/t-sol2 new file mode 100644 index 0000000..24b7c7c --- /dev/null +++ b/libgcc/config/i386/t-sol2 @@ -0,0 +1,34 @@ +# gmon build rule: +$(T)gmon.o: $(gcc_srcdir)/config/i386/gmon-sol2.c $(GCC_PASSES) $(CONFIG_H) + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) \ + -c $(gcc_srcdir)/config/i386/gmon-sol2.c -o $(T)gmon.o + +# Assemble startup files. +# Apparently Sun believes that assembler files don't need comments, because no +# single ASCII character is valid (tried them all). So we manually strip out +# the comments with sed. This bug may only be in the Early Access releases. +$(T)gcrt1.o: $(gcc_srcdir)/config/i386/sol2-gc1.asm $(GCC_PASSES) + sed -e '/^!/d' <$(gcc_srcdir)/config/i386/sol2-gc1.asm >gcrt1.s + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)gcrt1.o gcrt1.s +$(T)crt1.o: $(gcc_srcdir)/config/i386/sol2-c1.asm $(GCC_PASSES) + sed -e '/^!/d' <$(gcc_srcdir)/config/i386/sol2-c1.asm >crt1.s + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crt1.o crt1.s +$(T)crti.o: $(gcc_srcdir)/config/i386/sol2-ci.asm $(GCC_PASSES) + sed -e '/^!/d' <$(gcc_srcdir)/config/i386/sol2-ci.asm >crti.s + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crti.o crti.s +$(T)crtn.o: $(gcc_srcdir)/config/i386/sol2-cn.asm $(GCC_PASSES) + sed -e '/^!/d' <$(gcc_srcdir)/config/i386/sol2-cn.asm >crtn.s + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crtn.o crtn.s + +# We need to use -fPIC when we are using gcc to compile the routines in +# crtstuff.c. This is only really needed when we are going to use gcc/g++ +# to produce a shared library, but since we don't know ahead of time when +# we will be doing that, we just always use -fPIC when compiling the +# routines in crtstuff.c. +# +# We must also enable optimization to avoid having any code appear after +# the call & alignment statement, but before we switch back to the +# .text section. + +CRTSTUFF_T_CFLAGS = -fPIC -O2 +TARGET_LIBGCC2_CFLAGS = -fPIC diff --git a/libgcc/configure b/libgcc/configure index 75bf903..6315ecd 100644 --- a/libgcc/configure +++ b/libgcc/configure @@ -3420,6 +3420,31 @@ esac # Collect host-machine-specific information. . ${srcdir}/config.host +# Check if Solaris/x86 linker supports ZERO terminator unwind entries. +# This is after config.host so we can augment tmake_file. +# Link with -nostartfiles -nodefaultlibs since neither are present while +# building libgcc. +case ${host} in +i?86-*-solaris2.1[0-9]*) + cat > conftest.s <<EOF + .section .eh_frame,"a",@unwind + .zero 4 + .section .jcr,"aw",@progbits + .zero 8 +EOF + if { ac_try='${CC-cc} -shared -nostartfiles -nodefaultlibs -o conftest.so conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # configure expects config files in libgcc/config, so need a relative + # path here. + tmake_file="${tmake_file} ../../gcc/config/i386/t-crtstuff" + fi + ;; +esac + # Check for visibility support. This is after config.host so that # we can check for asm_hidden_op. echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 diff --git a/libgcc/configure.ac b/libgcc/configure.ac index 1238d74..d48bccc 100644 --- a/libgcc/configure.ac +++ b/libgcc/configure.ac @@ -171,6 +171,26 @@ esac # Collect host-machine-specific information. . ${srcdir}/config.host +# Check if Solaris/x86 linker supports ZERO terminator unwind entries. +# This is after config.host so we can augment tmake_file. +# Link with -nostartfiles -nodefaultlibs since neither are present while +# building libgcc. +case ${host} in +i?86-*-solaris2.1[[0-9]]*) + cat > conftest.s <<EOF + .section .eh_frame,"a",@unwind + .zero 4 + .section .jcr,"aw",@progbits + .zero 8 +EOF + if AC_TRY_COMMAND(${CC-cc} -shared -nostartfiles -nodefaultlibs -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD); then + # configure expects config files in libgcc/config, so need a relative + # path here. + tmake_file="${tmake_file} ../../gcc/config/i386/t-crtstuff" + fi + ;; +esac + # Check for visibility support. This is after config.host so that # we can check for asm_hidden_op. AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], |