8sa1-gcc/gcc/fixinc.x86-linux-gnu
Vladimir N. Makarov 6d56756885 configure.in (i[34567]86-*-linux-gnu*, [...]): Use fixinc.x86-linux-gnu as fixincludes.
Mon Feb 22 14:13:23 1999  Vladimir N. Makarov  <vmakarov@cygnus.com>
	* configure.in (i[34567]86-*-linux-gnu*,
	i[34567]86-*-linux-gnulibc1, i[34567]86-*-linux-gnuaout*,
	i[34567]86-*-linux-gnuoldld*): Use fixinc.x86-linux-gnu as
	fixincludes.
	* configure: Rebuilt.
	* fixinc.x86-linux-gnu: New script for fixing asm-statements bug
	on x86 linux.
	* fixinc/fixinc.x86-linux-gnu: Copy of the previous one.
	* fixinc/mkfixinc.sh (i[34567]86-*-linux-gnu*,
	i[34567]86-*-linux-gnulibc1, i[34567]86-*-linux-gnuaout*,
	i[34567]86-*-linux-gnuoldld*): Use fixinc.x86-linux-gnu as
	fixincludes.

From-SVN: r25370
1999-02-22 11:32:00 +00:00

141 lines
3.9 KiB
Bash

#! /bin/sh
#
# The script is created for Cygnus by vmakarov@cygnus.com and based on
# fixinc.wrap
#
# This script is designed for x86 with gnulibc of version 2.0 and less
# for solution of problems with invalid asm-statements by creating
# small wrappers around the include files containg the asm-statements.
#
# See README-fixinc for more information.
# Directory in which to store the results.
LIB=${1?"fixincludes: output directory not specified"}
# Make sure it exists.
if [ ! -d $LIB ]; then
mkdir $LIB || exit 1
fi
# Make LIB absolute if it is relative.
# Don't do this if not necessary, since may screw up automounters.
case $LIB in
/*)
;;
*)
cd $LIB; LIB=`${PWDCMD-pwd}`
;;
esac
echo Building fixed headers in ${LIB}
file=selectbits.h
echo Fixed $file for glibc-2.0.x
rm -f $LIB/$file
cat <<'__EOF__' >$LIB/$file
/* This file fixes __FD_ZERO bug for glibc-2.0.x. */
#ifndef _SELECTBITS_H_WRAPPER
#include <features.h>
#include_next <selectbits.h>
#if defined(__FD_ZERO) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 && __GLIBC_MINOR__ == 0
#undef __FD_ZERO
#define __FD_ZERO(fdsetp) \
do { \
int __d0, __d1; \
__asm__ __volatile__ ("cld; rep; stosl" \
: "=m" (((__fd_mask *) \
(fdsetp))[__FDELT (__FD_SETSIZE)]), \
"=&c" (__d0), "=&D" (__d1) \
: "a" (0), "1" (sizeof (__fd_set) \
/ sizeof (__fd_mask)), \
"2" ((__fd_mask *) (fdsetp)) \
: "memory"); \
} while (0)
#endif
#define _SELECTBITS_H_WRAPPER
#endif /* _SELECTBITS_H_WRAPPER */
__EOF__
# Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
# the start, so that if #include_next gets another instance of
# the wrapper, this will follow the #include_next chain until
# we arrive at the real <selectbits.h>.
chmod a+r $LIB/$file
# asm/posix_types.h for libc version 1.x
file=asm/posix_types.h
echo Fixed $file for glibc-1.x
rm -f $LIB/$file
dir=`dirname $LIB/$file`
if [ ! -d $dir ]; then
mkdir -p $dir || exit 1
fi
cat <<'__EOF__' >$LIB/$file
/* This file fixes __FD_ZERO bug for glibc-1.x. */
#ifndef _POSIX_TYPES_H_WRAPPER
#include <features.h>
#include_next <asm/posix_types.h>
#if defined(__FD_ZERO) && !defined(__GLIBC__)
#undef __FD_ZERO
#define __FD_ZERO(fdsetp) \
do { \
int __d0, __d1; \
__asm__ __volatile__("cld ; rep ; stosl" \
: "=m" (*(__kernel_fd_set *) (fdsetp)), \
"=&c" (__d0), "=&D" (__d1) \
: "a" (0), "1" (__FDSET_LONGS), \
"2" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
} while (0)
#endif
#define _POSIX_TYPES_H_WRAPPER
#endif /* _POSIX_TYPES_H_WRAPPER */
__EOF__
# Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
# the start, so that if #include_next gets another instance of
# the wrapper, this will follow the #include_next chain until
# we arrive at the real <asm/posix_types.h>.
chmod a+r $LIB/$file
# gnu/types.h for libc version 1.x
file=gnu/types.h
echo Fixed $file for glibc-1.x
rm -f $LIB/$file
dir=`dirname $LIB/$file`
if [ ! -d $dir ]; then
mkdir -p $dir || exit 1
fi
cat <<'__EOF__' >$LIB/$file
/* This file fixes __FD_ZERO bug for glibc-1.x. */
#ifndef _TYPES_H_WRAPPER
#include <features.h>
#include_next <gnu/types.h>
#if defined(__FD_ZERO) && !defined(__GLIBC__)
#undef __FD_ZERO
# define __FD_ZERO(fdsetp) \
do { \
int __d0, __d1; \
__asm__ __volatile__("cld ; rep ; stosl" \
: "=m" (*(__fd_set *) (fdsetp)), \
"=&c" (__d0), "=&D" (__d1) \
: "a" (0), "1" (__FDSET_LONGS), \
"2" ((__fd_set *) (fdsetp)) :"memory"); \
} while (0)
#endif
#define _TYPES_H_WRAPPER
#endif /* _TYPES_H_WRAPPER */
__EOF__
# Define _TYPES_H_WRAPPER at the end of the wrapper, not the start,
# so that if #include_next gets another instance of the wrapper,
# this will follow the #include_next chain until we arrive at
# the real <gnu/types.h>.
chmod a+r $LIB/$file
exit 0