diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-08-12 18:22:17 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-08-12 18:22:17 +0000 |
commit | ea562ee977d4b48500a9b117e543e9c4ae0eb05e (patch) | |
tree | eece22c6292c13b788f7baafc4da8471283c0ff2 /c/src/lib/aclocal.m4 | |
parent | Patch from Tony R. Ambardar <tonya@ece.ubc.ca>: (diff) | |
download | rtems-ea562ee977d4b48500a9b117e543e9c4ae0eb05e.tar.bz2 |
Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
After upgrading my linux box to the brand new SuSE 6.2 release, which is
glibc-2.1 based, I came across a bug in RTEMS - IIRC, I even warned you
about it about 1/2 a year ago, but nothing has been done since then :-.
The *.m4 macros to check for SYSV/IPC are broken for linux/glibc2.1,
because they assume that linux always defines union semun, which isn't
true anymore for glibc2.1 (the manpage for semctl states _X_OPEN
specifies it this way). Therefore I have tried to implement a more
general approach for handling SYSV for unix/posix which checks for
presence of struct semun, instead of trying to evaluate OS specific
preprocessor symbols.
This approach is a bit adventureous, because I only tested it with
linux/glibc2.1 and linux/libc5, but not under other Unix variants RTEMS
supports. I am quite confident it will work on other hosts, too, but who
knows :-.
[FYI: I think this might also is the cause of some problems with RedHat
6.X / Mandrake linux recently reported on the rtems list -- rtems-4.0.0
can not be build for posix on any glibc2.1 based host]
Furthermore the patch below contains a couple of minor fixes and
configuration cleanups, which IMO should be applied before releasing a
new snapshot.
To apply this patch:
cd <source-tree>
patch -p1 < rtems-rc-19990709-8.diff
./autogen
Diffstat (limited to 'c/src/lib/aclocal.m4')
-rw-r--r-- | c/src/lib/aclocal.m4 | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/c/src/lib/aclocal.m4 b/c/src/lib/aclocal.m4 index 2fbb5bdf3c..51eae57574 100644 --- a/c/src/lib/aclocal.m4 +++ b/c/src/lib/aclocal.m4 @@ -732,121 +732,6 @@ EOF ]) -dnl -dnl $Id$ -dnl -dnl Check for System V IPC calls used by Unix simulators -dnl -dnl 98/07/17 Dario Alcocer alcocer@netcom.com -dnl Ralf Corsepius corsepiu@faw.uni-ulm.de -dnl -dnl Note: $host_os should probably *not* ever be used here to -dnl determine if host supports System V IPC calls, since some -dnl (e.g. FreeBSD 2.x) are configured by default to include only -dnl a subset of the System V IPC calls. Therefore, to make sure -dnl all of the required calls are found, test for each call explicitly. -dnl -dnl All of the calls use IPC_PRIVATE, so tests will not unintentionally -dnl modify any existing key sets. See the man pages for semget, shmget, -dnl msgget, semctl, shmctl and msgctl for details. - -AC_DEFUN(RTEMS_SYSV_SEM, -[AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([RTEMS_CANONICAL_HOST]) -AC_CACHE_CHECK(whether $RTEMS_HOST supports System V semaphores, -rtems_cv_sysv_sem, -[ -AC_TRY_RUN([ -#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/sem.h> -int main () { -#if !defined(sun) - union semun arg ; -#else - union semun { - int val; - struct semid_ds *buf; - ushort *array; - } arg; -#endif - int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400); - if (id == -1) - exit(1); - arg.val = 0; /* avoid implicit type cast to union */ - if (semctl(id, 0, IPC_RMID, arg) == -1) - exit(1); - exit(0); -} -], -rtems_cv_sysv_sem="yes", rtems_cv_sysv_sem="no", :) -]) -]) - -AC_DEFUN(RTEMS_SYSV_SHM, -[AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([RTEMS_CANONICAL_HOST]) -AC_CACHE_CHECK(whether $RTEMS_HOST supports System V shared memory, -rtems_cv_sysv_shm, -[ -AC_TRY_RUN([ -#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/shm.h> -int main () { - int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400); - if (id == -1) - exit(1); - if (shmctl(id, IPC_RMID, 0) == -1) - exit(1); - exit(0); -} -], -rtems_cv_sysv_shm="yes", rtems_cv_sysv_shm="no", :) -]) -]) - -AC_DEFUN(RTEMS_SYSV_MSG, -[AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([RTEMS_CANONICAL_HOST]) -AC_CACHE_CHECK(whether $RTEMS_HOST supports System V messages, -rtems_cv_sysv_msg, -[ -AC_TRY_RUN([ -#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/msg.h> -int main () { - int id=msgget(IPC_PRIVATE,IPC_CREAT|0400); - if (id == -1) - exit(1); - if (msgctl(id, IPC_RMID, 0) == -1) - exit(1); - exit(0); -} -], -rtems_cv_sysv_msg="yes", rtems_cv_sysv_msg="no", :) -]) -]) - -AC_DEFUN(RTEMS_CHECK_SYSV_UNIX, -[AC_REQUIRE([RTEMS_CANONICAL_HOST]) -if test "$RTEMS_CPU" = "unix" ; then - RTEMS_SYSV_SEM - if test "$rtems_cv_sysv_sem" != "yes" ; then - AC_MSG_ERROR([System V semaphores don't work, required by simulator]) - fi - RTEMS_SYSV_SHM - if test "$rtems_cv_sysv_shm" != "yes" ; then - AC_MSG_ERROR([System V shared memory doesn't work, required by simulator]) - fi - RTEMS_SYSV_MSG - if test "$rtems_cv_sysv_msg" != "yes" ; then - AC_MSG_ERROR([System V messages don't work, required by simulator]) - fi -fi -]) - dnl $Id$ dnl Report all available bsps for a target, |