mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
![Alex Richardson](/assets/img/avatar_default.png)
I was investigating libarchive test failures on CheriBSD and it turns out we get a reproducible SIGBUS for test_archive_m5, etc. Debugging this shows that libarchive and the tests disagree when it comes to the definition of archive_md5_ctx: libarchive assumes it's the OpenSSL type whereas the test use the libmd type. The latter is not necessarily aligned enough to store a pointer (16 bytes for CHERI RISC-V), so we were crashing when storing EVP_MD_CTX* to an 8-byte-aligned archive_md5_ctx. To avoid problems like this in the future, factor out the common compiler flags into a Makefile.inc and include that from the tests Makefile. Reviewed By: lwhsu Differential Revision: https://reviews.freebsd.org/D26469
22 lines
700 B
Makefile
22 lines
700 B
Makefile
# $FreeBSD$
|
|
# These defines are needed for both libarchive and the tests. If we don't keep
|
|
# them in sync we can get run-time crashes while running tests due to mismatches
|
|
# between structures such as archive_md5_ctx, etc.
|
|
|
|
LIBADD= z bz2 lzma bsdxml zstd
|
|
CFLAGS+= -DHAVE_BZLIB_H=1 -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 -DHAVE_ZSTD_H=1 -DHAVE_LIBZSTD=1
|
|
CFLAGS+= -DPLATFORM_CONFIG_H=\"${.CURDIR}/config_freebsd.h\"
|
|
|
|
.if ${MK_OPENSSL} != "no"
|
|
CFLAGS+= -DWITH_OPENSSL
|
|
LIBADD+= crypto
|
|
.else
|
|
LIBADD+= md
|
|
.endif
|
|
|
|
.if ${MK_ICONV} != "no"
|
|
# TODO: This can be changed back to CFLAGS once iconv works correctly
|
|
# with statically linked binaries.
|
|
SHARED_CFLAGS+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=
|
|
.endif
|