[PATCH] Rump on GNU/Hurd (3): system limits

  • From: Robert Millan <rmh@xxxxxxx>
  • To: rumpkernel-users@xxxxxxxxxxxxx
  • Date: Sun, 16 Aug 2015 12:56:08 +0200


Hi,

GNU/Hurd doesn't have PATH_MAX or MAXHOSTNAMELEN (arbitrarily long strings can
be used). Since attempting to replace every instance of static allocation with
dynamic buffer management would make for a very intrusive patch, I'm proposing
to just define the limits as alternative.

I took care to use the same limits Rump namespace has, just to avoid accidental
cross-definition of a different value causing damage somewhere (e.g. overflows
or such).

--
Robert Millan
--- a/buildrump.sh/buildrump.sh
+++ b/buildrump.sh/buildrump.sh
@@ -1074,6 +1074,7 @@
*-gnu*)
EXTRA_RUMPCOMMON='-ldl'
EXTRA_RUMPCLIENT='-lpthread'
+ appendvar EXTRA_CFLAGS -DMAXHOSTNAMELEN=256 -DPATH_MAX=1024
;;
*-openbsd*)
EXTRA_RUMPCLIENT='-lpthread'
--- a/buildrump.sh/src/tools/compat/Makefile
+++ b/buildrump.sh/src/tools/compat/Makefile
@@ -38,6 +38,11 @@
CPPFLAGS+= -I. -I./include -I${.CURDIR} -I${.CURDIR}/sys \
-DHAVE_NBTOOL_CONFIG_H=1 -D_FILE_OFFSET_BITS=64

+# Define MAXPATHLEN limit on GNU/Hurd
+.if ${BUILD_OSTYPE} == "GNU"
+CPPFLAGS+= -DMAXPATHLEN=1024 -DPATH_MAX=1024
+.endif
+
.PATH: ${.CURDIR}/../../lib/libc/cdb \
${.CURDIR}/../../lib/libc/gen \
${.CURDIR}/../../lib/libc/hash \
--- a/buildrump.sh/src/tools/compat/defs.mk.in
+++ b/buildrump.sh/src/tools/compat/defs.mk.in
@@ -79,6 +79,11 @@
HOST_CPPFLAGS+= ${COMPATINCFLAGS} -I${NETBSDSRCDIR}/tools/compat \
-DHAVE_NBTOOL_CONFIG_H=1 -D_FILE_OFFSET_BITS=64

+# Define MAXPATHLEN limit on GNU/Hurd
+.if ${BUILD_OSTYPE} == "GNU"
+HOST_CPPFLAGS+= -DMAXPATHLEN=1024 -DPATH_MAX=1024
+.endif
+
.if "${COMPATLIB_NO_LIB}" != "yes"
DPADD+= ${COMPATLIBDIR}/libnbcompat.a
LDADD+= -L${COMPATLIBDIR} -lnbcompat @LIBS@
--- a/buildrump.sh/src/tools/make/configure
+++ b/buildrump.sh/src/tools/make/configure
@@ -971,6 +971,10 @@
#define DEFSHELL_CUSTOM "${BSHELL}"
EOF

+cat >>confdefs.h <<EOF
+#define MAXPATHLEN 1024
+EOF
+
# Make sure we have POSIX regex ability.
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
--- a/buildrump.sh/src/tools/make/configure.ac
+++ b/buildrump.sh/src/tools/make/configure.ac
@@ -24,6 +24,7 @@

AC_INIT([make], [noversion], [bin-bug-people@xxxxxxxxxx])
AC_CONFIG_FILES(buildmake.sh)
+AC_CANONICAL_HOST()

AC_PATH_PROG(BSHELL, sh)
if test x"$BSHELL" = x; then
@@ -31,6 +32,13 @@
fi
AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "${BSHELL}")

+case $host_os in
+ gnu*)
+ # Define MAXPATHLEN limit on GNU/Hurd
+ AC_DEFINE_UNQUOTED(MAXPATHLEN, 1024)
+ ;;
+esac
+
# Make sure we have POSIX regex ability.
AC_CHECK_HEADER(regex.h,, AC_MSG_ERROR([POSIX regex.h is required]))

Other related posts:

  • » [PATCH] Rump on GNU/Hurd (3): system limits - Robert Millan