Skip to content

Commit

Permalink
apr: Cache configure tests which use AC_TRY_RUN
Browse files Browse the repository at this point in the history
AC_TRY_RUN macro means the test needs to run to find the result and we
are cross compiling so this will always get wrong results, this results
in miscompiling apache2 on musl because it disables rlimit
(ac_cv_struct_rlimit) wrongly.

All these variables are determined with AC_TRY_RUN checks

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
  • Loading branch information
kraj authored and rpurdie committed Aug 30, 2022
1 parent 084615c commit 504eb0f
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
From ee728971fd9d2da39356f1574d58d5daa3b24520 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 26 Aug 2022 00:28:08 -0700
Subject: [PATCH] configure: Remove runtime test for mmap that can map
/dev/zero

This never works for cross-compile moreover it ends up disabling
ac_cv_file__dev_zero which then results in compiler errors in shared
mutexes

Upstream-Status: Inappropriate [Cross-compile specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
configure.in | 32 --------------------------------
1 file changed, 32 deletions(-)

diff --git a/configure.in b/configure.in
index a99049d..f1f55c7 100644
--- a/configure.in
+++ b/configure.in
@@ -1182,38 +1182,6 @@ AC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \
APR_CHECK_DEFINE(MAP_ANON, sys/mman.h)
AC_CHECK_FILE(/dev/zero)

-# Not all systems can mmap /dev/zero (such as HP-UX). Check for that.
-if test "$ac_cv_func_mmap" = "yes" &&
- test "$ac_cv_file__dev_zero" = "yes"; then
- AC_MSG_CHECKING(for mmap that can map /dev/zero)
- AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#ifdef HAVE_SYS_MMAN_H
-#include <sys/mman.h>
-#endif
- int main()
- {
- int fd;
- void *m;
- fd = open("/dev/zero", O_RDWR);
- if (fd < 0) {
- return 1;
- }
- m = mmap(0, sizeof(void*), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
- if (m == (void *)-1) { /* aka MAP_FAILED */
- return 2;
- }
- if (munmap(m, sizeof(void*)) < 0) {
- return 3;
- }
- return 0;
- }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no])
-
- AC_MSG_RESULT($ac_cv_file__dev_zero)
-fi
-
# Now we determine which one is our anonymous shmem preference.
haveshmgetanon="0"
havemmapzero="0"
--
2.37.2

15 changes: 13 additions & 2 deletions meta/recipes-support/apr/apr_1.7.0.bb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.bz2 \
file://0001-Add-option-to-disable-timed-dependant-tests.patch \
file://autoconf270.patch \
file://0001-add-AC_CACHE_CHECK-for-strerror_r-return-type.patch \
file://0001-configure-Remove-runtime-test-for-mmap-that-can-map-.patch \
file://CVE-2021-35940.patch \
"

Expand All @@ -37,12 +38,22 @@ OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"

# Added to fix some issues with cmake. Refer to https://github.com/bmwcarit/meta-ros/issues/68#issuecomment-19896928
CACHED_CONFIGUREVARS += "apr_cv_mutex_recursive=yes"

# Enable largefile
CACHED_CONFIGUREVARS += "apr_cv_use_lfs64=yes"
# Additional AC_TRY_RUN tests which will need to be cached for cross compile
CACHED_CONFIGUREVARS += "apr_cv_epoll=yes epoll_create1=yes apr_cv_sock_cloexec=yes \
ac_cv_struct_rlimit=yes \
ac_cv_func_sem_open=yes \
apr_cv_process_shared_works=yes \
apr_cv_mutex_robust_shared=yes \
"
# Also suppress trying to use sctp.
#
CACHED_CONFIGUREVARS += "ac_cv_header_netinet_sctp_h=no ac_cv_header_netinet_sctp_uio_h=no"

CACHED_CONFIGUREVARS += "ac_cv_sizeof_struct_iovec=yes"
# ac_cv_sizeof_struct_iovec is deduced using runtime check which will fail during cross-compile
CACHED_CONFIGUREVARS += "${@['ac_cv_sizeof_struct_iovec=16','ac_cv_sizeof_struct_iovec=8'][d.getVar('SITEINFO_BITS') != '32']}"

CACHED_CONFIGUREVARS += "ac_cv_file__dev_zero=yes"

CACHED_CONFIGUREVARS:append:libc-musl = " ac_cv_strerror_r_rc_int=yes"
Expand Down

0 comments on commit 504eb0f

Please sign in to comment.