dev-libs/jemalloc: Add -fno-builtin to CFLAGS when building integration tests

Patch from opensuse.
https://build.opensuse.org/projects/openSUSE:Factory/packages/jemalloc/files/fix_make_check_with_gcc15.patch
GCC 15 optimizes out allocations which aligned_alloc integration test
expects to fail.  Using the -fno-builtin option prevents GCC from
treating malloc specially in this way and the test-suite to pass.

Closes: https://bugs.gentoo.org/955995
Signed-off-by: NHOrus <jy6x2b32pie9@yahoo.com>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/595
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
NHOrus
2026-04-11 17:12:19 +03:00
committed by Sam James
parent 9dee509c13
commit 7d27004878
2 changed files with 83 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
https://bugs.gentoo.org/955995
From: Martin Jambor <mjambor@suse.cz>
Date: Wed, 30 Apr 2025 18:35:11 +0200
Subject: Add -fno-builtin to CFLAGS when building integration tests
References: boo#1240665, https://github.com/jemalloc/jemalloc/issues/2823
Upstream: tbd
GCC 15 optimizes out allocations which aligned_alloc integration test
expects to fail. Using the -fno-builtin option prevents GCC from
treating malloc specially in this way and the test-suite to pass.
Index: jemalloc-5.3.0/Makefile.in
===================================================================
--- jemalloc-5.3.0.orig/Makefile.in
+++ jemalloc-5.3.0/Makefile.in
@@ -654,6 +654,7 @@ uninstall: uninstall_doc
endif
tests_unit: $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%$(EXE))
+tests_integration: CFLAGS += -fno-builtin
tests_integration: $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%$(EXE)) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%$(EXE))
tests_analyze: $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%$(EXE))
tests_stress: $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%$(EXE))

View File

@@ -0,0 +1,59 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
inherit autotools multilib-minimal
DESCRIPTION="Jemalloc is a general-purpose scalable concurrent allocator"
HOMEPAGE="http://jemalloc.net/ https://github.com/jemalloc/jemalloc"
SRC_URI="https://github.com/jemalloc/jemalloc/releases/download/${PV}/${P}.tar.bz2"
LICENSE="BSD"
SLOT="0/2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="debug lazy-lock prof stats xmalloc"
HTML_DOCS=( doc/jemalloc.html )
PATCHES=(
"${FILESDIR}/${PN}-5.3.0-gentoo-fixups.patch"
"${FILESDIR}/${PN}-5.3.0-backport-pr-2312.patch"
"${FILESDIR}/${PN}-5.3.0-backport-pr-2338.patch"
"${FILESDIR}/${PN}-5.3.0-aarch64-64kib-page-size.patch" # users can override by passing `--with-lg-pagesize=foo`
"${FILESDIR}/${PN}-5.3.0-dont-call-libstdcxx-internals.patch"
"${FILESDIR}/${PN}-5.3.0-gcc15-make-check.patch"
)
MULTILIB_WRAPPED_HEADERS=( /usr/include/jemalloc/jemalloc.h )
src_prepare() {
default
eautoreconf
}
multilib_src_configure() {
local myconf=(
$(use_enable debug)
$(use_enable lazy-lock)
$(use_enable prof)
$(use_enable stats)
$(use_enable xmalloc)
)
ECONF_SOURCE="${S}" econf "${myconf[@]}"
}
multilib_src_install() {
# Copy man file which the Makefile looks for
cp "${S}/doc/jemalloc.3" "${BUILD_DIR}/doc" || die
emake DESTDIR="${D}" install
}
multilib_src_install_all() {
if [[ ${CHOST} == *-darwin* ]] ; then
# fixup install_name, #437362
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libjemalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libjemalloc.2.dylib || die
fi
find "${ED}" -name '*.a' -delete || die
}