0000: 64 6e 6c 20 2d 2a 2d 20 41 75 74 6f 63 6f 6e 66 dnl -*- Autoconf
0010: 20 2d 2a 2d 0a 64 6e 6c 20 43 6f 70 79 72 69 67 -*-.dnl Copyrig
0020: 68 74 20 28 43 29 20 31 39 39 33 2d 32 30 30 34 ht (C) 1993-2004
0030: 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 Free Software F
0040: 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 0a oundation, Inc..
0050: 64 6e 6c 20 54 68 69 73 20 66 69 6c 65 20 69 73 dnl This file is
0060: 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 2c 20 free software,
0070: 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64 65 distributed unde
0080: 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 r the terms of t
0090: 68 65 20 47 4e 55 0a 64 6e 6c 20 47 65 6e 65 72 he GNU.dnl Gener
00a0: 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 al Public Licens
00b0: 65 2e 20 20 41 73 20 61 20 73 70 65 63 69 61 6c e. As a special
00c0: 20 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 74 68 exception to th
00d0: 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 0a 64 6e e GNU General.dn
00e0: 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 l Public License
00f0: 2c 20 74 68 69 73 20 66 69 6c 65 20 6d 61 79 20 , this file may
0100: 62 65 20 64 69 73 74 72 69 62 75 74 65 64 20 61 be distributed a
0110: 73 20 70 61 72 74 20 6f 66 20 61 20 70 72 6f 67 s part of a prog
0120: 72 61 6d 0a 64 6e 6c 20 74 68 61 74 20 63 6f 6e ram.dnl that con
0130: 74 61 69 6e 73 20 61 20 63 6f 6e 66 69 67 75 72 tains a configur
0140: 61 74 69 6f 6e 20 73 63 72 69 70 74 20 67 65 6e ation script gen
0150: 65 72 61 74 65 64 20 62 79 20 41 75 74 6f 63 6f erated by Autoco
0160: 6e 66 2c 20 75 6e 64 65 72 0a 64 6e 6c 20 74 68 nf, under.dnl th
0170: 65 20 73 61 6d 65 20 64 69 73 74 72 69 62 75 74 e same distribut
0180: 69 6f 6e 20 74 65 72 6d 73 20 61 73 20 74 68 65 ion terms as the
0190: 20 72 65 73 74 20 6f 66 20 74 68 61 74 20 70 72 rest of that pr
01a0: 6f 67 72 61 6d 2e 0a 0a 64 6e 6c 20 46 72 6f 6d ogram...dnl From
01b0: 20 42 72 75 6e 6f 20 48 61 69 62 6c 65 2c 20 4d Bruno Haible, M
01c0: 61 72 63 75 73 20 44 61 6e 69 65 6c 73 2c 20 53 arcus Daniels, S
01d0: 61 6d 20 53 74 65 69 6e 67 6f 6c 64 2e 0a 0a 41 am Steingold...A
01e0: 43 5f 50 52 45 52 45 51 28 32 2e 35 37 29 0a 0a C_PREREQ(2.57)..
01f0: 41 43 5f 44 45 46 55 4e 28 5b 43 4c 5f 4d 4d 41 AC_DEFUN([CL_MMA
0200: 50 5d 2c 0a 5b 41 43 5f 52 45 51 55 49 52 45 28 P],.[AC_REQUIRE(
0210: 5b 43 4c 5f 4f 50 45 4e 46 4c 41 47 53 5d 29 64 [CL_OPENFLAGS])d
0220: 6e 6c 0a 41 43 5f 42 45 46 4f 52 45 28 5b 24 30 nl.AC_BEFORE([$0
0230: 5d 2c 20 5b 43 4c 5f 4d 55 4e 4d 41 50 5d 29 41 ], [CL_MUNMAP])A
0240: 43 5f 42 45 46 4f 52 45 28 5b 24 30 5d 2c 20 5b C_BEFORE([$0], [
0250: 43 4c 5f 4d 50 52 4f 54 45 43 54 5d 29 0a 41 43 CL_MPROTECT]).AC
0260: 5f 43 48 45 43 4b 5f 48 45 41 44 45 52 28 73 79 _CHECK_HEADER(sy
0270: 73 2f 6d 6d 61 6e 2e 68 2c 20 2c 20 6e 6f 5f 6d s/mman.h, , no_m
0280: 6d 61 70 3d 31 29 64 6e 6c 0a 69 66 20 74 65 73 map=1)dnl.if tes
0290: 74 20 2d 7a 20 22 24 6e 6f 5f 6d 6d 61 70 22 3b t -z "$no_mmap";
02a0: 20 74 68 65 6e 0a 41 43 5f 43 48 45 43 4b 5f 46 then.AC_CHECK_F
02b0: 55 4e 43 28 6d 6d 61 70 2c 20 2c 20 6e 6f 5f 6d UNC(mmap, , no_m
02c0: 6d 61 70 3d 31 29 64 6e 6c 0a 69 66 20 74 65 73 map=1)dnl.if tes
02d0: 74 20 2d 7a 20 22 24 6e 6f 5f 6d 6d 61 70 22 3b t -z "$no_mmap";
02e0: 20 74 68 65 6e 0a 41 43 5f 44 45 46 49 4e 45 28 then.AC_DEFINE(
02f0: 48 41 56 45 5f 4d 4d 41 50 2c 2c 5b 68 61 76 65 HAVE_MMAP,,[have
0300: 20 3c 73 79 73 2f 6d 6d 61 70 2e 68 3e 20 61 6e <sys/mmap.h> an
0310: 64 20 74 68 65 20 6d 6d 61 70 28 29 20 66 75 6e d the mmap() fun
0320: 63 74 69 6f 6e 5d 29 0a 41 43 5f 43 41 43 48 45 ction]).AC_CACHE
0330: 5f 43 48 45 43 4b 28 66 6f 72 20 77 6f 72 6b 69 _CHECK(for worki
0340: 6e 67 20 6d 6d 61 70 2c 20 63 6c 5f 63 76 5f 66 ng mmap, cl_cv_f
0350: 75 6e 63 5f 6d 6d 61 70 5f 77 6f 72 6b 73 2c 20 unc_mmap_works,
0360: 5b 0a 63 61 73 65 20 22 24 68 6f 73 74 22 20 69 [.case "$host" i
0370: 6e 0a 20 20 69 5b 33 34 35 36 37 5d 38 36 2d 2a n. i[34567]86-*
0380: 2d 73 79 73 76 34 2a 29 0a 20 20 20 20 23 20 55 -sysv4*). # U
0390: 4e 49 58 5f 53 59 53 56 5f 55 48 43 5f 31 0a 20 NIX_SYSV_UHC_1.
03a0: 20 20 20 61 76 6f 69 64 3d 30 78 30 38 30 30 30 avoid=0x08000
03b0: 30 30 30 20 3b 3b 0a 20 20 6d 69 70 73 2d 73 67 000 ;;. mips-sg
03c0: 69 2d 69 72 69 78 2a 20 7c 20 6d 69 70 73 2d 64 i-irix* | mips-d
03d0: 65 63 2d 75 6c 74 72 69 78 2a 29 0a 20 20 20 20 ec-ultrix*).
03e0: 23 20 55 4e 49 58 5f 49 52 49 58 2c 20 55 4e 49 # UNIX_IRIX, UNI
03f0: 58 5f 44 45 43 5f 55 4c 54 52 49 58 0a 20 20 20 X_DEC_ULTRIX.
0400: 20 61 76 6f 69 64 3d 30 78 31 30 30 30 30 30 30 avoid=0x1000000
0410: 30 20 3b 3b 0a 20 20 72 73 36 30 30 30 2d 69 62 0 ;;. rs6000-ib
0420: 6d 2d 61 69 78 2a 29 0a 20 20 20 20 23 20 55 4e m-aix*). # UN
0430: 49 58 5f 41 49 58 0a 20 20 20 20 61 76 6f 69 64 IX_AIX. avoid
0440: 3d 30 78 32 30 30 30 30 30 30 30 20 3b 3b 0a 20 =0x20000000 ;;.
0450: 20 2a 29 0a 20 20 20 20 61 76 6f 69 64 3d 30 20 *). avoid=0
0460: 3b 3b 0a 65 73 61 63 0a 6d 6d 61 70 5f 70 72 6f ;;.esac.mmap_pro
0470: 67 5f 31 3d 27 0a 23 69 6e 63 6c 75 64 65 20 3c g_1='.#include <
0480: 73 74 64 6c 69 62 2e 68 3e 0a 23 69 66 64 65 66 stdlib.h>.#ifdef
0490: 20 48 41 56 45 5f 55 4e 49 53 54 44 5f 48 0a 23 HAVE_UNISTD_H.#
04a0: 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e include <unistd.
04b0: 68 3e 0a 23 65 6e 64 69 66 0a 23 69 6e 63 6c 75 h>.#endif.#inclu
04c0: 64 65 20 3c 66 63 6e 74 6c 2e 68 3e 0a 23 69 66 de <fcntl.h>.#if
04d0: 64 65 66 20 4f 50 45 4e 5f 4e 45 45 44 53 5f 53 def OPEN_NEEDS_S
04e0: 59 53 5f 46 49 4c 45 5f 48 0a 23 69 6e 63 6c 75 YS_FILE_H.#inclu
04f0: 64 65 20 3c 73 79 73 2f 66 69 6c 65 2e 68 3e 0a de <sys/file.h>.
0500: 23 65 6e 64 69 66 0a 23 69 6e 63 6c 75 64 65 20 #endif.#include
0510: 3c 73 79 73 2f 74 79 70 65 73 2e 68 3e 0a 23 69 <sys/types.h>.#i
0520: 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e nclude <sys/mman
0530: 2e 68 3e 0a 69 6e 74 20 6d 61 69 6e 20 28 29 20 .h>.int main ()
0540: 7b 0a 27 0a 6d 6d 61 70 5f 70 72 6f 67 5f 32 3d {.'.mmap_prog_2=
0550: 22 23 64 65 66 69 6e 65 20 62 69 74 73 5f 74 6f "#define bits_to
0560: 5f 61 76 6f 69 64 20 24 61 76 6f 69 64 22 27 0a _avoid $avoid"'.
0570: 23 64 65 66 69 6e 65 20 6d 79 5f 73 68 69 66 74 #define my_shift
0580: 20 32 34 0a 23 64 65 66 69 6e 65 20 6d 79 5f 6c 24.#define my_l
0590: 6f 77 20 20 20 31 0a 23 69 66 64 65 66 20 46 4f ow 1.#ifdef FO
05a0: 52 5f 53 55 4e 34 5f 32 39 0a 23 64 65 66 69 6e R_SUN4_29.#defin
05b0: 65 20 6d 79 5f 68 69 67 68 20 20 33 31 0a 23 64 e my_high 31.#d
05c0: 65 66 69 6e 65 20 6d 79 5f 73 69 7a 65 20 20 33 efine my_size 3
05d0: 32 37 36 38 20 2f 2a 20 68 6f 70 65 20 74 68 61 2768 /* hope tha
05e0: 74 20 33 32 37 36 38 20 69 73 20 61 20 6d 75 6c t 32768 is a mul
05f0: 74 69 70 6c 65 20 6f 66 20 74 68 65 20 70 61 67 tiple of the pag
0600: 65 20 73 69 7a 65 20 2a 2f 0a 2f 2a 20 69 2a 33 e size */./* i*3
0610: 32 20 4b 42 20 66 6f 72 20 69 3d 31 2e 2e 33 31 2 KB for i=1..31
0620: 20 67 69 76 65 73 20 61 20 74 6f 74 61 6c 20 6f gives a total o
0630: 66 20 31 35 2e 35 20 4d 42 2c 20 77 68 69 63 68 f 15.5 MB, which
0640: 20 69 73 20 63 6c 6f 73 65 20 74 6f 20 77 68 61 is close to wha
0650: 74 20 77 65 20 6e 65 65 64 20 2a 2f 0a 23 65 6c t we need */.#el
0660: 73 65 0a 23 64 65 66 69 6e 65 20 6d 79 5f 68 69 se.#define my_hi
0670: 67 68 20 20 36 34 0a 23 64 65 66 69 6e 65 20 6d gh 64.#define m
0680: 79 5f 73 69 7a 65 20 20 38 31 39 32 20 2f 2a 20 y_size 8192 /*
0690: 68 6f 70 65 20 74 68 61 74 20 38 31 39 32 20 69 hope that 8192 i
06a0: 73 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 s a multiple of
06b0: 74 68 65 20 70 61 67 65 20 73 69 7a 65 20 2a 2f the page size */
06c0: 0a 2f 2a 20 69 2a 38 20 4b 42 20 66 6f 72 20 69 ./* i*8 KB for i
06d0: 3d 31 2e 2e 36 34 20 67 69 76 65 73 20 61 20 74 =1..64 gives a t
06e0: 6f 74 61 6c 20 6f 66 20 31 36 2e 32 35 20 4d 42 otal of 16.25 MB
06f0: 2c 20 77 68 69 63 68 20 69 73 20 63 6c 6f 73 65 , which is close
0700: 20 74 6f 20 77 68 61 74 20 77 65 20 6e 65 65 64 to what we need
0710: 20 2a 2f 0a 23 65 6e 64 69 66 0a 20 7b 6c 6f 6e */.#endif. {lon
0720: 67 20 69 3b 0a 23 64 65 66 69 6e 65 20 69 5f 6f g i;.#define i_o
0730: 6b 28 69 29 20 20 28 28 69 29 20 26 20 28 62 69 k(i) ((i) & (bi
0740: 74 73 5f 74 6f 5f 61 76 6f 69 64 20 3e 3e 20 6d ts_to_avoid >> m
0750: 79 5f 73 68 69 66 74 29 20 3d 3d 20 30 29 0a 20 y_shift) == 0).
0760: 20 66 6f 72 20 28 69 3d 6d 79 5f 6c 6f 77 3b 20 for (i=my_low;
0770: 69 3c 3d 6d 79 5f 68 69 67 68 3b 20 69 2b 2b 29 i<=my_high; i++)
0780: 0a 20 20 20 20 69 66 20 28 69 5f 6f 6b 28 69 29 . if (i_ok(i)
0790: 29 0a 20 20 20 20 20 20 7b 20 63 61 64 64 72 5f ). { caddr_
07a0: 74 20 61 64 64 72 20 3d 20 28 63 61 64 64 72 5f t addr = (caddr_
07b0: 74 29 28 69 20 3c 3c 20 6d 79 5f 73 68 69 66 74 t)(i << my_shift
07c0: 29 3b 0a 2f 2a 20 43 68 65 63 6b 20 66 6f 72 20 );./* Check for
07d0: 38 20 4d 42 2c 20 6e 6f 74 20 31 36 20 4d 42 2e 8 MB, not 16 MB.
07e0: 20 54 68 69 73 20 69 73 20 6d 6f 72 65 20 6c 69 This is more li
07f0: 6b 65 6c 79 20 74 6f 20 77 6f 72 6b 20 6f 6e 20 kely to work on
0800: 53 6f 6c 61 72 69 73 20 32 2e 20 2a 2f 0a 23 69 Solaris 2. */.#i
0810: 66 20 62 69 74 73 5f 74 6f 5f 61 76 6f 69 64 0a f bits_to_avoid.
0820: 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 73 69 7a long siz
0830: 65 20 3d 20 69 2a 6d 79 5f 73 69 7a 65 3b 0a 23 e = i*my_size;.#
0840: 65 6c 73 65 0a 20 20 20 20 20 20 20 20 6c 6f 6e else. lon
0850: 67 20 73 69 7a 65 20 3d 20 28 28 69 2b 31 29 2f g size = ((i+1)/
0860: 32 29 2a 6d 79 5f 73 69 7a 65 3b 0a 23 65 6e 64 2)*my_size;.#end
0870: 69 66 0a 20 20 20 20 20 20 20 20 69 66 20 28 6d if. if (m
0880: 6d 61 70 28 61 64 64 72 2c 73 69 7a 65 2c 50 52 map(addr,size,PR
0890: 4f 54 5f 52 45 41 44 7c 50 52 4f 54 5f 57 52 49 OT_READ|PROT_WRI
08a0: 54 45 2c 66 6c 61 67 73 7c 4d 41 50 5f 46 49 58 TE,flags|MAP_FIX
08b0: 45 44 2c 66 64 2c 30 29 20 3d 3d 20 28 76 6f 69 ED,fd,0) == (voi
08c0: 64 2a 29 2d 31 29 20 65 78 69 74 28 31 29 3b 0a d*)-1) exit(1);.
08d0: 20 20 20 20 7d 0a 23 64 65 66 69 6e 65 20 78 28 }.#define x(
08e0: 69 29 20 20 2a 28 75 6e 73 69 67 6e 65 64 20 63 i) *(unsigned c
08f0: 68 61 72 20 2a 29 20 28 28 69 3c 3c 6d 79 5f 73 har *) ((i<<my_s
0900: 68 69 66 74 29 20 2b 20 28 69 2a 69 29 29 0a 23 hift) + (i*i)).#
0910: 64 65 66 69 6e 65 20 79 28 69 29 20 20 28 75 6e define y(i) (un
0920: 73 69 67 6e 65 64 20 63 68 61 72 29 28 28 33 2a signed char)((3*
0930: 69 2d 34 29 2a 28 37 2a 69 2b 33 29 29 0a 20 20 i-4)*(7*i+3)).
0940: 66 6f 72 20 28 69 3d 6d 79 5f 6c 6f 77 3b 20 69 for (i=my_low; i
0950: 3c 3d 6d 79 5f 68 69 67 68 3b 20 69 2b 2b 29 20 <=my_high; i++)
0960: 69 66 20 28 69 5f 6f 6b 28 69 29 29 20 7b 20 78 if (i_ok(i)) { x
0970: 28 69 29 20 3d 20 79 28 69 29 3b 20 7d 0a 20 20 (i) = y(i); }.
0980: 66 6f 72 20 28 69 3d 6d 79 5f 68 69 67 68 3b 20 for (i=my_high;
0990: 69 3e 3d 6d 79 5f 6c 6f 77 3b 20 69 2d 2d 29 20 i>=my_low; i--)
09a0: 69 66 20 28 69 5f 6f 6b 28 69 29 29 20 7b 20 69 if (i_ok(i)) { i
09b0: 66 20 28 78 28 69 29 20 21 3d 20 79 28 69 29 29 f (x(i) != y(i))
09c0: 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 65 78 exit(1); }. ex
09d0: 69 74 28 30 29 3b 0a 7d 7d 0a 27 0a 41 43 5f 54 it(0);.}}.'.AC_T
09e0: 52 59 5f 52 55 4e 28 5b 24 6d 6d 61 70 5f 70 72 RY_RUN([$mmap_pr
09f0: 6f 67 5f 31 0a 20 20 69 6e 74 20 66 6c 61 67 73 og_1. int flags
0a00: 20 3d 20 4d 41 50 5f 41 4e 4f 4e 20 7c 20 4d 41 = MAP_ANON | MA
0a10: 50 5f 50 52 49 56 41 54 45 3b 0a 20 20 69 6e 74 P_PRIVATE;. int
0a20: 20 66 64 20 3d 20 2d 31 3b 0a 24 6d 6d 61 70 5f fd = -1;.$mmap_
0a30: 70 72 6f 67 5f 32 0a 5d 2c 20 68 61 76 65 5f 6d prog_2.], have_m
0a40: 6d 61 70 5f 61 6e 6f 6e 3d 31 0a 63 6c 5f 63 76 map_anon=1.cl_cv
0a50: 5f 66 75 6e 63 5f 6d 6d 61 70 5f 61 6e 6f 6e 3d _func_mmap_anon=
0a60: 79 65 73 2c 20 72 6d 20 2d 66 20 63 6f 72 65 2c yes, rm -f core,
0a70: 0a 3a 20 23 20 57 68 65 6e 20 63 72 6f 73 73 2d .: # When cross-
0a80: 63 6f 6d 70 69 6c 69 6e 67 2c 20 64 6f 6e 27 74 compiling, don't
0a90: 20 61 73 73 75 6d 65 20 61 6e 79 74 68 69 6e 67 assume anything
0aa0: 2e 0a 29 0a 41 43 5f 54 52 59 5f 52 55 4e 28 5b ..).AC_TRY_RUN([
0ab0: 24 6d 6d 61 70 5f 70 72 6f 67 5f 31 0a 20 20 69 $mmap_prog_1. i
0ac0: 6e 74 20 66 6c 61 67 73 20 3d 20 4d 41 50 5f 41 nt flags = MAP_A
0ad0: 4e 4f 4e 59 4d 4f 55 53 20 7c 20 4d 41 50 5f 50 NONYMOUS | MAP_P
0ae0: 52 49 56 41 54 45 3b 0a 20 20 69 6e 74 20 66 64 RIVATE;. int fd
0af0: 20 3d 20 2d 31 3b 0a 24 6d 6d 61 70 5f 70 72 6f = -1;.$mmap_pro
0b00: 67 5f 32 0a 5d 2c 20 68 61 76 65 5f 6d 6d 61 70 g_2.], have_mmap
0b10: 5f 61 6e 6f 6e 3d 31 0a 63 6c 5f 63 76 5f 66 75 _anon=1.cl_cv_fu
0b20: 6e 63 5f 6d 6d 61 70 5f 61 6e 6f 6e 79 6d 6f 75 nc_mmap_anonymou
0b30: 73 3d 79 65 73 2c 20 72 6d 20 2d 66 20 63 6f 72 s=yes, rm -f cor
0b40: 65 2c 0a 3a 20 23 20 57 68 65 6e 20 63 72 6f 73 e,.: # When cros
0b50: 73 2d 63 6f 6d 70 69 6c 69 6e 67 2c 20 64 6f 6e s-compiling, don
0b60: 27 74 20 61 73 73 75 6d 65 20 61 6e 79 74 68 69 't assume anythi
0b70: 6e 67 2e 0a 29 0a 41 43 5f 54 52 59 5f 52 55 4e ng..).AC_TRY_RUN
0b80: 28 5b 24 6d 6d 61 70 5f 70 72 6f 67 5f 31 0a 23 ([$mmap_prog_1.#
0b90: 69 66 6e 64 65 66 20 4d 41 50 5f 46 49 4c 45 0a ifndef MAP_FILE.
0ba0: 23 64 65 66 69 6e 65 20 4d 41 50 5f 46 49 4c 45 #define MAP_FILE
0bb0: 20 30 0a 23 65 6e 64 69 66 0a 20 20 69 6e 74 20 0.#endif. int
0bc0: 66 6c 61 67 73 20 3d 20 4d 41 50 5f 46 49 4c 45 flags = MAP_FILE
0bd0: 20 7c 20 4d 41 50 5f 50 52 49 56 41 54 45 3b 0a | MAP_PRIVATE;.
0be0: 20 20 69 6e 74 20 66 64 20 3d 20 6f 70 65 6e 28 int fd = open(
0bf0: 22 2f 64 65 76 2f 7a 65 72 6f 22 2c 4f 5f 52 44 "/dev/zero",O_RD
0c00: 4f 4e 4c 59 2c 30 36 36 36 29 3b 0a 20 20 69 66 ONLY,0666);. if
0c10: 20 28 66 64 3c 30 29 20 65 78 69 74 28 31 29 3b (fd<0) exit(1);
0c20: 0a 24 6d 6d 61 70 5f 70 72 6f 67 5f 32 0a 5d 2c .$mmap_prog_2.],
0c30: 20 68 61 76 65 5f 6d 6d 61 70 5f 64 65 76 7a 65 have_mmap_devze
0c40: 72 6f 3d 31 0a 63 6c 5f 63 76 5f 66 75 6e 63 5f ro=1.cl_cv_func_
0c50: 6d 6d 61 70 5f 64 65 76 7a 65 72 6f 3d 79 65 73 mmap_devzero=yes
0c60: 2c 20 72 6d 20 2d 66 20 63 6f 72 65 0a 72 65 74 , rm -f core.ret
0c70: 72 79 5f 6d 6d 61 70 3d 31 2c 0a 3a 20 23 20 57 ry_mmap=1,.: # W
0c80: 68 65 6e 20 63 72 6f 73 73 2d 63 6f 6d 70 69 6c hen cross-compil
0c90: 69 6e 67 2c 20 64 6f 6e 27 74 20 61 73 73 75 6d ing, don't assum
0ca0: 65 20 61 6e 79 74 68 69 6e 67 2e 0a 29 0a 69 66 e anything..).if
0cb0: 20 74 65 73 74 20 2d 6e 20 22 24 72 65 74 72 79 test -n "$retry
0cc0: 5f 6d 6d 61 70 22 3b 20 74 68 65 6e 0a 41 43 5f _mmap"; then.AC_
0cd0: 54 52 59 5f 52 55 4e 28 5b 23 64 65 66 69 6e 65 TRY_RUN([#define
0ce0: 20 46 4f 52 5f 53 55 4e 34 5f 32 39 0a 24 6d 6d FOR_SUN4_29.$mm
0cf0: 61 70 5f 70 72 6f 67 5f 31 0a 23 69 66 6e 64 65 ap_prog_1.#ifnde
0d00: 66 20 4d 41 50 5f 46 49 4c 45 0a 23 64 65 66 69 f MAP_FILE.#defi
0d10: 6e 65 20 4d 41 50 5f 46 49 4c 45 20 30 0a 23 65 ne MAP_FILE 0.#e
0d20: 6e 64 69 66 0a 20 20 69 6e 74 20 66 6c 61 67 73 ndif. int flags
0d30: 20 3d 20 4d 41 50 5f 46 49 4c 45 20 7c 20 4d 41 = MAP_FILE | MA
0d40: 50 5f 50 52 49 56 41 54 45 3b 0a 20 20 69 6e 74 P_PRIVATE;. int
0d50: 20 66 64 20 3d 20 6f 70 65 6e 28 22 2f 64 65 76 fd = open("/dev
0d60: 2f 7a 65 72 6f 22 2c 4f 5f 52 44 4f 4e 4c 59 2c /zero",O_RDONLY,
0d70: 30 36 36 36 29 3b 0a 20 20 69 66 20 28 66 64 3c 0666);. if (fd<
0d80: 30 29 20 65 78 69 74 28 31 29 3b 0a 24 6d 6d 61 0) exit(1);.$mma
0d90: 70 5f 70 72 6f 67 5f 32 0a 5d 2c 20 68 61 76 65 p_prog_2.], have
0da0: 5f 6d 6d 61 70 5f 64 65 76 7a 65 72 6f 3d 31 0a _mmap_devzero=1.
0db0: 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f cl_cv_func_mmap_
0dc0: 64 65 76 7a 65 72 6f 5f 73 75 6e 34 5f 32 39 3d devzero_sun4_29=
0dd0: 79 65 73 2c 20 72 6d 20 2d 66 20 63 6f 72 65 2c yes, rm -f core,
0de0: 0a 3a 20 23 20 57 68 65 6e 20 63 72 6f 73 73 2d .: # When cross-
0df0: 63 6f 6d 70 69 6c 69 6e 67 2c 20 64 6f 6e 27 74 compiling, don't
0e00: 20 61 73 73 75 6d 65 20 61 6e 79 74 68 69 6e 67 assume anything
0e10: 2e 0a 29 0a 66 69 0a 69 66 20 74 65 73 74 20 2d ..).fi.if test -
0e20: 6e 20 22 24 68 61 76 65 5f 6d 6d 61 70 5f 61 6e n "$have_mmap_an
0e30: 6f 6e 22 20 2d 6f 20 2d 6e 20 22 24 68 61 76 65 on" -o -n "$have
0e40: 5f 6d 6d 61 70 5f 64 65 76 7a 65 72 6f 22 3b 20 _mmap_devzero";
0e50: 74 68 65 6e 0a 63 6c 5f 63 76 5f 66 75 6e 63 5f then.cl_cv_func_
0e60: 6d 6d 61 70 5f 77 6f 72 6b 73 3d 79 65 73 0a 65 mmap_works=yes.e
0e70: 6c 73 65 0a 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d lse.cl_cv_func_m
0e80: 6d 61 70 5f 77 6f 72 6b 73 3d 6e 6f 0a 66 69 0a map_works=no.fi.
0e90: 5d 29 0a 69 66 20 74 65 73 74 20 22 24 63 6c 5f ]).if test "$cl_
0ea0: 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f 61 6e 6f cv_func_mmap_ano
0eb0: 6e 22 20 3d 20 79 65 73 3b 20 74 68 65 6e 0a 41 n" = yes; then.A
0ec0: 43 5f 44 45 46 49 4e 45 28 48 41 56 45 5f 4d 4d C_DEFINE(HAVE_MM
0ed0: 41 50 5f 41 4e 4f 4e 2c 2c 5b 3c 73 79 73 2f 6d AP_ANON,,[<sys/m
0ee0: 6d 61 6e 2e 68 3e 20 64 65 66 69 6e 65 73 20 4d man.h> defines M
0ef0: 41 50 5f 41 4e 4f 4e 20 61 6e 64 20 6d 6d 61 70 AP_ANON and mmap
0f00: 69 6e 67 20 77 69 74 68 20 4d 41 50 5f 41 4e 4f ing with MAP_ANO
0f10: 4e 20 77 6f 72 6b 73 5d 29 0a 66 69 0a 69 66 20 N works]).fi.if
0f20: 74 65 73 74 20 22 24 63 6c 5f 63 76 5f 66 75 6e test "$cl_cv_fun
0f30: 63 5f 6d 6d 61 70 5f 61 6e 6f 6e 79 6d 6f 75 73 c_mmap_anonymous
0f40: 22 20 3d 20 79 65 73 3b 20 74 68 65 6e 0a 41 43 " = yes; then.AC
0f50: 5f 44 45 46 49 4e 45 28 48 41 56 45 5f 4d 4d 41 _DEFINE(HAVE_MMA
0f60: 50 5f 41 4e 4f 4e 59 4d 4f 55 53 2c 2c 5b 3c 73 P_ANONYMOUS,,[<s
0f70: 79 73 2f 6d 6d 61 6e 2e 68 3e 20 64 65 66 69 6e ys/mman.h> defin
0f80: 65 73 20 4d 41 50 5f 41 4e 4f 4e 59 4d 4f 55 53 es MAP_ANONYMOUS
0f90: 20 61 6e 64 20 6d 6d 61 70 69 6e 67 20 77 69 74 and mmaping wit
0fa0: 68 20 4d 41 50 5f 41 4e 4f 4e 59 4d 4f 55 53 20 h MAP_ANONYMOUS
0fb0: 77 6f 72 6b 73 5d 29 0a 66 69 0a 69 66 20 74 65 works]).fi.if te
0fc0: 73 74 20 22 24 63 6c 5f 63 76 5f 66 75 6e 63 5f st "$cl_cv_func_
0fd0: 6d 6d 61 70 5f 64 65 76 7a 65 72 6f 22 20 3d 20 mmap_devzero" =
0fe0: 79 65 73 3b 20 74 68 65 6e 0a 41 43 5f 44 45 46 yes; then.AC_DEF
0ff0: 49 4e 45 28 48 41 56 45 5f 4d 4d 41 50 5f 44 45 INE(HAVE_MMAP_DE
1000: 56 5a 45 52 4f 2c 2c 5b 6d 6d 61 70 69 6e 67 20 VZERO,,[mmaping
1010: 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 of the special d
1020: 65 76 69 63 65 20 2f 64 65 76 2f 7a 65 72 6f 20 evice /dev/zero
1030: 77 6f 72 6b 73 5d 29 0a 66 69 0a 69 66 20 74 65 works]).fi.if te
1040: 73 74 20 22 24 63 6c 5f 63 76 5f 66 75 6e 63 5f st "$cl_cv_func_
1050: 6d 6d 61 70 5f 64 65 76 7a 65 72 6f 5f 73 75 6e mmap_devzero_sun
1060: 34 5f 32 39 22 20 3d 20 79 65 73 3b 20 74 68 65 4_29" = yes; the
1070: 6e 0a 41 43 5f 44 45 46 49 4e 45 28 48 41 56 45 n.AC_DEFINE(HAVE
1080: 5f 4d 4d 41 50 5f 44 45 56 5a 45 52 4f 5f 53 55 _MMAP_DEVZERO_SU
1090: 4e 34 5f 32 39 2c 2c 5b 6d 6d 61 70 69 6e 67 20 N4_29,,[mmaping
10a0: 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 of the special d
10b0: 65 76 69 63 65 20 2f 64 65 76 2f 7a 65 72 6f 20 evice /dev/zero
10c0: 77 6f 72 6b 73 2c 20 62 75 74 20 6f 6e 6c 79 20 works, but only
10d0: 6f 6e 20 61 64 64 72 65 73 73 65 73 20 3c 20 32 on addresses < 2
10e0: 5e 32 39 5d 29 0a 66 69 0a 66 69 0a 66 69 0a 5d ^29]).fi.fi.fi.]
10f0: 29 0a ).