From: Denis Khalikov Date: Thu, 5 Jul 2018 10:04:58 +0000 (+0300) Subject: packaging: Add -marm and -fno-omit-frame-pointer X-Git-Tag: submit/tizen_base_dev/20230731.024114~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f0f7bcc2a0907bc63a68cd8d3ae50754217649db;p=platform%2Fupstream%2Fgcc.git packaging: Add -marm and -fno-omit-frame-pointer To enable "fastunwinder" work on armv7l we should explicitly build libasan with -marm and -fno-omit-frame-pointer. Change-Id: I28e763fa7b088aa26a81e7bb6d3a7fa9ba7a714b --- diff --git a/gcc/testsuite/c-c++-common/asan/fast-unwind.c b/gcc/testsuite/c-c++-common/asan/fast-unwind.c new file mode 100644 index 0000000..f411a55 --- /dev/null +++ b/gcc/testsuite/c-c++-common/asan/fast-unwind.c @@ -0,0 +1,49 @@ +/* { dg-do compile { target arm*-*-*} } */ +/* { dg-options "-fno-builtin-malloc -fno-builtin-free -fno-builtin-memset + * -fno-omit-frame-pointer -marm -Wa,-mimplicit-it=arm" } */ +/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */ +/* { dg-shouldfail "asan" } */ + +#ifdef __cplusplus +extern "C" { +#endif + +void *memset (void *, int, __SIZE_TYPE__); +void *malloc (__SIZE_TYPE__); +void free (void *); + +const char * +__asan_default_options () { + return "fast_unwind_on_fatal=true"; +} + +#ifdef __cplusplus +} +#endif +volatile int ten = 10; +__attribute__ ((noinline)) int +foo () +{ + char *x = (char *) malloc (10); + memset(x, 0, 10); + int res = x[ten]; /* BOOOM */ + free(x); + return res; +} + +__attribute__ ((noinline)) int +bar () +{ + return foo (); +} + +int +main (int argc, char **argv) +{ + return bar (); +} + +/* { dg-output "READ of size 1 at 0x\[0-9a-f\]+ thread T0.*(\n|\r\n|\r)" } */ +/* { dg-output " #0 0x\[0-9a-f\]+ +(in \[^\n\r]*foo\[^\n\r]*fast-unwind.c:29|\[(\]).*(\n|\r\n|\r)" } */ +/* { dg-output " #1 0x\[0-9a-f\]+ +(in \[^\n\r]*bar\[^\n\r]*fast-unwind.c:37|\[(\]).*(\n|\r\n|\r)" } */ +/* { dg-output " #2 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*fast-unwind.c:43|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */ diff --git a/packaging/gcc-aarch64.spec b/packaging/gcc-aarch64.spec index 8b21972..ff392d0 100644 --- a/packaging/gcc-aarch64.spec +++ b/packaging/gcc-aarch64.spec @@ -667,7 +667,12 @@ echo "" > gcc/DEV-PHASE %global gcc_release `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/LINARO-VERSION` %build -%{?asan:%gcc_unforce_options} +%{?asan: +%gcc_unforce_options +%ifarch armv7l +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -marm -Wa,-mimplicit-it=arm -fno-omit-frame-pointer" +%endif +} rm -rf obj mkdir obj cd obj diff --git a/packaging/gcc-armv7hl.spec b/packaging/gcc-armv7hl.spec index 74ebac9..30469a9 100644 --- a/packaging/gcc-armv7hl.spec +++ b/packaging/gcc-armv7hl.spec @@ -667,7 +667,12 @@ echo "" > gcc/DEV-PHASE %global gcc_release `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/LINARO-VERSION` %build -%{?asan:%gcc_unforce_options} +%{?asan: +%gcc_unforce_options +%ifarch armv7l +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -marm -Wa,-mimplicit-it=arm -fno-omit-frame-pointer" +%endif +} rm -rf obj mkdir obj cd obj diff --git a/packaging/gcc-armv7l.spec b/packaging/gcc-armv7l.spec index 07c2cdc..7e195d7 100644 --- a/packaging/gcc-armv7l.spec +++ b/packaging/gcc-armv7l.spec @@ -667,7 +667,12 @@ echo "" > gcc/DEV-PHASE %global gcc_release `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/LINARO-VERSION` %build -%{?asan:%gcc_unforce_options} +%{?asan: +%gcc_unforce_options +%ifarch armv7l +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -marm -Wa,-mimplicit-it=arm -fno-omit-frame-pointer" +%endif +} rm -rf obj mkdir obj cd obj diff --git a/packaging/linaro-gcc.spec b/packaging/linaro-gcc.spec index 27bfc5e..3703551 100644 --- a/packaging/linaro-gcc.spec +++ b/packaging/linaro-gcc.spec @@ -664,7 +664,12 @@ echo "" > gcc/DEV-PHASE %global gcc_release `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/LINARO-VERSION` %build -%{?asan:%gcc_unforce_options} +%{?asan: +%gcc_unforce_options +%ifarch armv7l +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -marm -Wa,-mimplicit-it=arm -fno-omit-frame-pointer" +%endif +} rm -rf obj mkdir obj cd obj