Skip to content

Commit 163f4ad

Browse files
authored
Merge pull request #11081 from HiassofT/le13-gcc-sanitizer
Add support for using gcc sanitizers
2 parents 2c80aaa + 8afe386 commit 163f4ad

3 files changed

Lines changed: 28 additions & 2 deletions

File tree

config/optimize

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ CXXFLAGS_OPTIM_SPEED="$CFLAGS_OPTIM_SPEED"
4242
CFLAGS_OPTIM_SIZE="-Os -fomit-frame-pointer"
4343
CXXFLAGS_OPTIM_SIZE="$CFLAGS_OPTIM_SIZE"
4444
# debug settings
45-
CFLAGS_OPTIM_DEBUG="-ggdb -Og"
45+
CFLAGS_OPTIM_DEBUG="-ggdb -Og ${DEBUG_SANITIZER_CFLAGS}"
4646
CXXFLAGS_OPTIM_DEBUG="$CFLAGS_OPTIM_DEBUG"
47-
LDFLAGS_OPTIM_DEBUG="-ggdb"
47+
LDFLAGS_OPTIM_DEBUG="-ggdb ${DEBUG_SANITIZER_LDFLAGS}"
4848
# split debug settings (requires gold)
4949
CFLAGS_OPTIM_DEBUG_SPLIT="-gdwarf-4 -gsplit-dwarf -Og"
5050
CXXFLAGS_OPTIM_DEBUG_SPLIT="$CFLAGS_OPTIM_DEBUG_SPLIT"

config/options

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,24 @@ if [ -z "${CONFIG_SHELL}" ] && [ -x "/bin/dash" ]; then
149149
export CONFIG_SHELL="/bin/dash"
150150
fi
151151

152+
# enable gcc sanitizer support in debug builds
153+
# DEBUG_SANITIZER_FLAGS sets both CFLAGS and LDFLAGS
154+
if [ "${DEBUG:-no}" != "no" ]; then
155+
if [ -n "${DEBUG_SANITIZER_FLAGS}" ]; then
156+
DEBUG_SANITIZER_CFLAGS="${DEBUG_SANITIZER_FLAGS}"
157+
DEBUG_SANITIZER_LDFLAGS="${DEBUG_SANITIZER_FLAGS}"
158+
fi
159+
if [ -n "${DEBUG_SANITIZER_CFLAGS}" ] || [ -n "${DEBUG_SANITIZER_LDFLAGS}" ]; then
160+
SANITIZER_SUPPORT="yes"
161+
else
162+
SANITIZER_SUPPORT="no"
163+
fi
164+
else
165+
SANITIZER_SUPPORT="no"
166+
DEBUG_SANITIZER_CFLAGS=""
167+
DEBUG_SANITIZER_LDFLAGS=""
168+
fi
169+
152170
check_config
153171

154172
. config/graphic

packages/lang/gcc/package.mk

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,14 @@ makeinstall_target() {
168168
mkdir -p ${INSTALL}/usr/lib
169169
cp -P ${PKG_BUILD}/.${HOST_NAME}/${TARGET_NAME}/libgcc/libgcc_s.so* ${INSTALL}/usr/lib
170170
cp -P ${PKG_BUILD}/.${HOST_NAME}/${TARGET_NAME}/libstdc++-v3/src/.libs/libstdc++.so* ${INSTALL}/usr/lib
171+
if [ "${SANITIZER_SUPPORT}" = "yes" ]; then
172+
for f in ${PKG_BUILD}/.${HOST_NAME}/${TARGET_NAME}/libsanitizer/*/.libs/*.so*; do
173+
# exclude so.0.0.0T files
174+
if [[ ! "${f}" =~ T$ ]]; then
175+
cp -P "${f}" ${INSTALL}/usr/lib
176+
fi
177+
done
178+
fi
171179
if [ "${OPTS_LIBATOMIC}" = "--enable-libatomic" ]; then
172180
cp -P ${PKG_BUILD}/.${HOST_NAME}/${TARGET_NAME}/libatomic/.libs/libatomic.so* ${INSTALL}/usr/lib
173181
fi

0 commit comments

Comments
 (0)