mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 10:05:29 +00:00
GCC 5.1 is too smart. Disable Identical Code Folding for preload libs.
We want to disabled Identical Code Folding for the tools preload shared
objects to get better backraces. For GCC 5.1 -fipa-icf is enabled by
default at -O2.
The optimization reduces code size and may disturb
unwind stacks by replacing a function by equivalent
one with a different name.
Add a configure check to see if GCC supports -fno-ipa-icf.
If it does then add the flag to AM_CFLAGS_PSO_BASE.
Without this GCC will notice some of the preload replacement functions
in vg_replace_strmem are identical and fold them all into one picking
a random (existing) function name. This causes backtraces showing
completely unexpected function names.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15305
This commit is contained in:
parent
9c0019f28a
commit
d2b96ae95b
@ -133,10 +133,10 @@ endif
|
||||
if VGCONF_OS_IS_DARWIN
|
||||
AM_CFLAGS_PSO_BASE = -dynamic \
|
||||
-O -g -fno-omit-frame-pointer -fno-strict-aliasing \
|
||||
-fpic -fPIC -fno-builtin
|
||||
-fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@
|
||||
else
|
||||
AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \
|
||||
-fpic -fno-builtin
|
||||
-fpic -fno-builtin @FLAG_FNO_IPA_ICF@
|
||||
endif
|
||||
|
||||
|
||||
|
||||
27
configure.ac
27
configure.ac
@ -1811,6 +1811,33 @@ CFLAGS=$safe_CFLAGS
|
||||
|
||||
AC_SUBST(FLAG_FNO_STACK_PROTECTOR)
|
||||
|
||||
# Does GCC support disabling Identical Code Folding?
|
||||
# We want to disabled Identical Code Folding for the
|
||||
# tools preload shared objects to get better backraces.
|
||||
# For GCC 5.1+ -fipa-icf is enabled by default at -O2.
|
||||
# "The optimization reduces code size and may disturb
|
||||
# unwind stacks by replacing a function by equivalent
|
||||
# one with a different name."
|
||||
AC_MSG_CHECKING([if gcc accepts -fno-ipa-icf])
|
||||
|
||||
safe_CFLAGS=$CFLAGS
|
||||
CFLAGS="-fno-ipa-icf"
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
|
||||
return 0;
|
||||
]])], [
|
||||
no_ipa_icf=yes
|
||||
FLAG_FNO_IPA_ICF="-fno-ipa-icf"
|
||||
AC_MSG_RESULT([yes])
|
||||
], [
|
||||
no_ipa_icf=no
|
||||
FLAG_FNO_IPA_ICF=""
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
CFLAGS=$safe_CFLAGS
|
||||
|
||||
AC_SUBST(FLAG_FNO_IPA_ICF)
|
||||
|
||||
|
||||
# Does this compiler support -fsanitize=undefined?
|
||||
# Only checked for if --enable-ubsan was given.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user