Skip to content

Commit 0cf2fb9

Browse files
Merge #1243: build: Ensure no optimization when building for coverage analysis
8e79c7e build: Ensure no optimization when building for coverage analysis (Hennadii Stepanov) Pull request description: #944 introduced a regression when building for coverage analysis. The `-O2` flag from the default Autoconf's `CFLAGS` overrides the coverage-specific `-O0` one, which makes coverage analysis results [less reliable](https://gcc.gnu.org/onlinedocs/gcc/Gcov-and-Optimization.html). This PR restores the pre-#944 behaviour. In contrast to an alternative smaller diff: ```diff --- a/configure.ac +++ b/configure.ac @@ -240,7 +240,7 @@ fi if test x"$enable_coverage" = x"yes"; then SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOVERAGE=1" - SECP_CFLAGS="-O0 --coverage $SECP_CFLAGS" + CFLAGS="$CFLAGS -O0 --coverage " LDFLAGS="--coverage $LDFLAGS" else # Most likely the CFLAGS already contain -O2 because that is autoconf's default. ``` this PR ensures that the user always has the last word. FWIW, Bitcoin Core uses a similar [approach](https://github.com/bitcoin/bitcoin/blob/460e394625fab2942748aaeec9be31f460f91c58/configure.ac#L879-L884). ACKs for top commit: jonasnick: tested ACK 8e79c7e real-or-random: utACK 8e79c7e Tree-SHA512: f04b55921d397bd7c003ec0283101d3908f3fb507789c855e1b6d5abd150e7d6281d5eeb8fefbb7d6a55b3c6f29a19324f570eee009794f8fa9bca956229e7ce
2 parents 427bc3c + 8e79c7e commit 0cf2fb9

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

configure.ac

+11
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ AM_INIT_AUTOMAKE([1.11.2 foreign subdir-objects])
2929
# Make the compilation flags quiet unless V=1 is used.
3030
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
3131

32+
if test "${CFLAGS+set}" = "set"; then
33+
CFLAGS_overridden=yes
34+
else
35+
CFLAGS_overridden=no
36+
fi
3237
AC_PROG_CC
3338
AM_PROG_AS
3439
AM_PROG_AR
@@ -241,6 +246,12 @@ fi
241246
if test x"$enable_coverage" = x"yes"; then
242247
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOVERAGE=1"
243248
SECP_CFLAGS="-O0 --coverage $SECP_CFLAGS"
249+
# If coverage is enabled, and the user has not overridden CFLAGS,
250+
# override Autoconf's value "-g -O2" with "-g". Otherwise we'd end up
251+
# with "-O0 --coverage -g -O2".
252+
if test "$CFLAGS_overridden" = "no"; then
253+
CFLAGS="-g"
254+
fi
244255
LDFLAGS="--coverage $LDFLAGS"
245256
else
246257
# Most likely the CFLAGS already contain -O2 because that is autoconf's default.

0 commit comments

Comments
 (0)