diff options
author | Dongkyun, Son <dongkyun.s@samsung.com> | 2017-01-11 19:29:59 +0900 |
---|---|---|
committer | Ivan Baravy <i.baravy@samsung.com> | 2017-02-16 19:57:20 +0300 |
commit | cadcd442ec268f976de8c84782216e3033cd88d2 (patch) | |
tree | 713877ebd9e71c6de2232652e102762440bb267c /packaging/gcc-aarch64.spec | |
parent | 4d592bd069a552adb7af8f45ec6e5ded706475dd (diff) | |
download | linaro-gcc-cadcd442ec268f976de8c84782216e3033cd88d2.tar.gz linaro-gcc-cadcd442ec268f976de8c84782216e3033cd88d2.tar.bz2 linaro-gcc-cadcd442ec268f976de8c84782216e3033cd88d2.zip |
packaging: add packaging
Change-Id: Icd5159e115d6827eaaff5ff59861d07438c29129
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
Diffstat (limited to 'packaging/gcc-aarch64.spec')
-rw-r--r-- | packaging/gcc-aarch64.spec | 1253 |
1 files changed, 1253 insertions, 0 deletions
diff --git a/packaging/gcc-aarch64.spec b/packaging/gcc-aarch64.spec new file mode 100644 index 00000000000..82233dda2c5 --- /dev/null +++ b/packaging/gcc-aarch64.spec @@ -0,0 +1,1253 @@ +%define cross aarch64 +%define aarch64 1 + +# +# spec file for package gcc6 +# +# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 Tizen +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.tizen.org/ +# +# we use %%{?macro: ... } as it is more compact +%if 0%{?run_tests} +%define gcc_run_tests 1 +%endif + +%define tsan_arch x86_64 aarch64 +%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 +%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k +%define lsan_arch x86_64 aarch64 %arm %ix86 +%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 +%define cilkrts_arch x86_64 %ix86 + +%ifarch armv7l +%define ARCH armv7l +%define ABI eabi +%endif +%ifarch %ix86 +%define ARCH i586 +%endif +%ifarch x86_64 +%define ARCH x86_64 +%endif +%ifarch aarch64 +%define ARCH aarch64 +%endif +%define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} + +%define target_cpu %{?cross}%{!?cross:%{ARCH}} +%define target_abi %{?cross:%{?armv7l:eabi}}%{!?cross:%{?ABI}} + +%define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi} +%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}} +%define libsubdir %{libdir}/gcc/%{target_arch}/%{version} + +Name: gcc%{?cross:-%{cross}} +# With generated files in src we could drop the following +BuildRequires: bison +BuildRequires: flex +BuildRequires: gettext-devel +BuildRequires: makeinfo +## until here, but at least renaming and patching info files breaks this +BuildRequires: gcc-c++ +BuildRequires: zlib-devel +%ifarch x86_64 +BuildRequires: glibc-devel-32bit +%endif +BuildRequires: perl +%{?cross:BuildRequires: binutils-%{cross}} +# here we use %%if because OBS spec parser cannot expand +# %%{?macro:...} correctly +%if 0%{?gcc_run_tests} +BuildRequires: dejagnu +BuildRequires: expect +BuildRequires: gdb +%endif +URL: http://gcc.gnu.org/ +Version: 6.2.1 +Release: 0 +Source: gcc-%{version}.tar.bz2 +Source10: gmp-6.1.1.tar.bz2 +Source11: mpfr-3.1.5.tar.bz2 +Source12: mpc-1.0.3.tar.gz +Source13: isl-0.17.1.tar.bz2 +Source14: cloog-0.18.4.tar.gz +Source15: gcc-force-options +Source16: gcc-unforce-options +Source17: ASAN_OPTIONS +Source18: asan_symbolize.py +Source19: LSAN_OPTIONS +Source20: gcc.manifest +Source21: UBSAN_OPTIONS +Source22: macros.ubsan +Source23: extract-ubsan-logs +Source24: lsan.supp +Group: Development/Building +Summary: The GNU C Compiler and Support Files +License: GPL-3.0+ +%{?cross:ExcludeArch: %{cross}} +%description +Core package for the GNU Compiler Collection, including the C language +frontend. + +%package c++ +Summary: The GNU C++ Compiler +License: GPL-3.0+ +Group: Development/Languages +%description c++ +This package contains the GNU compiler for C++. + +%package -n libstdc++ +Summary: The standard C++ shared library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++ +The standard C++ library, needed for dynamically linked C++ programs. +%post -n libstdc++ -p /sbin/ldconfig +%postun -n libstdc++ -p /sbin/ldconfig + +%package -n libstdc++-devel +Summary: Include Files and Libraries mandatory for Development +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++-devel +This package contains all the headers and libraries of the standard C++ +library. It is needed for compiling C++ code. + +%package -n libgcc +Summary: C compiler runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgcc +Libgcc is needed for dynamically linked C programs. +%post -n libgcc -p /sbin/ldconfig +%postun -n libgcc -p /sbin/ldconfig + +%package -n libgomp +Summary: The GNU compiler collection OpenMP runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgomp +This is the OpenMP runtime library needed by OpenMP enabled programs +that were built with the -fopenmp compiler option and by programs that +were auto-parallelized via the -ftree-parallelize-loops compiler +option. +%post -n libgomp -p /sbin/ldconfig +%postun -n libgomp -p /sbin/ldconfig + +%package objc +Summary: GNU Objective C Compiler +License: GPL-3.0+ +Group: Development/Languages +%description objc +This package contains the GNU Objective C compiler. Objective C is an +object oriented language, created by Next Inc. and used in their +Nextstep OS. The source code is available in the gcc package. + +%package -n libobjc +Summary: Library for the GNU Objective C Compiler +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libobjc +The library for the GNU Objective C compiler. +%post -n libobjc -p /sbin/ldconfig +%postun -n libobjc -p /sbin/ldconfig + +%package obj-c++ +Summary: GNU Objective C++ Compiler +License: GPL-3.0+ +Group: Development/Languages +%description obj-c++ +This package contains the GNU Objective C++ compiler. Objective C++ is an +object oriented language, created by Next Inc. and used in their +Nextstep OS. The source code is available in the gcc package. + +%package -n cpp +Summary: The GCC Preprocessor +License: GPL-3.0+ +Group: Development/Languages +%description -n cpp +This Package contains just the preprocessor that is used by the X11 +packages. + +%package ada +Summary: GNU Ada95 Compiler Based on GCC (GNAT) +License: GPL-3.0+ +Group: Development/Languages +%description ada +This package contains an Ada95 compiler and associated development +tools based on the GNU GCC technology. Ada95 is the object oriented +successor of the Ada83 language. To build this package from source you +must have installed a binary version to bootstrap the compiler. + +%package -n libada +Summary: GNU Ada Runtime Libraries +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libada +This package contains the shared libraries required to run programs +compiled with the GNU Ada compiler (GNAT) if they are compiled to use +shared libraries. It also contains the shared libraries for the +Implementation of the Ada Semantic Interface Specification (ASIS), the +implementation of Distributed Systems Programming (GLADE) and the Posix +1003.5 Binding (Florist). +%post -n libada -p /sbin/ldconfig +%postun -n libada -p /sbin/ldconfig + +%package -n libquadmath +Summary: The GNU Fortran Compiler Quadmath Runtime Library +License: LGPL-2.1 +Group: Development/Languages +%description -n libquadmath +The runtime library needed to run programs compiled with the Fortran compiler +of the GNU Compiler Collection (GCC) and quadruple precision floating point +operations. +%post -n libquadmath -p /sbin/ldconfig +%postun -n libquadmath -p /sbin/ldconfig + +%package -n libitm +Summary: The GNU Compiler Transactional Memory Runtime Library +License: MIT +Group: Development/Languages +%description -n libitm +The runtime library needed to run programs compiled with the +-fgnu-tm option of the GNU Compiler Collection (GCC). +%post -n libitm -p /sbin/ldconfig +%postun -n libitm -p /sbin/ldconfig + +%package -n libasan +Summary: The GNU Compiler Address Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libasan +The runtime library needed to run programs compiled with the +-fsanitize=address option of the GNU Compiler Collection (GCC). +%post -n libasan -p /sbin/ldconfig +%postun -n libasan -p /sbin/ldconfig + +%package -n libtsan +Summary: The GNU Compiler Thread Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libtsan +The runtime library needed to run programs compiled with the +-fsanitize=thread option of the GNU Compiler Collection (GCC). +%post -n libtsan -p /sbin/ldconfig +%postun -n libtsan -p /sbin/ldconfig + +%package -n libatomic +Summary: The GNU Compiler Atomic Operations Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libatomic +The runtime library for atomic operations of the GNU Compiler Collection (GCC). +%post -n libatomic -p /sbin/ldconfig +%postun -n libatomic -p /sbin/ldconfig + +%package -n libcilkrts +Summary: The GNU Compiler Cilk+ Runtime Library +License: MIT +Group: Development/Languages +%description -n libcilkrts +The runtime library needed to run programs compiled with the +-fcilkplus option of the GNU Compiler Collection (GCC). +%post -n libcilkrts -p /sbin/ldconfig +%postun -n libcilkrts -p /sbin/ldconfig + +%package -n liblsan +Summary: The GNU Compiler Leak Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n liblsan +The runtime library needed to run programs compiled with the +-fsanitize=leak option of the GNU Compiler Collection (GCC). +%post -n liblsan -p /sbin/ldconfig +%postun -n liblsan -p /sbin/ldconfig + +%package -n libubsan +Summary: The GNU Compiler Undefined Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libubsan +The runtime library needed to run programs compiled with the +-fsanitize=undefined option of the GNU Compiler Collection (GCC). +%post -n libubsan -p /sbin/ldconfig +%postun -n libubsan -p /sbin/ldconfig + +%package -n libvtv +Summary: The GNU Compiler Vtable Verifier Runtime Library +License: MIT +Group: Development/Languages +%description -n libvtv +The runtime library needed to run programs compiled with the +-fvtable-verify option of the GNU Compiler Collection (GCC). +%post -n libvtv -p /sbin/ldconfig +%postun -n libvtv -p /sbin/ldconfig + +%package -n libgcj +Summary: Java Runtime Library for gcc +License: GPL-2.0-with-classpath-exception +Group: Development/Building +%description -n libgcj +This library is needed if you want to use the GNU Java compiler, gcj. +Source code for this package is in gcc. +%post -n libgcj -p /sbin/ldconfig +%postun -n libgcj -p /sbin/ldconfig + +%package java +Summary: The GNU Java Compiler +License: GPL-3.0+ +Group: Development/Languages +%description java +The Java compiler from the GCC-tools-suite. + +%package -n libgcj_bc +Summary: Fake library for BC-ABI compatibility. +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n libgcj_bc +A fake library that is used at link time only. It ensures that +binaries built with the BC-ABI link against a constant SONAME. +This way, BC-ABI binaries continue to work if the SONAME underlying +libgcj.so changes. + +%package -n libgcj-jar +Summary: Java runtime library (jar files). +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n libgcj-jar +These are the jar files that go along with the gcj front end to gcc. + +%package -n libgcj-devel +Summary: Include Files and Libraries mandatory for Development. +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n libgcj-devel +This package contains all necessary include files and libraries needed +to develop applications that require these. + +%package -n gcc-gij +Summary: Java Bytecode Interpreter for gcc +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n gcc-gij +This package contains the java bytecode interpreter gij and related tools. + +%package -n libffi +Summary: Foreign Function Interface library +License: BSD-3-Clause +Group: Development/Building +%description -n libffi +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libffi -p /sbin/ldconfig +%postun -n libffi -p /sbin/ldconfig + +%package -n libffi-devel +Summary: Foreign Function Interface library development files +License: BSD 3-Clause +Group: Development/Building +%description -n libffi-devel +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. + +%package go +Summary: GNU Go Compiler +License: GPL-3.0+ +Group: Development/Languages +%description go +This package contains a Go compiler and associated development +files based on the GNU GCC technology. + +%package -n libgo +Summary: GNU Go compiler runtime library +License: BSD-3-Clause +Group: Development/Languages +%description -n libgo +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libgo -p /sbin/ldconfig +%postun -n libgo -p /sbin/ldconfig + +%package testresults +Summary: Testsuite results +License: SUSE-Public-Domain +Group: Development/Languages +%description testresults +Results from running the gcc and target library testsuites. + +%package -n gcc-32bit +Summary: The GNU C Compiler 32bit support +Group: Development/Building +%description -n gcc-32bit +This package contains 32bit support for the GNU Compiler Collection. + +%package -n libstdc++-devel-32bit +Summary: Include Files and Libraries mandatory for Development +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++-devel-32bit +This package contains all the headers and libraries of the standard C++ +library. It is needed for compiling C++ code. + +%package -n libgcc-32bit +Summary: C compiler runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgcc-32bit +Libgcc is needed for dynamically linked C programs. +%post -n libgcc-32bit -p /sbin/ldconfig +%postun -n libgcc-32bit -p /sbin/ldconfig + +%package -n libgomp-32bit +Summary: The GNU compiler collection OpenMP runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgomp-32bit +This is the OpenMP runtime library needed by OpenMP enabled programs +that were built with the -fopenmp compiler option and by programs that +were auto-parallelized via the -ftree-parallelize-loops compiler +option. +%post -n libgomp-32bit -p /sbin/ldconfig +%postun -n libgomp-32bit -p /sbin/ldconfig + +%package -n libstdc++-32bit +Summary: The standard C++ shared library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++-32bit +The standard C++ library, needed for dynamically linked C++ programs. +%post -n libstdc++-32bit -p /sbin/ldconfig +%postun -n libstdc++-32bit -p /sbin/ldconfig + +%package objc-32bit +Summary: GNU Objective C Compiler +License: GPL-3.0+ +Group: Development/Languages +%description objc-32bit +This package contains the GNU Objective C compiler. Objective C is an +object oriented language, created by Next Inc. and used in their +Nextstep OS. The source code is available in the gcc package. + +%package -n libobjc-32bit +Summary: Library for the GNU Objective C Compiler +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libobjc-32bit +The library for the GNU Objective C compiler. +%post -n libobjc-32bit -p /sbin/ldconfig +%postun -n libobjc-32bit -p /sbin/ldconfig + +%package ada-32bit +Summary: GNU Ada95 Compiler Based on GCC (GNAT) +License: GPL-3.0+ +Group: Development/Languages +%description ada-32bit +This package contains an Ada95 compiler and associated development +tools based on the GNU GCC technology. Ada95 is the object oriented +successor of the Ada83 language. To build this package from source you +must have installed a binary version to bootstrap the compiler. + +%package -n libada-32bit +Summary: GNU Ada Runtime Libraries +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libada-32bit +This package contains the shared libraries required to run programs +compiled with the GNU Ada compiler (GNAT) if they are compiled to use +shared libraries. It also contains the shared libraries for the +Implementation of the Ada Semantic Interface Specification (ASIS), the +implementation of Distributed Systems Programming (GLADE) and the Posix +1003.5 Binding (Florist). +%post -n libada-32bit -p /sbin/ldconfig +%postun -n libada-32bit -p /sbin/ldconfig + +%package -n libquadmath-32bit +Summary: The GNU Fortran Compiler Quadmath Runtime Library +License: LGPL-2.1 +Group: Development/Languages +%description -n libquadmath-32bit +The runtime library needed to run programs compiled with the Fortran compiler +of the GNU Compiler Collection (GCC) and quadruple precision floating point +operations. +%post -n libquadmath-32bit -p /sbin/ldconfig +%postun -n libquadmath-32bit -p /sbin/ldconfig + +%package -n libitm-32bit +Summary: The GNU Compiler Transactional Memory Runtime Library +License: MIT +Group: Development/Languages +%description -n libitm-32bit +The runtime library needed to run programs compiled with the +-fgnu-tm option of the GNU Compiler Collection (GCC). +%post -n libitm-32bit -p /sbin/ldconfig +%postun -n libitm-32bit -p /sbin/ldconfig + +%package -n libasan-32bit +Summary: The GNU Compiler Address Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libasan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=address option of the GNU Compiler Collection (GCC). +%post -n libasan-32bit -p /sbin/ldconfig +%postun -n libasan-32bit -p /sbin/ldconfig + +%package -n libtsan-32bit +Summary: The GNU Compiler Thread Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libtsan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=thread option of the GNU Compiler Collection (GCC). +%post -n libtsan-32bit -p /sbin/ldconfig +%postun -n libtsan-32bit -p /sbin/ldconfig + +%package -n libatomic-32bit +Summary: The GNU Compiler Atomic Operations Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libatomic-32bit +The runtime library for atomic operations of the GNU Compiler Collection (GCC). +%post -n libatomic-32bit -p /sbin/ldconfig +%postun -n libatomic-32bit -p /sbin/ldconfig + +%package -n libcilkrts-32bit +Summary: The GNU Compiler Cilk+ Runtime Library +License: MIT +Group: Development/Languages +%description -n libcilkrts-32bit +The runtime library needed to run programs compiled with the +-fcilkplus option of the GNU Compiler Collection (GCC). +%post -n libcilkrts-32bit -p /sbin/ldconfig +%postun -n libcilkrts-32bit -p /sbin/ldconfig + +%package -n liblsan-32bit +Summary: The GNU Compiler Leak Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n liblsan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=leak option of the GNU Compiler Collection (GCC). +%post -n liblsan-32bit -p /sbin/ldconfig +%postun -n liblsan-32bit -p /sbin/ldconfig + +%package -n libubsan-32bit +Summary: The GNU Compiler Undefined Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libubsan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=undefined option of the GNU Compiler Collection (GCC). +%post -n libubsan-32bit -p /sbin/ldconfig +%postun -n libubsan-32bit -p /sbin/ldconfig + +%package -n libvtv-32bit +Summary: The GNU Compiler Vtable Verifier Runtime Library +License: MIT +Group: Development/Languages +%description -n libvtv-32bit +The runtime library needed to run programs compiled with the +-fvtable-verify option of the GNU Compiler Collection (GCC). +%post -n libvtv-32bit -p /sbin/ldconfig +%postun -n libvtv-32bit -p /sbin/ldconfig + +%package -n libffi-32bit +Summary: Foreign Function Interface library +License: BSD-3-Clause +Group: Development/Building +%description -n libffi-32bit +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libffi-32bit -p /sbin/ldconfig +%postun -n libffi-32bit -p /sbin/ldconfig + +%package -n libffi-devel-32bit +Summary: Foreign Function Interface library development files +License: BSD 3-Clause +Group: Development/Building +%description -n libffi-devel-32bit +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. + +%package go-32bit +Summary: GNU Go Compiler +License: GPL-3.0+ +Group: Development/Languages +%description go-32bit +This package contains a Go compiler and associated development +files based on the GNU GCC technology. + +%package -n libgo-32bit +Summary: GNU Go compiler runtime library +License: BSD-3-Clause +Group: Development/Languages +%description -n libgo-32bit +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libgo-32bit -p /sbin/ldconfig +%postun -n libgo-32bit -p /sbin/ldconfig + +%package -n asan-force-options +Summary: Scripts to enable automatic package sanitization +Group: System Environment +Requires: gcc rpm +Requires: libasan + +%description -n asan-force-options +Scripts for ASan instrumentation + +%post -n asan-force-options +# Change mode to allow all users to run gcc-force/unforce-options +chmod a+w /usr/bin +[ -d /emul/ ] && chmod a+w /emul/usr/bin/ && chmod a+w /emul/home/abuild/rpmbuild/BUILD/gcc-%{version}/obj/gcc/ +/usr/bin/gcc-force-options -fsanitize-recover=address -fsanitize=address -fno-common -fno-omit-frame-pointer -U_FORTIFY_SOURCE +# Add restore_fcommon macro +cat >> /usr/lib/rpm/tizen_macros << EOF + +%restore_fcommon \\ + /usr/bin/gcc-unforce-options \\ + /usr/bin/gcc-force-options -fsanitize-recover=address -fsanitize=address -fcommon -fno-omit-frame-pointer -U_FORTIFY_SOURCE + +EOF + +%preun -n asan-force-options +# Restore read-only mode +chmod a-w /usr/bin +[ -d /emul/ ] && chmod a-w /emul/usr/bin/ && chmod a-w /emul/home/abuild/rpmbuild/BUILD/gcc-%{version}/obj/gcc/ +/usr/bin/gcc-unforce-options + +%package -n ubsan-force-options +Summary: Scripts to enable automatic package sanitization +Group: System Environment +Requires: gcc +Requires: libubsan + +%description -n ubsan-force-options +Scripts for UBSan instrumentation + +%post -n ubsan-force-options +# Change mode to allow all users to run gcc-force/unforce-options +chmod a+w /usr/bin +[ -d /emul/ ] && chmod a+w /emul/usr/bin/ && chmod a+w /emul/home/abuild/rpmbuild/BUILD/gcc-%{version}/obj/gcc/ +/usr/bin/gcc-force-options -fsanitize=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow + +%preun -n ubsan-force-options +# Restore read-only mode +chmod a-w /usr/bin +[ -d /emul/ ] && chmod a-w /emul/usr/bin/ && chmod a-w /emul/home/abuild/rpmbuild/BUILD/gcc-%{version}/obj/gcc/ +/usr/bin/gcc-unforce-options + +%package -n ubsan-build-env +Summary: UBSan build environment +Group: System Environment +Requires: gcc +Requires: libubsan rpm + +%description -n ubsan-build-env +UBSan build environment support files and scripts + +%post -n ubsan-build-env +cat %{_rpmconfigdir}/macros.ubsan >> %{_rpmconfigdir}/tizen_macros + +%package -n lsan-force-options +Summary: Scripts to enable automatic package sanitization +Group: System Environment +Requires: gcc +Requires: liblsan + +%description -n lsan-force-options +Scripts for LSan instrumentation + +%post -n lsan-force-options +# Change mode to allow all users to run gcc-force/unforce-options +chmod a+w /usr/bin +[ -d /emul/ ] && chmod a+w /emul/usr/bin/ && chmod a+w /emul/home/abuild/rpmbuild/BUILD/gcc-%{version}/obj/gcc/ +/usr/bin/gcc-force-options -fsanitize=leak -fno-omit-frame-pointer -U_FORTIFY_SOURCE + +%preun -n lsan-force-options +# Restore read-only mode +chmod a-w /usr/bin +[ -d /emul/ ] && chmod a-w /emul/usr/bin/ && chmod a-w /emul/home/abuild/rpmbuild/BUILD/gcc-%{version}/obj/gcc/ +/usr/bin/gcc-unforce-options +[ -d /emul/ ] && chmod a-w /emul/usr/bin/ + +%package -n asan-build-env +Summary: Asan build environment +Group: Development/Libraries +Requires: libasan + +%description -n asan-build-env +Asan build environment + +%post -n asan-build-env +# Add /usr/lib/libasan.so to /etc/ld.so.preload +[ -f /etc/ld.so.preload ] && mv -v /etc/ld.so.preload /etc/ld.so.preload.orig +echo "libasan.so" > /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && cat /etc/ld.so.preload.orig >> /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && rm -f /etc/ld.so.preload.orig + +%preun -n asan-build-env +# Restore /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && mv -v /etc/ld.so.preload.orig /etc/ld.so.preload + +%package -n lsan-runtime-env +Summary: LSan runtime environment +Group: Development/Libraries +Requires: liblsan +Requires(post): smack + +%description -n lsan-runtime-env +LSan runtime environment + +%post -n lsan-runtime-env +# Add /usr/lib64/liblsan.so to /etc/ld.so.preload +[ -f /etc/ld.so.preload ] && mv -v /etc/ld.so.preload /etc/ld.so.preload.orig +echo "%{libdir}/liblsan.so" > /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && cat /etc/ld.so.preload.orig >> /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && rm -f /etc/ld.so.preload.orig +chsmack -a "_" /etc/ld.so.preload /LSAN_OPTIONS /lsan.supp + +%preun -n lsan-runtime-env +# Restore /etc/ld.so.preload +mv -v /etc/ld.so.preload.orig /etc/ld.so.preload + +%package -n sanitizer-devel +Summary: Sanitizer platform-independent tools +License: MIT +Group: Development/Tools +BuildArch: noarch +Requires: binutils python +Requires(post): smack + +%description -n sanitizer-devel +The package contatins platform-independent tools for sanitization: +- asan_symbolize.py: script for offline symbolization of asan logs + +%package -n asan-runtime-env +Summary: Asan runtime environment for target device +Group: Development/Libraries + +%description -n asan-runtime-env +Asan runtime environment + +%post -n asan-runtime-env +# Add /usr/lib/libasan.so to /etc/ld.so.preload +[ -f /etc/ld.so.preload ] && mv -v /etc/ld.so.preload /etc/ld.so.preload.orig +echo "%{libdir}/libasan.so" > /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && cat /etc/ld.so.preload.orig >> /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && rm -f /etc/ld.so.preload.orig +echo "halt_on_error=false:start_deactivated=true:print_cmdline=true:quarantine_size_mb=1:detect_leaks=0:log_path=/tmp/asan.log:log_exe_path=1" > /ASAN_OPTIONS +chsmack -a "_" /etc/ld.so.preload /ASAN_OPTIONS + +%preun -n asan-runtime-env +# Restore /etc/ld.so.preload +[ -f /etc/ld.so.preload.orig ] && mv -v /etc/ld.so.preload.orig /etc/ld.so.preload + +%package -n ubsan-runtime-env +Summary: UBSan runtime environment for target device +Group: Development/Libraries +Requires: libubsan + +%description -n ubsan-runtime-env +UBSan runtime environment + +%post -n ubsan-runtime-env +echo "print_cmdline=true:log_path=/tmp/ubsan.log" > /UBSAN_OPTIONS + +%package plugin-devel +Summary: GNU GCC Plugin development files +License: GPL-3.0+ +Group: Development/Languages +%description plugin-devel +This package contains GCC Plugin development files needed for compiler +plugins build. + +%package -n sanitizer-sources +Summary: Sanitizer family tools sources +License: MIT +Group: Development/Tools +BuildArch: noarch + +%description -n sanitizer-sources +Sanitizer family tools sources for external tools. + +%prep + +%setup -q -n gcc-%{version} +cp %{SOURCE20} . + +tar xf %{SOURCE10} +ln -sf gmp-6.1.1 gmp +tar xf %{SOURCE11} +ln -sf mpfr-3.1.5 mpfr +tar xf %{SOURCE12} +ln -sf mpc-1.0.3 mpc +tar xf %{SOURCE13} +ln -sf isl-0.17.1 isl +tar xf %{SOURCE14} +ln -sf cloog-0.18.4 cloog + +echo "" > gcc/DEV-PHASE + +%global gcc_release `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/LINARO-VERSION` + +%build +rm -rf obj +mkdir obj +cd obj + +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fno-rtti//g' -e 's/-fno-exceptions//g' -e 's/-Wmissing-format-attribute//g' -e 's/-fstack-protector//g' -e 's/-ffortify=.//g' -e 's/-Wall//g' -e 's/-m32//g' -e 's/-m64//g' -e 's/-fexceptions//' -e 's/\([[:space:]]\+.*-D_FORTIFY_SOURCE=\)[[:alnum:]]\+/\10/g' +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D__USE_FORTIFY_LEVEL=0"` +%{?cross: +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'` +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(sse\|fpmath\)[^ ]*//g'` +} +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/ */ /g'` + + + +CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \ +TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ +../configure \ + --prefix=%{_prefix} \ + --infodir=%{_infodir} \ + --mandir=%{_mandir} \ + --libdir=%{libdir} \ + --libexecdir=%{libdir} \ + --enable-languages=c,c++ \ + --enable-checking=release \ + --disable-libssp \ + --disable-bootstrap \ + --disable-libvtv \ + --disable-plugin \ + --disable-libgcj \ + --with-slibdir=%{libdir} \ + --with-system-zlib \ + --with-sysroot=/ \ + --enable-__cxa_atexit \ + --enable-libstdcxx-allocator=new \ + --enable-version-specific-runtime-libs \ + --enable-linker-build-id \ + --without-system-libunwind \ + --enable-threads=posix \ + --disable-multilib \ + --disable-libquadmath \ + --enable-lto \ +%{!?cross: \ +%ifarch armv7l + --with-arch=armv7-a \ + --with-tune=cortex-a8 \ + --disable-sjlj-exceptions \ +%endif +%ifarch aarch64 + --with-arch=armv8-a \ + --disable-sjlj-exceptions \ +%endif +%ifarch %ix86 + --with-arch-32=i586 \ + --with-tune=generic \ + --disable-libmpx \ +%endif +%ifarch x86_64 + --with-arch-32=i586 \ + --with-tune=generic \ + --enable-multilib \ + --disable-libmpx \ +%endif +} \ +%{?cross: \ +%{?armv7l: \ + --with-arch=armv7-a \ + --with-tune=cortex-a8 \ + --disable-sjlj-exceptions \ +} \ +%{?aarch64: \ + --with-arch=armv8-a \ + --disable-sjlj-exceptions \ +} \ + --disable-libgcc \ + --disable-libgomp \ + --disable-libatomic \ + --disable-libstdc++-v3 \ + --disable-libsanitizer \ + --disable-libitm \ +} \ + --with-bugurl="http://bugs.tizen.org/" \ + --with-pkgversion="Tizen/Linaro GCC %{version} %{gcc_release}" \ + --target=%{target_arch} \ + --host=%{host_arch} \ + --build=%{host_arch} + + + +make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} +%{?gcc_run_tests: + echo "Run testsuite" + # asan needs a whole shadow address space + ulimit -v unlimited || true + make -k check %{?_smp_mflags} || true + mkdir ../testresults + ../contrib/test_summary | tee ../testresults/test_summary.txt +} + +%install +cd obj + +make install DESTDIR=$RPM_BUILD_ROOT + +%{?gcc_run_tests: + cp `find . -name "*.sum"` ../testresults/ + cp `find . -name "*.log" \! -name "config.log" | grep -v 'acats.\?/tests' ` ../testresults/ + chmod 644 ../testresults/* +} + +%{remove_docs} +rm -rf %{buildroot}/%{_datadir}/locale + +#remove everything we don't need +rm -rf %{buildroot}/%{libsubdir}/install-tools +find %{buildroot}/%{libsubdir} -name "*.la" -exec rm -rf {} + + +%{!?cross: +ln -s gcc %{buildroot}%{_bindir}/cc +mv %{buildroot}%{libsubdir}/libstdc++.so*-gdb.py %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/ + +# expose plugins for ar (required for lto builds) +mkdir -p %{buildroot}%{_prefix}/lib/bfd-plugins +ln -sf %{libsubdir}/liblto_plugin.so %{buildroot}%{_prefix}/lib/bfd-plugins/liblto_plugin.so + +# legacy preprocessor +mkdir -p %{buildroot}/lib +ln -s %{_bindir}/cpp %{buildroot}/lib/cpp + +# 32-bit libgcc in multilib configuration +%ifarch x86_64 +mv %{buildroot}%{_prefix}/lib/libgcc_s.so* %{buildroot}%{libsubdir}/32/ +%endif + +# move libraries to libdir +for lib in asan atomic cilkrts gfortran gomp itm lsan quadmath stdc++ supc++ tsan ubsan +do + [ -e %{buildroot}%{libsubdir}/lib$lib.a ] && mv %{buildroot}%{libsubdir}/lib$lib.a %{buildroot}%{libdir}/ + [ -e %{buildroot}%{libsubdir}/lib$lib.so ] && mv %{buildroot}%{libsubdir}/lib$lib.so* %{buildroot}%{libdir}/ +done +} + +%{?cross: +rm -rf %{buildroot}/%{libsubdir}/include-fixed +rm -rf %{buildroot}/%{libsubdir}/include +} + +%{!?cross: +cp %{SOURCE15} %{SOURCE16} %{SOURCE18} %{buildroot}%{_prefix}/bin +chmod a+x %{buildroot}%{_prefix}/bin/gcc-force-options +chmod a+x %{buildroot}%{_prefix}/bin/gcc-unforce-options +chmod a+x %{buildroot}%{_prefix}/bin/asan_symbolize.py + +cp %{SOURCE17} %{buildroot} +chmod 644 %{buildroot}/ASAN_OPTIONS + +%ifarch %lsan_arch +cp %{SOURCE19} %{SOURCE24} %{buildroot} +chmod 644 %{buildroot}/LSAN_OPTIONS +chmod 644 %{buildroot}/lsan.supp +%endif + +cd ../ +tar -czf libsanitizer.tar.bz libsanitizer +mkdir -p %{buildroot}/src +mv -v libsanitizer.tar.bz %{buildroot}/src + +mkdir -p %{buildroot}/%{_rpmconfigdir}/tizen/ +install -m 0644 %{SOURCE21} %{buildroot}/ +install -m 0644 %{SOURCE22} %{buildroot}/%{_rpmconfigdir}/ +install -m 0755 %{SOURCE23} %{buildroot}/%{_rpmconfigdir}/tizen/ +} + +%files +%manifest gcc.manifest +%defattr(-,root,root) +%{?cross: +%{_bindir}/* +%{libsubdir}/* +} +%{!?cross: +%{_bindir}/gcc +%{_bindir}/cc +%{_bindir}/gcov +%{_bindir}/gcov-tool +%{_bindir}/gcc-ar +%{_bindir}/gcc-nm +%{_bindir}/gcc-ranlib +%{_bindir}/%{target_arch}-gcc +%{_bindir}/%{target_arch}-gcc-%{version} +%{_bindir}/%{target_arch}-gcc-ar +%{_bindir}/%{target_arch}-gcc-nm +%{_bindir}/%{target_arch}-gcc-ranlib +%{libsubdir}/collect2 +%{libsubdir}/lto1 +%{libsubdir}/lto-wrapper +%{libsubdir}/liblto_plugin.so* +%{_prefix}/lib/bfd-plugins/liblto_plugin.so +%{libsubdir}/include-fixed/* +%{libsubdir}/include/*.h +%{libsubdir}/*.a +%{libsubdir}/*.so +%{libsubdir}/*.o +%{libsubdir}/*.spec +%{libdir}/*.so +%{libdir}/*.a +%ifarch %cilkrts_arch +%{libsubdir}/include/cilk/* +%endif +%{libsubdir}/include/sanitizer/* +%ifarch %asan_arch +%exclude %{libdir}/libasan.so +%endif +%ifarch %lsan_arch +%exclude %{libdir}/liblsan.so +%endif +%ifarch %tsan_arch +%exclude %{libdir}/libtsan.so +%endif + +%files c++ +%defattr(-,root,root) +%{libsubdir}/cc1plus +%{_bindir}/g++ +%{_bindir}/c++ +%{_bindir}/%{target_arch}-g++ +%{_bindir}/%{target_arch}-c++ + +%files -n libstdc++ +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libstdc++.so.* + +%files -n libstdc++-devel +%defattr(-,root,root) +%{libdir}/libstdc++.so +%{libdir}/libstdc++.a +%{libdir}/libsupc++.a +%{libsubdir}/include/c++/* +%{_datadir}/gcc-%{version}/python/libstdcxx/* + +%files -n libgcc +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libgcc_s.so.* + +%files -n libgomp +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libgomp.so.* + +%ifarch %asan_arch +%files -n libasan +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libasan.so* +%endif + +%ifarch %lsan_arch +%files -n liblsan +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/liblsan.so* +%endif + +%ifarch %tsan_arch +%files -n libtsan +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libtsan.so* +%endif + +%ifarch %atomic_arch +%files -n libatomic +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libatomic.so.* +%endif + +%ifarch %itm_arch +%files -n libitm +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libitm.so.* +%endif + +%ifarch %cilkrts_arch +%files -n libcilkrts +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libcilkrts.so.* +%endif + +%ifarch %ubsan_arch +%files -n libubsan +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libubsan.so.* +%endif + +%ifarch %quadmath_arch +%files -n libquadmath +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libquadmath.so.* +%endif + +%files -n cpp +%defattr(-,root,root) +%{_bindir}/cpp +%{libsubdir}/cc1 +/lib/cpp + +%files plugin-devel +%defattr(-,root,root) +%{libsubdir}/plugin/* + +%{?gcc_run_tests: +%files testresults +%defattr(-,root,root) +%doc testresults/test_summary.txt +%doc testresults/*.sum +%doc testresults/*.log +} +%ifarch x86_64 +%files -n gcc-32bit +%defattr(-,root,root) +%{libsubdir}/32/crt* +%{libsubdir}/32/*.a +%{libsubdir}/32/*.so +%{libsubdir}/32/*.o +%{libsubdir}/32/*.spec + +%ifarch %asan_arch +%files -n libasan-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/libasan.so.* +%endif + +%ifarch %lsan_arch +%files -n liblsan-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/liblsan.so.* +%endif + +%ifarch %atomic_arch +%files -n libatomic-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/libatomic.so.* +%endif + +%ifarch %cilkrts_arch +%files -n libcilkrts-32bit +%defattr(-,root,root) +%{libsubdir}/32/libcilkrts.so.* +%endif + +%files -n libgcc-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/libgcc_s.so.* + +%files -n libgomp-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/libgomp.so.* + +%ifarch %itm_arch +%files -n libitm-32bit +%defattr(-,root,root) +%{libsubdir}/32/libitm.so.* +%endif + +%ifarch %quadmath_arch +%files -n libquadmath-32bit +%defattr(-,root,root) +%{libsubdir}/32/libquadmath.so.* +%endif + +%ifarch %ubsan_arch +%files -n libubsan-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/libubsan.so.* +%endif + +%files -n libstdc++-32bit +%manifest gcc.manifest +%defattr(-,root,root) +%{libsubdir}/32/libstdc++.so.* +%exclude %{libsubdir}/32/libstdc++.so.*-gdb.py + +%files -n libstdc++-devel-32bit +%defattr(-,root,root) +%{libsubdir}/32/libstdc++.so.*-gdb.py +%endif + +%files -n asan-force-options +%defattr(-,root,root,-) +%{_prefix}/bin/gcc-force-options +%{_prefix}/bin/gcc-unforce-options + +%files -n ubsan-force-options +%defattr(-,root,root,-) +%{_prefix}/bin/gcc-force-options +%{_prefix}/bin/gcc-unforce-options + +%ifarch %lsan_arch +%files -n lsan-force-options +%manifest gcc.manifest +%defattr(-,root,root,-) +%{_prefix}/bin/gcc-force-options +%{_prefix}/bin/gcc-unforce-options +%endif + +%files -n asan-build-env +%defattr(-,root,root,-) +/ASAN_OPTIONS + +%files -n asan-runtime-env +%defattr(-,root,root,-) + +%ifarch %lsan_arch +%files -n lsan-runtime-env +%defattr(-,root,root,-) +/LSAN_OPTIONS +/lsan.supp +%endif + +%ifarch %ubsan_arch +%files -n ubsan-build-env +%defattr(-,root,root,-) +/UBSAN_OPTIONS +%{_rpmconfigdir}/macros.ubsan +%{_rpmconfigdir}/tizen/extract-ubsan-logs + +%files -n ubsan-runtime-env +%defattr(-,root,root,-) +%endif + +%files -n sanitizer-devel +%defattr(-,root,root,-) +%{_prefix}/bin/asan_symbolize.py + +%files -n sanitizer-sources +%defattr(-,root,root,-) +/src/libsanitizer.tar.bz + +} + +%changelog |