X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=gcc%2Fgcc.nm;h=64831ef3a197fa7e1532dce0a61aadd98c011357;hb=292a724635ec02c9b02e3f833bf38d4dd7eafc9b;hp=284e87a68e7bee8673388fd5836d82dd131ad6db;hpb=1f5436066e6b47d0fda494b3cef4cd6fbce6bffa;p=ipfire-3.x.git diff --git a/gcc/gcc.nm b/gcc/gcc.nm index 284e87a68..64831ef3a 100644 --- a/gcc/gcc.nm +++ b/gcc/gcc.nm @@ -3,12 +3,12 @@ # Copyright (C) - IPFire Development Team # ############################################################################### -# Configure build to compile with cloog and ppl. -build_cloog_ppl = 1 +# Configure build to compile with graphite +build_graphite = 1 name = gcc -version = 4.6.2 -release = 3 +version = 9.1.0 +release = 1 maintainer = Michael Tremer groups = Development/Compilers @@ -22,67 +22,102 @@ description end # This is the at least required version of binutils. -required_binutils_version = 2.21.51.0.8-1 +binutils_version = 2.24 source_dl = http://ftp.gnu.org/gnu/gcc/%{thisapp}/ +source_dl += ftp://gcc.gnu.org/pub/gcc/infrastructure/ sources = %{thisapp}.tar.gz -patches - gcc46-hack.patch0 - gcc46-c++-builtin-redecl.patch0 - gcc46-pr33763.patch0 - gcc46-libgomp-omp_h-multilib.patch0 - gcc46-libtool-no-rpath.patch0 - gcc46-cloog-dl.patch0 - gcc46-pr38757.patch0 - gcc46-no-add-needed.patch0 - gcc46-unwind-debughook-sdt.patch0 - gcc46-ppl-0.10.patch - gcc46-Woverlength-string.patch0 - gcc46-Woverlength-string-asm.patch0 - gcc-4.6.0-piepatches-20110407.patch -end - build requires autogen - binutils>=%{required_binutils_version} + binutils >= %{binutils_version} dejagnu elfutils-devel expect + filesystem >= 002 flex - glibc-devel + glibc-devel >= 2.16 gmp-devel libffi-devel - mpc-devel + libmpc-devel >= 0.8.1 mpfr-devel + perl texinfo zlib-devel end - # If cloog support is enabled, we require the devel packages for build. - if "%{build_cloog_ppl}" == "1" - requires += cloog-ppl-devel ppl-devel + # If graphite support is enabled, we require the devel packages for build. + if "%{build_graphite}" == "1" + requires += isl-devel >= 0.14 end + # Build libquadmath (only on x86). + build_libquadmath = 0 + + # Build liblsan (only on x86_64). + build_liblsan = 0 + + # Build libtasn (only on x86_64). + build_libtsan = 0 + + # Build libubsan + build_libubsan = 0 + # A couple of configure arguments depending on the architecture and # configuration. configure_options = + make_bootstrap = profiledbootstrap + if "%{DISTRO_ARCH}" == "x86_64" configure_options = --disable-multilib + + build_libquadmath = 1 + build_liblsan = 1 + build_libtsan = 1 + build_libubsan = 1 end if "%{DISTRO_ARCH}" == "i686" configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic + + build_libquadmath = 1 + build_libubsan = 1 + end + + if "%{DISTRO_ARCH}" == "aarch64" + build_libubsan = 1 + end + + if "%{DISTRO_ARCH}" == "armv7hl" + make_bootstrap = bootstrap + + configure_options += --disable-sjlj-exceptions + + configure_options += \ + --with-tune=cortex-a8 \ + --with-arch=armv7-a \ + --with-float=hard \ + --with-fpu=vfpv3-d16 \ + --with-abi=aapcs-linux + + build_libubsan = 1 end - if "%{build_cloog_ppl}" == "1" - configure_options += --with-cloog --with-ppl + if "%{DISTRO_ARCH}" == "armv5tel" + make_bootstrap = bootstrap + + configure_options += --disable-sjlj-exceptions + configure_options += --with-float=soft + + build_libubsan = 1 end - # CFLAGS for hardening. - HARD_CFLAGS = -DEFAULT_PIE_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW + if "%{build_graphite}" == "1" + configure_options += \ + --with-isl + end prepare_cmds mkdir -v %{DIR_SRC}/gcc-build @@ -111,35 +146,34 @@ build sed -i gcc/Makefile.in \ -e "s/-fno-exceptions/& -fno-asynchronous-unwind-tables/" - # we want to be able to control the pie patch logic via something other - # than ALL_CFLAGS... - sed -i gcc/Makefile.in \ - -e '/^ALL_CFLAGS/iHARD_CFLAGS = ' \ - -e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |' - - # Enable the GCC hardening by default. - sed -i gcc/Makefile.in \ - -e "s|^HARD_CFLAGS = |HARD_CFLAGS = %{HARD_CFLAGS} |" - - # Compile the compiler with -fPIC as well. - sed -i gcc/Makefile.in \ - -e "s|^ESP_NOPIE_CFLAGS = .*|ESP_NOPIE_CFLAGS =|" - - ./contrib/gcc_update --touch + #./contrib/gcc_update --touch end + export CC=gcc + export CXX=g++ + build cd %{DIR_SRC}/gcc-build # Modify CFLAGS - OPT_FLAGS="%{CFLAGS}" CFLAGS="%{CFLAGS}" CFLAGS=$(echo ${CFLAGS} | sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g') + CFLAGS=$(echo ${CFLAGS} | sed -e 's/-Werror=format-security//g') CFLAGS=$(echo ${CFLAGS} | sed -e 's/-m64//g;s/-m32//g;s/-m31//g') - CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g') - #CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g') + CFLAGS=$(echo ${CFLAGS} | sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g') + CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g') + CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g') CFLAGS=$(echo "${CFLAGS}" | sed -e 's/[[:blank:]]\+/ /g') CXXFLAGS=$(echo ${CFLAGS} | sed -e 's/ -Wall//g') + CXXFLAGS=$(echo ${CXXFLAGS} | sed -e 's/ -fexceptions / /g') + #CXXFLAGS=$(echo ${CXXFLAGS} | sed -e 's/ -Werror=format-security / -Wformat -Werror=format-security /g') + + case "${CFLAGS}" in + *-fasynchronous-unwind-tables*) + sed -i -e "s/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/" \ + ../%{thisapp}/Makefile.in + ;; + esac CFLAGS="${CFLAGS}" \ CXXFLAGS="${CXXFLAGS}" \ @@ -148,8 +182,10 @@ build ../%{thisapp}/configure \ --build=%{DISTRO_BUILDTARGET} \ --prefix=/usr \ - --libexecdir=/usr/lib \ - --mandir=/usr/share/man \ + --libdir=%{libdir} \ + --libexecdir=%{libdir} \ + --mandir=%{mandir} \ + --with-boot-ldflags="%{LDFLAGS}" \ --enable-esp \ --enable-shared \ --enable-threads=posix \ @@ -158,22 +194,38 @@ build --enable-languages=c,c++,lto \ --enable-bootstrap \ --enable-checking=release \ + --enable-default-pie \ --disable-werror \ --disable-libssp \ - --disable-static \ --with-system-zlib \ --with-bugurl=http://bugtracker.ipfire.org \ --disable-libunwind-exceptions \ --enable-gnu-unique-object \ --enable-linker-build-id \ + --with-linker-hash-style=gnu \ + --enable-plugin \ + --enable-initfini-array \ + --disable-libgcj \ + --enable-gnu-indirect-function \ %{configure_options} + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58012 + # XXX disabled flags: --disable-static + # GCC does not support a parallel build. - make profiledbootstrap BOOT_CFLAGS="${OPT_FLAGS}" #%{PARALLELISMFLAGS} + make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}" + + # Generate man pages. + perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl + for i in %{DIR_APP}/gcc/doc/*.texi; do + cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i + done + make -C gcc generated-manpages + for i in %{DIR_APP}/gcc/doc/*.texi; do mv -f $i.orig $i; done end #test - # cd %{DIR_SRC}/gcc-build && make check + # cd %{DIR_SRC}/gcc-build && make -k check || true # cd %{DIR_APP} && ./contrib/test_summary #end @@ -181,21 +233,89 @@ build cd %{DIR_SRC}/gcc-build make install DESTDIR=%{BUILDROOT} - mkdir -pv %{BUILDROOT}/lib - ln -sfv ../usr/bin/cpp %{BUILDROOT}/lib/cpp + # Check if the installation path exists. + FULLPATH="%{BUILDROOT}%{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}" + [ -d "${FULLPATH}" ] || exit 1 + + mkdir -pv %{BUILDROOT}%{prefix}/lib + ln -sfv ../bin/cpp %{BUILDROOT}%{prefix}/lib/cpp ln -sfv gcc %{BUILDROOT}/usr/bin/cc - # Move libgcc_s to /lib - mv -vf %{BUILDROOT}/usr/lib/libgcc_s.so.1 %{BUILDROOT}/lib/ - ln -svf ../../lib/libgcc_s.so.1 %{BUILDROOT}/usr/lib/libgcc_s.so + # Fix libgcc_s symlinks. + rm -f ${FULLPATH}/libgcc_s.so %{BUILDROOT}%{libdir}/libgcc_s.so + case "%{DISTRO_ARCH}" in + arm*) + cat <${FULLPATH}/libgcc_s.so + /* GNU ld script + Use the shared library, but some functions are only in + the static library, so try that secondarily. */ + OUTPUT_FORMAT(elf32-littlearm) + GROUP ( %{libdir}/libgcc_s.so.1 libgcc.a ) + EOF + ;; + *) + ln -svf ../../../../..%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so + ;; + esac + chmod 755 %{BUILDROOT}%{libdir}/libgcc_s.so.1 # Remove some GNU debugger stuff. - rm -vf %{BUILDROOT}/usr/lib/lib*.py + rm -vf %{BUILDROOT}%{libdir}/lib*.py + + # Install missing header file(s) on ARM. + case "%{DISTRO_ARCH}" in + arm*) + cp -vf %{DIR_APP}/gcc/config/vxworks-dummy.h \ + ${FULLPATH}/plugin/include/config/ + cp -vf %{DIR_APP}/gcc/config/arm/arm-cores.def \ + ${FULLPATH}/plugin/include/config/arm/ + ;; + esac + + # libgomp + mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/ + ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so + chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.* + + # libstdc++ + ln -svf ../../../libstdc++.so.6.0.26 ${FULLPATH}/libstdc++.so + mv -vf %{BUILDROOT}%{libdir}/lib{std,sup}c++.a ${FULLPATH} + + # libquadmath + if [ "%{build_libquadmath}" = "1" ]; then + ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so + chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.* + fi + + # libitm + mv -vf %{BUILDROOT}%{libdir}/libitm.spec ${FULLPATH}/ + ln -svf ../../../libitm.so.1.0.0 ${FULLPATH}/libitm.so + chmod 755 %{BUILDROOT}%{libdir}/libitm.so.1.* + + # liblsan + if [ "%{build_liblsan}" = "1" ]; then + ln -svf ../../../liblsan.so.0.0.0 ${FULLPATH}/liblsan.so + chmod 755 %{BUILDROOT}%{libdir}/liblsan.so.* + fi + + # libtsan + if [ "%{build_libtsan}" = "1" ]; then + ln -svf ../../../libtsan.so.0.0.0 ${FULLPATH}/libtsan.so + chmod 755 %{BUILDROOT}%{libdir}/libtsan.so.* + fi + + # libubsan + if [ "%{build_libubsan}" = "1" ]; then + ln -svf ../../../libubsan.so.1.0.0 ${FULLPATH}/libubsan.so + chmod 755 %{BUILDROOT}%{libdir}/libubsan.so.* + fi end keep_libraries - /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a - /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libstdc++.a + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libsupc++.a end end @@ -204,90 +324,306 @@ packages groups += Build requires - binutils>=%{required_binutils_version} + binutils >= %{binutils_version} + filesystem >= 002 + glibc >= 2.16 glibc-devel gmp-devel - libgcc-devel + cpp = %{thisver} + libgcc = %{thisver} + libgomp = %{thisver} end - if "%{build_cloog_ppl}" == "1" - requires += cloog-ppl>=0.15 - end + # We do not ship libgcc-devel anymore. + provides += libgcc-devel = %{thisver} + obsoletes += libgcc-devel < %{thisver} end - # XXX add package descriptions - package %{name}-c++ - requires = gcc=%{thisver} libstdc++-devel + summary = C++ support for GCC. + description + This package adds C++ support to the GNU Compiler Collection. + It includes support for most of the current C++ specification, + including templates and exception handling. + end + + requires + gcc = %{thisver} + libstdc++ = %{thisver} + libstdc++-devel = %{thisver} + end files /usr/bin/*++ - /usr/lib/gcc/*/*/cc1plus + %{libdir}/gcc/*/*/cc1plus /usr/share/man/man*/*++* end end - package libgcc + package cpp + summary = The C Preprocessor. + description + Cpp is the GNU C-Compatible Compiler Preprocessor. + Cpp is a macro processor which is used automatically + by the C compiler to transform your program before actual + compilation. It is called a macro processor because it allows + you to define macros, abbreviations for longer + constructs. + + The C preprocessor provides four separate functionalities: the + inclusion of header files (files of declarations that can be + substituted into your program); macro expansion (you can define macros, + and the C preprocessor will replace the macros with their definitions + throughout the program); conditional compilation (using special + preprocessing directives, you can include or exclude parts of the + program according to various conditions); and line control (if you use + a program to combine or rearrange source files into an intermediate + file which is then compiled, you can use line control to inform the + compiler about where each source line originated). + + You should install this package if you are a C programmer and you use + macros. + end + group = Development/Languages + files - /lib/libgcc*.so.* + %{prefix}/lib/cpp + %{bindir}/cpp + %{mandir}/man1/cpp.1* + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1 end + + provides = /lib/cpp + requires = gcc-c++ = %{thisver} end - package libgcc-devel - requires = libgcc=%{thisver} + package libgcc + summary = GCC shared support library. + description + This package contains GCC shared support library which is needed + e.g. for exception handling support. + end files - /usr/lib/libgcc*.so + %{libdir}/libgcc*.so.* + end + + obsoletes + libmudflap + libmudflap-devel end end package libstdc++ + summary = GNU Standard C++ Library. + description + The libstdc++ package contains a rewritten standard compliant GCC Standard + C++ Library. + end + files - /usr/lib/libstdc++*.so.* + %{libdir}/libstdc++*.so.* end end package libstdc++-devel + summary = Header files and libraries for C++ development. + description + This is the GNU implementation of the standard C++ libraries. This + package includes the header files and libraries needed for C++ + development. This includes rewritten implementation of STL. + end + + requires + libstdc++ = %{thisver} + end + files - /usr/include/c++ - /usr/lib/libstdc++*.so + %{includedir}/c++ + %{libdir}/libstdc++*.so end end - package libgomp + package libstdc++-static + summary = Static libraries for the GNU standard C++ library + description = %{summary} + + requires + libstdc++-devel = %{thisver} + end + files - /usr/lib/libgomp*.so.* + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libstdc++.a + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libsupc++.a end end package libgomp + summary = GCC OpenMP v3.0 shared support library. + description + This package contains GCC shared support library which is needed + for OpenMP v3.0 support. + end + files - /usr/lib/libgomp*.so - /usr/lib/libgomp.spec + %{libdir}/libgomp*.so.* end end - package libmudflap + if "%{build_libquadmath}" == "1" + package libquadmath + summary = GCC __float128 shared support library. + description + This package contains GCC shared support library which is needed + for __float128 math support and for Fortran REAL*16 support. + end + + files + %{libdir}/libquadmath*.so.* + end + end + + package libquadmath-devel + summary = Development files for GCC __float128 support. + description + This package contains headers for building Fortran programs using + REAL*16 and programs using __float128 math. + end + + requires + gcc = %{thisver} + libquadmath = %{thisver} + end + + files + %{libdir}/libquadmath.so + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath.h + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath_weak.h + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libquadmath.so + end + end + end + + package libitm + summary = The GNU Transactional Memory library. + description + This package contains the GNU Transactional Memory library + which is a GCC transactional memory support runtime library. + end + + files + %{libdir}/libitm.so.* + end + end + + package libitm-devel + summary = The GNU Transactional Memory support. + description + This package contains headers and support files for the + GNU Transactional Memory library. + end + + requires + gcc = %{thisver} + libitm = %{thisver} + end + files - /usr/lib/libmudflap*.so.* + %{libdir}/libitm.so + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm.h + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm_weak.h + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libitm.so end end - package libmudflap-devel + package libatomic + summary = The GNU Atomic library + description + This package contains the GNU Atomic library which is a + GCC support runtime library for atomisc operations not + supported by hardware. + end + files - /usr/lib/libmudflap*.so + %{libdir}/libatomic.so.* end end - package libquadmath + package libasan + summary = The Address Sanitizer runtime library + description + This package contains the Address Sanitizer library + which is used for -fsanitize=address instrumented programs. + end + files - /usr/lib/libquadmath*.so.* + %{libdir}/libasan.so.* + end + end + + if "%{build_libtsan}" == "1" + package libtsan + summary = The Thread Sanitizer runtime library + description + This package contains the Thread Sanitizer library + which is used for -fsanitize=thread instrumented programs. + end + + files + %{libdir}/libtsan.so.* + end end end - package libquadmath-devel + if "%{build_libubsan}" == "1" + package libubsan + summary = The Undefined Behavior Sanitizer runtime library + description + This package contains the Undefined Behavior Sanitizer library + which is used for -fsanitize=undefined instrumented programs. + end + + files + %{libdir}/libubsan.so.* + end + end + end + + if "%{build_liblsan}" == "1" + package liblsan + summary = The Leak Sanitizer runtime library + description + This package contains the Leak Sanitizer library + which is used for -fsanitize=leak instrumented programs. + end + + files + %{libdir}/liblsan.so.* + end + end + end + + package gcc-plugin-devel + summary = Support for compiling GCC plugins. + description + This package contains header files and other support files + for compiling GCC plugins. The GCC plugin ABI is currently + not stable, so plugins must be rebuilt any time GCC is updated. + end + + requires + gcc = %{thisver} + gmp-devel >= 4.1.2-8 + mpfr-devel >= 2.2.1 + libmpc-devel >= 0.8.1 + end + files - /usr/lib/libquadmath*.so + %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin end end + + package %{name}-debuginfo + template DEBUGINFO + end end