mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
e89236fd28
This change updates the AC_LANG_PROGRAM autoconf macro invocations to be wrapped in quotes. As of autoconf version 2.68, the quotes are necessary to prevent warnings from appearing. Specifically, the autoconf v2.68 Forward Porting Notes specifies: It is important to note that you need to ensure that the call to AC_LANG_SOURCE is quoted and not expanded, otherwise that will cause the warning to appear nonetheless. Finally, because of the additional quoting we can drop the extra quotas used by the ZFS_AC_CONFIG_USER_STACK_GUARD autoconf check. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #464
57 lines
1.3 KiB
Plaintext
57 lines
1.3 KiB
Plaintext
dnl #
|
|
dnl # Check if the glibc NPTL threading implementation includes the guard area
|
|
dnl # within the stack size allocation, rather than allocating extra space at
|
|
dnl # the end of the stack, as POSIX.1 requires.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_CONFIG_USER_STACK_GUARD], [
|
|
|
|
AC_MSG_CHECKING([whether pthread stack includes guard])
|
|
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="-fstack-check"
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="-lpthread"
|
|
|
|
AC_RUN_IFELSE([AC_LANG_PROGRAM(
|
|
[
|
|
#include <pthread.h>
|
|
#include <sys/resource.h>
|
|
#include <unistd.h>
|
|
#include <bits/local_lim.h>
|
|
|
|
#define PAGESIZE (sysconf(_SC_PAGESIZE))
|
|
#define STACK_SIZE 8192
|
|
#define BUFSIZE 4096
|
|
|
|
void * func(void *arg)
|
|
{
|
|
char buf[[BUFSIZE]];
|
|
}
|
|
],
|
|
[
|
|
pthread_t tid;
|
|
pthread_attr_t attr;
|
|
struct rlimit l;
|
|
|
|
l.rlim_cur = 0;
|
|
l.rlim_max = 0;
|
|
setrlimit(RLIMIT_CORE, &l);
|
|
pthread_attr_init(&attr);
|
|
pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + STACK_SIZE);
|
|
pthread_attr_setguardsize(&attr, PAGESIZE);
|
|
pthread_create(&tid, &attr, func, NULL);
|
|
pthread_join(tid, NULL);
|
|
])],
|
|
[
|
|
AC_MSG_RESULT([no])
|
|
],
|
|
[
|
|
AC_DEFINE([NPTL_GUARD_WITHIN_STACK], 1,
|
|
[Define to 1 if NPTL threading implementation includes
|
|
guard area in stack allocation])
|
|
AC_MSG_RESULT([yes])
|
|
])
|
|
CFLAGS="$saved_CFLAGS"
|
|
LDFLAGS="$saved_LDFLAGS"
|
|
])
|