Add ISan related options and isan-force-options package
[platform/upstream/gcc-contrib.git] / packaging / gcc-contrib.spec
index 087da06..c24b556 100644 (file)
@@ -40,6 +40,7 @@
 %define asan_force_options -fsanitize-recover=address -fsanitize=address -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE -Wl,--as-needed -ldl -lpthread
 %define ubsan_force_options -fsanitize=undefined,bounds-strict,float-divide-by-zero,float-cast-overflow
 %define lsan_force_options -fsanitize=leak -marm -Wa,-mimplicit-it=arm -fno-omit-frame-pointer -Wp,-U_FORTIFY_SOURCE -Wl,--as-needed -ldl -lpthread
+%define isan_force_options -fsanitize=unsigned-integer-overflow
 
 %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
@@ -144,6 +145,39 @@ chmod a-w %{libsubdir}
               && find -L /emul/usr/*/gcc -name 'collect2' | xargs dirname | xargs chmod a-w
 /usr/bin/gcc-unforce-options
 
+%package -n isan-force-options
+Summary:    Scripts to enable automatic package sanitization
+Group:      System Environment
+Requires:   gcc
+Requires:   libubsan
+
+%description -n isan-force-options
+Scripts for ISan instrumentation
+
+%post -n isan-force-options
+# Change mode to allow all users to run gcc-force/unforce-options
+chmod a+w /usr/bin
+chmod a+w %{libsubdir}
+[ -d /emul/ ] && chmod a+w /emul/usr/bin/ && chmod a+w /emul/home/abuild/rpmbuild/BUILD/gcc-*/obj/gcc/ \
+              && find -L /emul/usr/*/gcc -name 'collect2' | xargs dirname | xargs chmod a+w
+/usr/bin/gcc-force-options %isan_force_options
+# Add ISan-related macros
+cat >> /usr/lib/rpm/tizen_macros << EOF
+
+%%isan_force_options %{isan_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 %%isan_force_options
+EOF
+
+%preun -n isan-force-options
+# Restore read-only mode
+chmod a-w /usr/bin
+chmod a-w %{libsubdir}
+[ -d /emul/ ] && chmod a-w /emul/usr/bin/ && chmod a-w /emul/home/abuild/rpmbuild/BUILD/gcc-*/obj/gcc/ \
+              && find -L /emul/usr/*/gcc -name 'collect2' | xargs dirname | xargs chmod a-w
+/usr/bin/gcc-unforce-options
+
 %package -n ubsan-build-env
 Summary:    UBSan build environment
 Group:      System Environment
@@ -322,6 +356,11 @@ install -m 0755 %{SOURCE23} %{buildroot}/%{_rpmconfigdir}/tizen/
 %{_prefix}/bin/gcc-force-options
 %{_prefix}/bin/gcc-unforce-options
 
+%files -n isan-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-contrib.manifest