OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [libiberty/] [aclocal.m4] - Diff between revs 38 and 156

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 38 Rev 156
sinclude(../config/acx.m4)
sinclude(../config/acx.m4)
sinclude(../config/no-executables.m4)
sinclude(../config/no-executables.m4)
sinclude(../config/override.m4)
sinclude(../config/override.m4)
sinclude(../config/warnings.m4)
sinclude(../config/warnings.m4)
 
 
dnl See whether strncmp reads past the end of its string parameters.
dnl See whether strncmp reads past the end of its string parameters.
dnl On some versions of SunOS4 at least, strncmp reads a word at a time
dnl On some versions of SunOS4 at least, strncmp reads a word at a time
dnl but erroneously reads past the end of strings.  This can cause
dnl but erroneously reads past the end of strings.  This can cause
dnl a SEGV in some cases.
dnl a SEGV in some cases.
AC_DEFUN(libiberty_AC_FUNC_STRNCMP,
AC_DEFUN(libiberty_AC_FUNC_STRNCMP,
[AC_REQUIRE([AC_FUNC_MMAP])
[AC_REQUIRE([AC_FUNC_MMAP])
AC_CACHE_CHECK([for working strncmp], ac_cv_func_strncmp_works,
AC_CACHE_CHECK([for working strncmp], ac_cv_func_strncmp_works,
[AC_TRY_RUN([
[AC_TRY_RUN([
/* Test by Jim Wilson and Kaveh Ghazi.
/* Test by Jim Wilson and Kaveh Ghazi.
   Check whether strncmp reads past the end of its string parameters. */
   Check whether strncmp reads past the end of its string parameters. */
#include <sys/types.h>
#include <sys/types.h>
 
 
#ifdef HAVE_FCNTL_H
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#include <fcntl.h>
#endif
#endif
 
 
#ifdef HAVE_SYS_MMAN_H
#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
#include <sys/mman.h>
#endif
#endif
 
 
#ifndef MAP_ANON
#ifndef MAP_ANON
#ifdef MAP_ANONYMOUS
#ifdef MAP_ANONYMOUS
#define MAP_ANON MAP_ANONYMOUS
#define MAP_ANON MAP_ANONYMOUS
#else
#else
#define MAP_ANON MAP_FILE
#define MAP_ANON MAP_FILE
#endif
#endif
#endif
#endif
 
 
#ifndef MAP_FILE
#ifndef MAP_FILE
#define MAP_FILE 0
#define MAP_FILE 0
#endif
#endif
#ifndef O_RDONLY
#ifndef O_RDONLY
#define O_RDONLY 0
#define O_RDONLY 0
#endif
#endif
 
 
#define MAP_LEN 0x10000
#define MAP_LEN 0x10000
 
 
main ()
main ()
{
{
#if defined(HAVE_MMAP) || defined(HAVE_MMAP_ANYWHERE)
#if defined(HAVE_MMAP) || defined(HAVE_MMAP_ANYWHERE)
  char *p;
  char *p;
  int dev_zero;
  int dev_zero;
 
 
  dev_zero = open ("/dev/zero", O_RDONLY);
  dev_zero = open ("/dev/zero", O_RDONLY);
  if (dev_zero < 0)
  if (dev_zero < 0)
    exit (1);
    exit (1);
 
 
  p = (char *) mmap (0, MAP_LEN, PROT_READ|PROT_WRITE,
  p = (char *) mmap (0, MAP_LEN, PROT_READ|PROT_WRITE,
                     MAP_ANON|MAP_PRIVATE, dev_zero, 0);
                     MAP_ANON|MAP_PRIVATE, dev_zero, 0);
  if (p == (char *)-1)
  if (p == (char *)-1)
    p = (char *) mmap (0, MAP_LEN, PROT_READ|PROT_WRITE,
    p = (char *) mmap (0, MAP_LEN, PROT_READ|PROT_WRITE,
                       MAP_ANON|MAP_PRIVATE, -1, 0);
                       MAP_ANON|MAP_PRIVATE, -1, 0);
  if (p == (char *)-1)
  if (p == (char *)-1)
    exit (2);
    exit (2);
  else
  else
    {
    {
      char *string = "__si_type_info";
      char *string = "__si_type_info";
      char *q = (char *) p + MAP_LEN - strlen (string) - 2;
      char *q = (char *) p + MAP_LEN - strlen (string) - 2;
      char *r = (char *) p + 0xe;
      char *r = (char *) p + 0xe;
 
 
      strcpy (q, string);
      strcpy (q, string);
      strcpy (r, string);
      strcpy (r, string);
      strncmp (r, q, 14);
      strncmp (r, q, 14);
    }
    }
#endif /* HAVE_MMAP || HAVE_MMAP_ANYWHERE */
#endif /* HAVE_MMAP || HAVE_MMAP_ANYWHERE */
  exit (0);
  exit (0);
}
}
], ac_cv_func_strncmp_works=yes, ac_cv_func_strncmp_works=no,
], ac_cv_func_strncmp_works=yes, ac_cv_func_strncmp_works=no,
  ac_cv_func_strncmp_works=no)
  ac_cv_func_strncmp_works=no)
rm -f core core.* *.core])
rm -f core core.* *.core])
if test $ac_cv_func_strncmp_works = no ; then
if test $ac_cv_func_strncmp_works = no ; then
  AC_LIBOBJ([strncmp])
  AC_LIBOBJ([strncmp])
fi
fi
])
])
 
 
dnl See if errno must be declared even when <errno.h> is included.
dnl See if errno must be declared even when <errno.h> is included.
AC_DEFUN(libiberty_AC_DECLARE_ERRNO,
AC_DEFUN(libiberty_AC_DECLARE_ERRNO,
[AC_CACHE_CHECK(whether errno must be declared, libiberty_cv_declare_errno,
[AC_CACHE_CHECK(whether errno must be declared, libiberty_cv_declare_errno,
[AC_TRY_COMPILE(
[AC_TRY_COMPILE(
[#include <errno.h>],
[#include <errno.h>],
[int x = errno;],
[int x = errno;],
libiberty_cv_declare_errno=no,
libiberty_cv_declare_errno=no,
libiberty_cv_declare_errno=yes)])
libiberty_cv_declare_errno=yes)])
if test $libiberty_cv_declare_errno = yes
if test $libiberty_cv_declare_errno = yes
then AC_DEFINE(NEED_DECLARATION_ERRNO, 1,
then AC_DEFINE(NEED_DECLARATION_ERRNO, 1,
  [Define if errno must be declared even when <errno.h> is included.])
  [Define if errno must be declared even when <errno.h> is included.])
fi
fi
])
])
 
 
dnl See whether we need a declaration for a function.
dnl See whether we need a declaration for a function.
AC_DEFUN(libiberty_NEED_DECLARATION,
AC_DEFUN(libiberty_NEED_DECLARATION,
[AC_MSG_CHECKING([whether $1 must be declared])
[AC_MSG_CHECKING([whether $1 must be declared])
AC_CACHE_VAL(libiberty_cv_decl_needed_$1,
AC_CACHE_VAL(libiberty_cv_decl_needed_$1,
[AC_TRY_COMPILE([
[AC_TRY_COMPILE([
#include "confdefs.h"
#include "confdefs.h"
#include <stdio.h>
#include <stdio.h>
#ifdef HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#include <string.h>
#else
#else
#ifdef HAVE_STRINGS_H
#ifdef HAVE_STRINGS_H
#include <strings.h>
#include <strings.h>
#endif
#endif
#endif
#endif
#ifdef HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#include <stdlib.h>
#endif
#endif
#ifdef HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#include <unistd.h>
#endif],
#endif],
[char *(*pfn) = (char *(*)) $1],
[char *(*pfn) = (char *(*)) $1],
libiberty_cv_decl_needed_$1=no, libiberty_cv_decl_needed_$1=yes)])
libiberty_cv_decl_needed_$1=no, libiberty_cv_decl_needed_$1=yes)])
AC_MSG_RESULT($libiberty_cv_decl_needed_$1)
AC_MSG_RESULT($libiberty_cv_decl_needed_$1)
if test $libiberty_cv_decl_needed_$1 = yes; then
if test $libiberty_cv_decl_needed_$1 = yes; then
  AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), 1,
  AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), 1,
            [Define if $1 is not declared in system header files.])
            [Define if $1 is not declared in system header files.])
fi
fi
])dnl
])dnl
 
 
# We always want a C version of alloca() compiled into libiberty,
# We always want a C version of alloca() compiled into libiberty,
# because native-compiler support for the real alloca is so !@#$%
# because native-compiler support for the real alloca is so !@#$%
# unreliable that GCC has decided to use it only when being compiled
# unreliable that GCC has decided to use it only when being compiled
# by GCC.  This is the part of AC_FUNC_ALLOCA that calculates the
# by GCC.  This is the part of AC_FUNC_ALLOCA that calculates the
# information alloca.c needs.
# information alloca.c needs.
AC_DEFUN(libiberty_AC_FUNC_C_ALLOCA,
AC_DEFUN(libiberty_AC_FUNC_C_ALLOCA,
[AC_CACHE_CHECK(whether alloca needs Cray hooks, ac_cv_os_cray,
[AC_CACHE_CHECK(whether alloca needs Cray hooks, ac_cv_os_cray,
[AC_EGREP_CPP(webecray,
[AC_EGREP_CPP(webecray,
[#if defined(CRAY) && ! defined(CRAY2)
[#if defined(CRAY) && ! defined(CRAY2)
webecray
webecray
#else
#else
wenotbecray
wenotbecray
#endif
#endif
], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
if test $ac_cv_os_cray = yes; then
if test $ac_cv_os_cray = yes; then
  for ac_func in _getb67 GETB67 getb67; do
  for ac_func in _getb67 GETB67 getb67; do
    AC_CHECK_FUNC($ac_func,
    AC_CHECK_FUNC($ac_func,
      [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
      [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
  [Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP
  [Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP
   systems. This function is required for alloca.c support on those
   systems. This function is required for alloca.c support on those
   systems.])  break])
   systems.])  break])
  done
  done
fi
fi
 
 
AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction,
AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction,
[AC_TRY_RUN([find_stack_direction ()
[AC_TRY_RUN([find_stack_direction ()
{
{
  static char *addr = 0;
  static char *addr = 0;
  auto char dummy;
  auto char dummy;
  if (addr == 0)
  if (addr == 0)
    {
    {
      addr = &dummy;
      addr = &dummy;
      return find_stack_direction ();
      return find_stack_direction ();
    }
    }
  else
  else
    return (&dummy > addr) ? 1 : -1;
    return (&dummy > addr) ? 1 : -1;
}
}
main ()
main ()
{
{
  exit (find_stack_direction() < 0);
  exit (find_stack_direction() < 0);
}],
}],
  ac_cv_c_stack_direction=1,
  ac_cv_c_stack_direction=1,
  ac_cv_c_stack_direction=-1,
  ac_cv_c_stack_direction=-1,
  ac_cv_c_stack_direction=0)])
  ac_cv_c_stack_direction=0)])
AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction,
AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction,
  [Define if you know the direction of stack growth for your system;
  [Define if you know the direction of stack growth for your system;
   otherwise it will be automatically deduced at run-time.
   otherwise it will be automatically deduced at run-time.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown])
        STACK_DIRECTION = 0 => direction of growth unknown])
])
])
 
 
# AC_LANG_FUNC_LINK_TRY(C)(FUNCTION)
# AC_LANG_FUNC_LINK_TRY(C)(FUNCTION)
# ----------------------------------
# ----------------------------------
# Don't include <ctype.h> because on OSF/1 3.0 it includes
# Don't include <ctype.h> because on OSF/1 3.0 it includes
# <sys/types.h> which includes <sys/select.h> which contains a
# <sys/types.h> which includes <sys/select.h> which contains a
# prototype for select.  Similarly for bzero.
# prototype for select.  Similarly for bzero.
#
#
# This test used to merely assign f=$1 in main(), but that was
# This test used to merely assign f=$1 in main(), but that was
# optimized away by HP unbundled cc A.05.36 for ia64 under +O3,
# optimized away by HP unbundled cc A.05.36 for ia64 under +O3,
# presumably on the basis that there's no need to do that store if the
# presumably on the basis that there's no need to do that store if the
# program is about to exit.  Conversely, the AIX linker optimizes an
# program is about to exit.  Conversely, the AIX linker optimizes an
# unused external declaration that initializes f=$1.  So this test
# unused external declaration that initializes f=$1.  So this test
# program has both an external initialization of f, and a use of f in
# program has both an external initialization of f, and a use of f in
# main that affects the exit status.
# main that affects the exit status.
#
#
m4_define([AC_LANG_FUNC_LINK_TRY(C)],
m4_define([AC_LANG_FUNC_LINK_TRY(C)],
[AC_LANG_PROGRAM(
[AC_LANG_PROGRAM(
[/* System header to define __stub macros and hopefully few prototypes,
[/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char $1 (); below.
    which can conflict with char $1 (); below.
    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
    <limits.h> exists even on freestanding compilers.  Under hpux,
    <limits.h> exists even on freestanding compilers.  Under hpux,
    including <limits.h> includes <sys/time.h> and causes problems
    including <limits.h> includes <sys/time.h> and causes problems
    checking for functions defined therein.  */
    checking for functions defined therein.  */
#if defined (__STDC__) && !defined (_HPUX_SOURCE)
#if defined (__STDC__) && !defined (_HPUX_SOURCE)
# include <limits.h>
# include <limits.h>
#else
#else
# include <assert.h>
# include <assert.h>
#endif
#endif
/* Override any gcc2 internal prototype to avoid an error.  */
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
#ifdef __cplusplus
extern "C"
extern "C"
{
{
#endif
#endif
/* We use char because int might match the return type of a gcc2
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
   builtin and then its argument prototype would still apply.  */
char $1 ();
char $1 ();
/* The GNU C library defines this for functions which it implements
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_$1) || defined (__stub___$1)
#if defined (__stub_$1) || defined (__stub___$1)
choke me
choke me
#else
#else
char (*f) () = $1;
char (*f) () = $1;
#endif
#endif
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
], [return f != $1;])])
], [return f != $1;])])
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.