%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}}
%define libsubdir %{libdir}/gcc/%{target_arch}/%{version}
+%define asan_force_options -fsanitize-recover=address -fsanitize=address -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE
+%define ubsan_force_options -fsanitize=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
+%define lsan_force_options -fsanitize=leak -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE
+
+%define asan_runtime_options halt_on_error=false:start_deactivated=true:print_cmdline=true:quarantine_size_mb=1:detect_leaks=0:log_path=/tmp/asan.log:log_exe_name=1
+%define ubsan_runtime_options print_cmdline=true:log_path=/tmp/ubsan.log
+%define lsan_runtime_options print_cmdline=true:detect_leaks=1:log_path=/tmp/lsan.log:log_exe_name=1:fast_unwind_on_malloc=false:malloc_context_size=5:suppressions=/lsan.supp:print_suppressions=false
+
Name: gcc%{?cross:-%{cross}}
# With generated files in src we could drop the following
BuildRequires: bison
# 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
+/usr/bin/gcc-force-options %asan_force_options -fno-common
+# Add ASan-related macros
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
-
+%%asan_force_options %{asan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%asan_force_options -fno-common
+%%restore_fcommon \\
+ %%gcc_unforce_options \\
+ %%gcc_force_options %%asan_force_options -fcommon
EOF
%preun -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=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
+/usr/bin/gcc-force-options %ubsan_force_options
+# Add UBSan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%ubsan_force_options %{ubsan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%ubsan_force_options
+EOF
%preun -n ubsan-force-options
# Restore read-only mode
# 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
+/usr/bin/gcc-force-options %lsan_force_options
+# Add LSan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%lsan_force_options %{lsan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%lsan_force_options
+EOF
%preun -n lsan-force-options
# Restore read-only mode
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
+echo "%{lsan_runtime_options}" > /LSAN_OPTIONS
chsmack -a "_" /etc/ld.so.preload /LSAN_OPTIONS /lsan.supp
%preun -n lsan-runtime-env
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_name=1" > /ASAN_OPTIONS
+echo "%{asan_runtime_options}" > /ASAN_OPTIONS
chsmack -a "_" /etc/ld.so.preload /ASAN_OPTIONS
%preun -n asan-runtime-env
UBSan runtime environment
%post -n ubsan-runtime-env
-echo "print_cmdline=true:log_path=/tmp/ubsan.log" > /UBSAN_OPTIONS
+echo "%{ubsan_runtime_options}" > /UBSAN_OPTIONS
%package plugin-devel
Summary: GNU GCC Plugin development files
%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}}
%define libsubdir %{libdir}/gcc/%{target_arch}/%{version}
+%define asan_force_options -fsanitize-recover=address -fsanitize=address -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE
+%define ubsan_force_options -fsanitize=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
+%define lsan_force_options -fsanitize=leak -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE
+
+%define asan_runtime_options halt_on_error=false:start_deactivated=true:print_cmdline=true:quarantine_size_mb=1:detect_leaks=0:log_path=/tmp/asan.log:log_exe_name=1
+%define ubsan_runtime_options print_cmdline=true:log_path=/tmp/ubsan.log
+%define lsan_runtime_options print_cmdline=true:detect_leaks=1:log_path=/tmp/lsan.log:log_exe_name=1:fast_unwind_on_malloc=false:malloc_context_size=5:suppressions=/lsan.supp:print_suppressions=false
+
Name: gcc%{?cross:-%{cross}}
# With generated files in src we could drop the following
BuildRequires: bison
# 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
+/usr/bin/gcc-force-options %asan_force_options -fno-common
+# Add ASan-related macros
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
-
+%%asan_force_options %{asan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%asan_force_options -fno-common
+%%restore_fcommon \\
+ %%gcc_unforce_options \\
+ %%gcc_force_options %%asan_force_options -fcommon
EOF
%preun -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=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
+/usr/bin/gcc-force-options %ubsan_force_options
+# Add UBSan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%ubsan_force_options %{ubsan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%ubsan_force_options
+EOF
%preun -n ubsan-force-options
# Restore read-only mode
# 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
+/usr/bin/gcc-force-options %lsan_force_options
+# Add LSan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%lsan_force_options %{lsan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%lsan_force_options
+EOF
%preun -n lsan-force-options
# Restore read-only mode
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
+echo "%{lsan_runtime_options}" > /LSAN_OPTIONS
chsmack -a "_" /etc/ld.so.preload /LSAN_OPTIONS /lsan.supp
%preun -n lsan-runtime-env
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_name=1" > /ASAN_OPTIONS
+echo "%{asan_runtime_options}" > /ASAN_OPTIONS
chsmack -a "_" /etc/ld.so.preload /ASAN_OPTIONS
%preun -n asan-runtime-env
UBSan runtime environment
%post -n ubsan-runtime-env
-echo "print_cmdline=true:log_path=/tmp/ubsan.log" > /UBSAN_OPTIONS
+echo "%{ubsan_runtime_options}" > /UBSAN_OPTIONS
%package plugin-devel
Summary: GNU GCC Plugin development files
%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}}
%define libsubdir %{libdir}/gcc/%{target_arch}/%{version}
+%define asan_force_options -fsanitize-recover=address -fsanitize=address -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE
+%define ubsan_force_options -fsanitize=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
+%define lsan_force_options -fsanitize=leak -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE
+
+%define asan_runtime_options halt_on_error=false:start_deactivated=true:print_cmdline=true:quarantine_size_mb=1:detect_leaks=0:log_path=/tmp/asan.log:log_exe_name=1
+%define ubsan_runtime_options print_cmdline=true:log_path=/tmp/ubsan.log
+%define lsan_runtime_options print_cmdline=true:detect_leaks=1:log_path=/tmp/lsan.log:log_exe_name=1:fast_unwind_on_malloc=false:malloc_context_size=5:suppressions=/lsan.supp:print_suppressions=false
+
Name: gcc%{?cross:-%{cross}}
# With generated files in src we could drop the following
BuildRequires: bison
# 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
+/usr/bin/gcc-force-options %asan_force_options -fno-common
+# Add ASan-related macros
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
-
+%%asan_force_options %{asan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%asan_force_options -fno-common
+%%restore_fcommon \\
+ %%gcc_unforce_options \\
+ %%gcc_force_options %%asan_force_options -fcommon
EOF
%preun -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=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
+/usr/bin/gcc-force-options %ubsan_force_options
+# Add UBSan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%ubsan_force_options %{ubsan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%ubsan_force_options
+EOF
%preun -n ubsan-force-options
# Restore read-only mode
# 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
+/usr/bin/gcc-force-options %lsan_force_options
+# Add LSan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%lsan_force_options %{lsan_force_options}
+%%gcc_unforce_options /usr/bin/gcc-unforce-options
+%%gcc_force_options /usr/bin/gcc-force-options
+%%gcc_force_default_options %%gcc_force_options %%lsan_force_options
+EOF
%preun -n lsan-force-options
# Restore read-only mode
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
+echo "%{lsan_runtime_options}" > /LSAN_OPTIONS
chsmack -a "_" /etc/ld.so.preload /LSAN_OPTIONS /lsan.supp
%preun -n lsan-runtime-env
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_name=1" > /ASAN_OPTIONS
+echo "%{asan_runtime_options}" > /ASAN_OPTIONS
chsmack -a "_" /etc/ld.so.preload /ASAN_OPTIONS
%preun -n asan-runtime-env
UBSan runtime environment
%post -n ubsan-runtime-env
-echo "print_cmdline=true:log_path=/tmp/ubsan.log" > /UBSAN_OPTIONS
+echo "%{ubsan_runtime_options}" > /UBSAN_OPTIONS
%package plugin-devel
Summary: GNU GCC Plugin development files