Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
005537df
Commit
005537df
authored
Oct 13, 1999
by
Richard Henderson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simplified GC interface and other goodies.
From-SVN: r29946
parent
1f1479dc
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
693 additions
and
981 deletions
+693
-981
gcc/Makefile.in
+1
-1
gcc/config.in
+3
-0
gcc/configure
+222
-209
gcc/configure.in
+3
-1
gcc/ggc-common.c
+25
-5
gcc/ggc-none.c
+8
-23
gcc/ggc-page.c
+74
-144
gcc/ggc-simple.c
+301
-565
gcc/ggc.h
+53
-24
gcc/rtl.h
+2
-6
gcc/tree.h
+1
-3
No files found.
gcc/Makefile.in
View file @
005537df
...
...
@@ -1750,7 +1750,7 @@ s-output : $(md_file) genoutput $(srcdir)/move-if-change
$(SHELL)
$(srcdir)
/move-if-change tmp-output.c insn-output.c
touch s-output
genrtl.o
:
genrtl.c $(CONFIG_H) $(RTL_H) system.h
genrtl.o
:
genrtl.c $(CONFIG_H) $(RTL_H) system.h
ggc.h
genrtl.c genrtl.h
:
s-genrtl
@
true
# force gnu make to recheck modification times.
...
...
gcc/config.in
View file @
005537df
...
...
@@ -324,6 +324,9 @@
/* Define if you have the sysconf function. */
#undef HAVE_SYSCONF
/* Define if you have the valloc function. */
#undef HAVE_VALLOC
/* Define if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
...
...
gcc/configure
View file @
005537df
...
...
@@ -91,6 +91,7 @@ program_suffix=NONE
program_transform_name
=
s,x,x,
silent
=
site
=
sitefile
=
srcdir
=
target
=
NONE
verbose
=
...
...
@@ -205,6 +206,7 @@ Configuration:
--help print this message
--no-create do not create output files
--quiet, --silent do not print \`checking...' messages
--site-file=FILE use FILE as the site file
--version print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX install architecture-independent files in PREFIX
...
...
@@ -375,6 +377,11 @@ EOF
-site
=
*
|
--site
=
*
|
--sit
=
*
)
site
=
"
$ac_optarg
"
;;
-site-file
|
--site-file
|
--site-fil
|
--site-fi
|
--site-f
)
ac_prev
=
sitefile
;;
-site-file
=
*
|
--site-file
=
*
|
--site-fil
=
*
|
--site-fi
=
*
|
--site-f
=
*
)
sitefile
=
"
$ac_optarg
"
;;
-srcdir
|
--srcdir
|
--srcdi
|
--srcd
|
--src
|
--sr
)
ac_prev
=
srcdir
;;
-srcdir
=
*
|
--srcdir
=
*
|
--srcdi
=
*
|
--srcd
=
*
|
--src
=
*
|
--sr
=
*
)
...
...
@@ -540,12 +547,16 @@ fi
srcdir
=
`
echo
"
${
srcdir
}
"
| sed
's%\([^/]\)/*$%\1%'
`
# Prefer explicitly selected file to automatically selected ones.
if
test
-z
"
$CONFIG_SITE
"
;
then
if
test
-z
"
$sitefile
"
;
then
if
test
-z
"
$CONFIG_SITE
"
;
then
if
test
"x
$prefix
"
!=
xNONE
;
then
CONFIG_SITE
=
"
$prefix
/share/config.site
$prefix
/etc/config.site"
else
CONFIG_SITE
=
"
$ac_default_prefix
/share/config.site
$ac_default_prefix
/etc/config.site"
fi
fi
else
CONFIG_SITE
=
"
$sitefile
"
fi
for
ac_site_file
in
$CONFIG_SITE
;
do
if
test
-r
"
$ac_site_file
"
;
then
...
...
@@ -600,7 +611,7 @@ copy=cp
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
echo
$ac_n
"checking LIBRARY_PATH variable""...
$ac_c
"
1>&6
echo
"configure:6
04
: checking LIBRARY_PATH variable"
>
&5
echo
"configure:6
15
: checking LIBRARY_PATH variable"
>
&5
case
${
LIBRARY_PATH
}
in
[
:
\;
]
*
|
*
[
:
\;
]
|
*
[
:
\;
][
:
\;
]
*
|
*
[
:
\;
]
.
|
.[:
\;
]
*
|
.
|
*
[
:
\;
]
.[:
\;
]
*
)
library_path_setting
=
"contains current directory"
...
...
@@ -625,7 +636,7 @@ fi
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
echo
$ac_n
"checking GCC_EXEC_PREFIX variable""...
$ac_c
"
1>&6
echo
"configure:6
29
: checking GCC_EXEC_PREFIX variable"
>
&5
echo
"configure:6
40
: checking GCC_EXEC_PREFIX variable"
>
&5
case
${
GCC_EXEC_PREFIX
}
in
[
:
\;
]
*
|
*
[
:
\;
]
|
*
[
:
\;
][
:
\;
]
*
|
*
[
:
\;
]
.
|
.[:
\;
]
*
|
.
|
*
[
:
\;
]
.[:
\;
]
*
)
gcc_exec_prefix_setting
=
"contains current directory"
...
...
@@ -948,7 +959,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo
$ac_n
"checking host system type""...
$ac_c
"
1>&6
echo
"configure:9
52
: checking host system type"
>
&5
echo
"configure:9
63
: checking host system type"
>
&5
host_alias
=
$host
case
"
$host_alias
"
in
...
...
@@ -969,7 +980,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo
"
$ac_t
""
$host
"
1>&6
echo
$ac_n
"checking target system type""...
$ac_c
"
1>&6
echo
"configure:9
73
: checking target system type"
>
&5
echo
"configure:9
84
: checking target system type"
>
&5
target_alias
=
$target
case
"
$target_alias
"
in
...
...
@@ -987,7 +998,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo
"
$ac_t
""
$target
"
1>&6
echo
$ac_n
"checking build system type""...
$ac_c
"
1>&6
echo
"configure:
991
: checking build system type"
>
&5
echo
"configure:
1002
: checking build system type"
>
&5
build_alias
=
$build
case
"
$build_alias
"
in
...
...
@@ -1014,7 +1025,7 @@ test "$host_alias" != "$target_alias" &&
# Extract the first word of "gcc", so it can be a program name with args.
set
dummy gcc
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:10
18
: checking for
$ac_word
"
>
&5
echo
"configure:10
29
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_CC
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1044,7 +1055,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set
dummy cc
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:10
48
: checking for
$ac_word
"
>
&5
echo
"configure:10
59
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_CC
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1095,7 +1106,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set
dummy cl
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:1
099
: checking for
$ac_word
"
>
&5
echo
"configure:1
110
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_CC
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1127,7 +1138,7 @@ fi
fi
echo
$ac_n
"checking whether the C compiler (
$CC
$CFLAGS
$LDFLAGS
) works""...
$ac_c
"
1>&6
echo
"configure:11
31
: checking whether the C compiler (
$CC
$CFLAGS
$LDFLAGS
) works"
>
&5
echo
"configure:11
42
: checking whether the C compiler (
$CC
$CFLAGS
$LDFLAGS
) works"
>
&5
ac_ext
=
c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
...
...
@@ -1138,12 +1149,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat
>
conftest.
$ac_ext
<<
EOF
#line 11
42
"configure"
#line 11
53
"configure"
#include "confdefs.h"
main(){return(0);}
EOF
if
{
(
eval echo
configure:11
47
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:11
58
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
ac_cv_prog_cc_works
=
yes
# If we can't run a trivial program, we are probably using a cross compiler.
if
(
./conftest
;
exit
)
2>/dev/null
;
then
...
...
@@ -1169,12 +1180,12 @@ if test $ac_cv_prog_cc_works = no; then
{
echo
"configure: error: installation or configuration problem: C compiler cannot create executables."
1>&2
;
exit
1
;
}
fi
echo
$ac_n
"checking whether the C compiler (
$CC
$CFLAGS
$LDFLAGS
) is a cross-compiler""...
$ac_c
"
1>&6
echo
"configure:11
73
: checking whether the C compiler (
$CC
$CFLAGS
$LDFLAGS
) is a cross-compiler"
>
&5
echo
"configure:11
84
: checking whether the C compiler (
$CC
$CFLAGS
$LDFLAGS
) is a cross-compiler"
>
&5
echo
"
$ac_t
""
$ac_cv_prog_cc_cross
"
1>&6
cross_compiling
=
$ac_cv_prog_cc_cross
echo
$ac_n
"checking whether we are using GNU C""...
$ac_c
"
1>&6
echo
"configure:11
78
: checking whether we are using GNU C"
>
&5
echo
"configure:11
89
: checking whether we are using GNU C"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_gcc
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1183,7 +1194,7 @@ else
yes;
#endif
EOF
if
{
ac_try
=
'${CC-cc} -E conftest.c'
;
{
(
eval echo
configure:11
87
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
;
}
| egrep yes
>
/dev/null 2>&1
;
then
if
{
ac_try
=
'${CC-cc} -E conftest.c'
;
{
(
eval echo
configure:11
98
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
;
}
| egrep yes
>
/dev/null 2>&1
;
then
ac_cv_prog_gcc
=
yes
else
ac_cv_prog_gcc
=
no
...
...
@@ -1202,7 +1213,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS
=
"
$CFLAGS
"
CFLAGS
=
echo
$ac_n
"checking whether
${
CC
-cc
}
accepts -g""...
$ac_c
"
1>&6
echo
"configure:12
06
: checking whether
${
CC
-cc
}
accepts -g"
>
&5
echo
"configure:12
17
: checking whether
${
CC
-cc
}
accepts -g"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_cc_g
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1234,7 +1245,7 @@ else
fi
echo
$ac_n
"checking for long double""...
$ac_c
"
1>&6
echo
"configure:12
38
: checking for long double"
>
&5
echo
"configure:12
49
: checking for long double"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_c_long_double
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1242,7 +1253,7 @@ else
gcc_cv_c_long_double
=
yes
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 12
46
"configure"
#line 12
57
"configure"
#include "confdefs.h"
int main() {
...
...
@@ -1252,7 +1263,7 @@ long double foo = 0.0;
switch (0) case 0: case (sizeof(long double) >= sizeof(double)):;
; return 0; }
EOF
if
{
(
eval echo
configure:12
56
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:12
67
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
gcc_cv_c_long_double
=
yes
else
...
...
@@ -1285,7 +1296,7 @@ fi
echo
$ac_n
"checking whether
${
MAKE
-make
}
sets
\$
{MAKE}""...
$ac_c
"
1>&6
echo
"configure:1
289
: checking whether
${
MAKE
-make
}
sets
\$
{MAKE}"
>
&5
echo
"configure:1
300
: checking whether
${
MAKE
-make
}
sets
\$
{MAKE}"
>
&5
set
dummy
${
MAKE
-make
}
;
ac_make
=
`
echo
"
$2
"
| sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_make_
${
ac_make
}
_set
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -1313,7 +1324,7 @@ fi
echo
$ac_n
"checking whether a default assembler was specified""...
$ac_c
"
1>&6
echo
"configure:13
17
: checking whether a default assembler was specified"
>
&5
echo
"configure:13
28
: checking whether a default assembler was specified"
>
&5
if
test
x
"
${
DEFAULT_ASSEMBLER
+set
}
"
=
x
"set"
;
then
if
test
x
"
$gas_flag
"
=
x
"no"
;
then
echo
"
$ac_t
""yes (
$DEFAULT_ASSEMBLER
)"
1>&6
...
...
@@ -1325,7 +1336,7 @@ else
fi
echo
$ac_n
"checking whether a default linker was specified""...
$ac_c
"
1>&6
echo
"configure:13
29
: checking whether a default linker was specified"
>
&5
echo
"configure:13
40
: checking whether a default linker was specified"
>
&5
if
test
x
"
${
DEFAULT_LINKER
+set
}
"
=
x
"set"
;
then
if
test
x
"
$gnu_ld_flag
"
=
x
"no"
;
then
echo
"
$ac_t
""yes (
$DEFAULT_LINKER
)"
1>&6
...
...
@@ -1342,7 +1353,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set
dummy
$ac_prog
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:13
46
: checking for
$ac_word
"
>
&5
echo
"configure:13
57
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_AWK
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1374,7 +1385,7 @@ done
# Extract the first word of "flex", so it can be a program name with args.
set
dummy flex
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:13
78
: checking for
$ac_word
"
>
&5
echo
"configure:13
89
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_LEX
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1408,7 +1419,7 @@ then
*
)
ac_lib
=
l
;;
esac
echo
$ac_n
"checking for yywrap in -l
$ac_lib
""...
$ac_c
"
1>&6
echo
"configure:14
12
: checking for yywrap in -l
$ac_lib
"
>
&5
echo
"configure:14
23
: checking for yywrap in -l
$ac_lib
"
>
&5
ac_lib_var
=
`
echo
$ac_lib
'_'
yywrap | sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -1416,7 +1427,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-l
$ac_lib
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 14
20
"configure"
#line 14
31
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -1427,7 +1438,7 @@ int main() {
yywrap()
; return 0; }
EOF
if
{
(
eval echo
configure:14
31
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:14
42
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -1450,7 +1461,7 @@ fi
fi
echo
$ac_n
"checking whether ln works""...
$ac_c
"
1>&6
echo
"configure:14
54
: checking whether ln works"
>
&5
echo
"configure:14
65
: checking whether ln works"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_prog_LN
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1482,7 +1493,7 @@ else
fi
echo
$ac_n
"checking whether ln -s works""...
$ac_c
"
1>&6
echo
"configure:14
86
: checking whether ln -s works"
>
&5
echo
"configure:14
97
: checking whether ln -s works"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_prog_LN_S
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1514,19 +1525,19 @@ else
fi
echo
$ac_n
"checking for volatile""...
$ac_c
"
1>&6
echo
"configure:15
18
: checking for volatile"
>
&5
echo
"configure:15
29
: checking for volatile"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_c_volatile
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 15
23
"configure"
#line 15
34
"configure"
#include "confdefs.h"
int main() {
volatile int foo;
; return 0; }
EOF
if
{
(
eval echo
configure:15
30
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:15
41
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
gcc_cv_c_volatile
=
yes
else
...
...
@@ -1549,7 +1560,7 @@ fi
# Extract the first word of "ranlib", so it can be a program name with args.
set
dummy ranlib
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:15
53
: checking for
$ac_word
"
>
&5
echo
"configure:15
64
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_RANLIB
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1581,7 +1592,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set
dummy
$ac_prog
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:15
85
: checking for
$ac_word
"
>
&5
echo
"configure:15
96
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_YACC
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -1622,7 +1633,7 @@ test -n "$YACC" || YACC="yacc"
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo
$ac_n
"checking for a BSD compatible install""...
$ac_c
"
1>&6
echo
"configure:16
26
: checking for a BSD compatible install"
>
&5
echo
"configure:16
37
: checking for a BSD compatible install"
>
&5
if
test
-z
"
$INSTALL
"
;
then
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_install
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -1673,7 +1684,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo
$ac_n
"checking how to run the C preprocessor""...
$ac_c
"
1>&6
echo
"configure:16
77
: checking how to run the C preprocessor"
>
&5
echo
"configure:16
88
: checking how to run the C preprocessor"
>
&5
# On Suns, sometimes $CPP names a directory.
if
test
-n
"
$CPP
"
&&
test
-d
"
$CPP
"
;
then
CPP
=
...
...
@@ -1688,13 +1699,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat
>
conftest.
$ac_ext
<<
EOF
#line 1
692
"configure"
#line 1
703
"configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:1
698
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:1
709
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
:
...
...
@@ -1705,13 +1716,13 @@ else
rm
-rf
conftest
*
CPP
=
"
${
CC
-cc
}
-E -traditional-cpp"
cat
>
conftest.
$ac_ext
<<
EOF
#line 17
09
"configure"
#line 17
20
"configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:17
15
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:17
26
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
:
...
...
@@ -1722,13 +1733,13 @@ else
rm
-rf
conftest
*
CPP
=
"
${
CC
-cc
}
-nologo -E"
cat
>
conftest.
$ac_ext
<<
EOF
#line 17
26
"configure"
#line 17
37
"configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:17
32
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:17
43
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
:
...
...
@@ -1753,12 +1764,12 @@ fi
echo
"
$ac_t
""
$CPP
"
1>&6
echo
$ac_n
"checking for ANSI C header files""...
$ac_c
"
1>&6
echo
"configure:17
57
: checking for ANSI C header files"
>
&5
echo
"configure:17
68
: checking for ANSI C header files"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_stdc
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 17
62
"configure"
#line 17
73
"configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
...
...
@@ -1766,7 +1777,7 @@ else
#include <float.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:17
70
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:17
81
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -1783,7 +1794,7 @@ rm -f conftest*
if
test
$ac_cv_header_stdc
=
yes
;
then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat
>
conftest.
$ac_ext
<<
EOF
#line 17
87
"configure"
#line 17
98
"configure"
#include "confdefs.h"
#include <string.h>
EOF
...
...
@@ -1801,7 +1812,7 @@ fi
if
test
$ac_cv_header_stdc
=
yes
;
then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat
>
conftest.
$ac_ext
<<
EOF
#line 18
05
"configure"
#line 18
16
"configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
...
...
@@ -1822,7 +1833,7 @@ if test "$cross_compiling" = yes; then
:
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 18
26
"configure"
#line 18
37
"configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
...
...
@@ -1833,7 +1844,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
if
{
(
eval echo
configure:18
37
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:18
48
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
:
else
...
...
@@ -1857,12 +1868,12 @@ EOF
fi
echo
$ac_n
"checking whether time.h and sys/time.h may both be included""...
$ac_c
"
1>&6
echo
"configure:18
61
: checking whether time.h and sys/time.h may both be included"
>
&5
echo
"configure:18
72
: checking whether time.h and sys/time.h may both be included"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_time
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 18
66
"configure"
#line 18
77
"configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
...
...
@@ -1871,7 +1882,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
if
{
(
eval echo
configure:18
75
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:18
86
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_header_time
=
yes
else
...
...
@@ -1892,12 +1903,12 @@ EOF
fi
echo
$ac_n
"checking whether string.h and strings.h may both be included""...
$ac_c
"
1>&6
echo
"configure:1
896
: checking whether string.h and strings.h may both be included"
>
&5
echo
"configure:1
907
: checking whether string.h and strings.h may both be included"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_header_string
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 19
01
"configure"
#line 19
12
"configure"
#include "confdefs.h"
#include <string.h>
#include <strings.h>
...
...
@@ -1905,7 +1916,7 @@ int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:19
09
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:19
20
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
gcc_cv_header_string
=
yes
else
...
...
@@ -1926,12 +1937,12 @@ EOF
fi
echo
$ac_n
"checking for sys/wait.h that is POSIX.1 compatible""...
$ac_c
"
1>&6
echo
"configure:19
30
: checking for sys/wait.h that is POSIX.1 compatible"
>
&5
echo
"configure:19
41
: checking for sys/wait.h that is POSIX.1 compatible"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_sys_wait_h
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 19
35
"configure"
#line 19
46
"configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
...
...
@@ -1947,7 +1958,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
if
{
(
eval echo
configure:19
51
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:19
62
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_header_sys_wait_h
=
yes
else
...
...
@@ -1974,17 +1985,17 @@ for ac_hdr in limits.h stddef.h string.h strings.h stdlib.h time.h \
do
ac_safe
=
`
echo
"
$ac_hdr
"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:19
78
: checking for
$ac_hdr
"
>
&5
echo
"configure:19
89
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 19
83
"configure"
#line 19
94
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:19
88
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:19
99
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2014,17 +2025,17 @@ done
# Check for thread headers.
ac_safe
=
`
echo
"thread.h"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for thread.h""...
$ac_c
"
1>&6
echo
"configure:20
18
: checking for thread.h"
>
&5
echo
"configure:20
29
: checking for thread.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 20
23
"configure"
#line 20
34
"configure"
#include "confdefs.h"
#include <thread.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:20
28
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:20
39
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2048,17 +2059,17 @@ fi
ac_safe
=
`
echo
"pthread.h"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for pthread.h""...
$ac_c
"
1>&6
echo
"configure:20
52
: checking for pthread.h"
>
&5
echo
"configure:20
63
: checking for pthread.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 20
57
"configure"
#line 20
68
"configure"
#include "confdefs.h"
#include <pthread.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:20
62
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:20
73
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2085,7 +2096,7 @@ fi
# Extract the first word of "gnatbind", so it can be a program name with args.
set
dummy gnatbind
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:2
089
: checking for
$ac_word
"
>
&5
echo
"configure:2
100
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_prog_gnat
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -2118,12 +2129,12 @@ fi
echo
$ac_n
"checking for preprocessor stringizing operator""...
$ac_c
"
1>&6
echo
"configure:21
22
: checking for preprocessor stringizing operator"
>
&5
echo
"configure:21
33
: checking for preprocessor stringizing operator"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_c_stringize
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 21
27
"configure"
#line 21
38
"configure"
#include "confdefs.h"
#define x(y) #y
...
...
@@ -2156,12 +2167,12 @@ echo "$ac_t""${ac_cv_c_stringize}" 1>&6
# Use <inttypes.h> only if it exists,
# doesn't clash with <sys/types.h>, and declares intmax_t.
echo
$ac_n
"checking for inttypes.h""...
$ac_c
"
1>&6
echo
"configure:21
60
: checking for inttypes.h"
>
&5
echo
"configure:21
71
: checking for inttypes.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_header_inttypes_h
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 21
65
"configure"
#line 21
76
"configure"
#include "confdefs.h"
#include <sys/types.h>
#include <inttypes.h>
...
...
@@ -2169,7 +2180,7 @@ int main() {
intmax_t i = -1;
; return 0; }
EOF
if
{
(
eval echo
configure:21
73
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:21
84
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
gcc_cv_header_inttypes_h
=
yes
else
...
...
@@ -2192,15 +2203,15 @@ fi
for
ac_func
in
strtoul bsearch strerror putenv popen bcopy bzero bcmp
\
index rindex strchr strrchr
kill
getrlimit setrlimit atoll atoq
\
sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked
\
fputs_unlocked getrusage
fputs_unlocked getrusage
valloc
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:2
199
: checking for
$ac_func
"
>
&5
echo
"configure:2
210
: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 22
04
"configure"
#line 22
15
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -2223,7 +2234,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:22
27
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:22
38
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -2252,12 +2263,12 @@ done
#AC_CHECK_TYPE(wchar_t, unsigned int)
echo
$ac_n
"checking for vprintf""...
$ac_c
"
1>&6
echo
"configure:22
56
: checking for vprintf"
>
&5
echo
"configure:22
67
: checking for vprintf"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_vprintf
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 22
61
"configure"
#line 22
72
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
...
...
@@ -2280,7 +2291,7 @@ vprintf();
; return 0; }
EOF
if
{
(
eval echo
configure:22
84
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:22
95
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_vprintf=yes"
else
...
...
@@ -2304,12 +2315,12 @@ fi
if
test
"
$ac_cv_func_vprintf
"
!=
yes
;
then
echo
$ac_n
"checking for _doprnt""...
$ac_c
"
1>&6
echo
"configure:23
08
: checking for _doprnt"
>
&5
echo
"configure:23
19
: checking for _doprnt"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func__doprnt
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 23
13
"configure"
#line 23
24
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
...
...
@@ -2332,7 +2343,7 @@ _doprnt();
; return 0; }
EOF
if
{
(
eval echo
configure:23
36
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:23
47
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func__doprnt=yes"
else
...
...
@@ -2368,7 +2379,7 @@ fi
echo
$ac_n
"checking whether the printf functions support %p""...
$ac_c
"
1>&6
echo
"configure:23
72
: checking whether the printf functions support %p"
>
&5
echo
"configure:23
83
: checking whether the printf functions support %p"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_func_printf_ptr
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -2376,7 +2387,7 @@ else
gcc_cv_func_printf_ptr
=
no
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 23
80
"configure"
#line 23
91
"configure"
#include "confdefs.h"
#include <stdio.h>
...
...
@@ -2389,7 +2400,7 @@ main()
exit (p != q);
}
EOF
if
{
(
eval echo
configure:2
393
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:2
404
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
gcc_cv_func_printf_ptr
=
yes
else
...
...
@@ -2422,12 +2433,12 @@ case "${host}" in
;;
esac
echo
$ac_n
"checking for pid_t""...
$ac_c
"
1>&6
echo
"configure:24
26
: checking for pid_t"
>
&5
echo
"configure:24
37
: checking for pid_t"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_type_pid_t
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 24
31
"configure"
#line 24
42
"configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
...
...
@@ -2456,17 +2467,17 @@ fi
ac_safe
=
`
echo
"vfork.h"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for vfork.h""...
$ac_c
"
1>&6
echo
"configure:24
60
: checking for vfork.h"
>
&5
echo
"configure:24
71
: checking for vfork.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 24
65
"configure"
#line 24
76
"configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:24
70
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:24
81
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2491,18 +2502,18 @@ else
fi
echo
$ac_n
"checking for working vfork""...
$ac_c
"
1>&6
echo
"configure:2
495
: checking for working vfork"
>
&5
echo
"configure:2
506
: checking for working vfork"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_vfork_works
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
if
test
"
$cross_compiling
"
=
yes
;
then
echo
$ac_n
"checking for vfork""...
$ac_c
"
1>&6
echo
"configure:25
01
: checking for vfork"
>
&5
echo
"configure:25
12
: checking for vfork"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_vfork
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 25
06
"configure"
#line 25
17
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
...
...
@@ -2525,7 +2536,7 @@ vfork();
; return 0; }
EOF
if
{
(
eval echo
configure:25
29
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:25
40
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_vfork=yes"
else
...
...
@@ -2547,7 +2558,7 @@ fi
ac_cv_func_vfork_works
=
$ac_cv_func_vfork
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 25
51
"configure"
#line 25
62
"configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
...
...
@@ -2642,7 +2653,7 @@ main() {
}
}
EOF
if
{
(
eval echo
configure:26
46
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:26
57
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
ac_cv_func_vfork_works
=
yes
else
...
...
@@ -2668,17 +2679,17 @@ for ac_hdr in unistd.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:26
72
: checking for
$ac_hdr
"
>
&5
echo
"configure:26
83
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 26
77
"configure"
#line 26
88
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:26
82
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:26
93
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2707,12 +2718,12 @@ done
for
ac_func
in
getpagesize
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:27
11
: checking for
$ac_func
"
>
&5
echo
"configure:27
22
: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 27
16
"configure"
#line 27
27
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -2735,7 +2746,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:27
39
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:27
50
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -2760,7 +2771,7 @@ fi
done
echo
$ac_n
"checking for working mmap""...
$ac_c
"
1>&6
echo
"configure:27
64
: checking for working mmap"
>
&5
echo
"configure:27
75
: checking for working mmap"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_mmap_fixed_mapped
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -2768,7 +2779,7 @@ else
ac_cv_func_mmap_fixed_mapped
=
no
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 27
72
"configure"
#line 27
83
"configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
...
...
@@ -2908,7 +2919,7 @@ main()
}
EOF
if
{
(
eval echo
configure:29
12
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:29
23
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
ac_cv_func_mmap_fixed_mapped
=
yes
else
...
...
@@ -2936,12 +2947,12 @@ for ac_func in bcopy bzero bcmp \
strsignal putc_unlocked fputs_unlocked strstr
do
echo
$ac_n
"checking whether
$ac_func
must be declared""...
$ac_c
"
1>&6
echo
"configure:29
40
: checking whether
$ac_func
must be declared"
>
&5
echo
"configure:29
51
: checking whether
$ac_func
must be declared"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_decl_needed_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 29
45
"configure"
#line 29
56
"configure"
#include "confdefs.h"
#include <stdio.h>
...
...
@@ -2974,7 +2985,7 @@ int main() {
char *(*pfn) = (char *(*))
$ac_func
; return 0; }
EOF
if
{
(
eval echo
configure:29
78
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:29
89
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
eval
"gcc_cv_decl_needed_
$ac_func
=no"
else
...
...
@@ -3003,12 +3014,12 @@ done
for
ac_func
in
malloc realloc calloc free
do
echo
$ac_n
"checking whether
$ac_func
must be declared""...
$ac_c
"
1>&6
echo
"configure:30
07
: checking whether
$ac_func
must be declared"
>
&5
echo
"configure:30
18
: checking whether
$ac_func
must be declared"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_decl_needed_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 30
12
"configure"
#line 30
23
"configure"
#include "confdefs.h"
#include <stdio.h>
...
...
@@ -3044,7 +3055,7 @@ int main() {
char *(*pfn) = (char *(*))
$ac_func
; return 0; }
EOF
if
{
(
eval echo
configure:30
48
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:30
59
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
eval
"gcc_cv_decl_needed_
$ac_func
=no"
else
...
...
@@ -3073,12 +3084,12 @@ done
for
ac_func
in
getrlimit setrlimit getrusage
do
echo
$ac_n
"checking whether
$ac_func
must be declared""...
$ac_c
"
1>&6
echo
"configure:30
77
: checking whether
$ac_func
must be declared"
>
&5
echo
"configure:30
88
: checking whether
$ac_func
must be declared"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_decl_needed_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 30
82
"configure"
#line 30
93
"configure"
#include "confdefs.h"
#include <stdio.h>
...
...
@@ -3115,7 +3126,7 @@ int main() {
char *(*pfn) = (char *(*))
$ac_func
; return 0; }
EOF
if
{
(
eval echo
configure:31
19
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:31
30
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
eval
"gcc_cv_decl_needed_
$ac_func
=no"
else
...
...
@@ -3142,12 +3153,12 @@ done
echo
$ac_n
"checking for sys_siglist declaration in signal.h or unistd.h""...
$ac_c
"
1>&6
echo
"configure:31
46
: checking for sys_siglist declaration in signal.h or unistd.h"
>
&5
echo
"configure:31
57
: checking for sys_siglist declaration in signal.h or unistd.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_decl_sys_siglist
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 31
51
"configure"
#line 31
62
"configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
...
...
@@ -3159,7 +3170,7 @@ int main() {
char *msg = *(sys_siglist + 1);
; return 0; }
EOF
if
{
(
eval echo
configure:31
63
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:31
74
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_decl_sys_siglist
=
yes
else
...
...
@@ -3182,12 +3193,12 @@ fi
# mkdir takes a single argument on some systems.
echo
$ac_n
"checking if mkdir takes one argument""...
$ac_c
"
1>&6
echo
"configure:31
86
: checking if mkdir takes one argument"
>
&5
echo
"configure:31
97
: checking if mkdir takes one argument"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gcc_cv_mkdir_takes_one_arg
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
191
"configure"
#line 3
202
"configure"
#include "confdefs.h"
#include <sys/types.h>
...
...
@@ -3204,7 +3215,7 @@ int main() {
mkdir ("foo", 0);
; return 0; }
EOF
if
{
(
eval echo
configure:32
08
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:32
19
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
gcc_cv_mkdir_takes_one_arg
=
no
else
...
...
@@ -5968,7 +5979,7 @@ for machine in $build $host $target; do
xmake_file
=
sparc/x-sysv4
extra_parts
=
"crt1.o crti.o crtn.o gmon.o crtbegin.o crtend.o"
case
$machine
in
*
-
*
-solaris2
.
[0-4]
)
*
-
*
-solaris2
.
0-4
)
float_format
=
i128
;;
*
)
...
...
@@ -6641,7 +6652,7 @@ fi
echo
$ac_n
"checking for strerror in -lcposix""...
$ac_c
"
1>&6
echo
"configure:66
3
6: checking for strerror in -lcposix"
>
&5
echo
"configure:66
5
6: checking for strerror in -lcposix"
>
&5
ac_lib_var
=
`
echo
cposix
'_'
strerror | sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -6649,7 +6660,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lcposix
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 66
4
4 "configure"
#line 66
6
4 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -6660,7 +6671,7 @@ int main() {
strerror()
; return 0; }
EOF
if
{
(
eval echo
configure:66
5
5:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:66
7
5:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -6683,12 +6694,12 @@ fi
echo
$ac_n
"checking for working const""...
$ac_c
"
1>&6
echo
"configure:66
7
8: checking for working const"
>
&5
echo
"configure:66
9
8: checking for working const"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_c_const
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 6
68
3 "configure"
#line 6
70
3 "configure"
#include "confdefs.h"
int main() {
...
...
@@ -6737,7 +6748,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if
{
(
eval echo
configure:67
3
2:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:67
5
2:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_c_const
=
yes
else
...
...
@@ -6758,21 +6769,21 @@ EOF
fi
echo
$ac_n
"checking for inline""...
$ac_c
"
1>&6
echo
"configure:67
5
3: checking for inline"
>
&5
echo
"configure:67
7
3: checking for inline"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_c_inline
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
ac_cv_c_inline
=
no
for
ac_kw
in
inline __inline__ __inline
;
do
cat
>
conftest.
$ac_ext
<<
EOF
#line 67
6
0 "configure"
#line 67
8
0 "configure"
#include "confdefs.h"
int main() {
}
$ac_kw
foo() {
; return 0; }
EOF
if
{
(
eval echo
configure:67
6
7:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:67
8
7:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_c_inline
=
$ac_kw
;
break
else
...
...
@@ -6798,12 +6809,12 @@ EOF
esac
echo
$ac_n
"checking for off_t""...
$ac_c
"
1>&6
echo
"configure:6
79
3: checking for off_t"
>
&5
echo
"configure:6
81
3: checking for off_t"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_type_off_t
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 6
79
8 "configure"
#line 6
81
8 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
...
...
@@ -6831,12 +6842,12 @@ EOF
fi
echo
$ac_n
"checking for size_t""...
$ac_c
"
1>&6
echo
"configure:68
2
6: checking for size_t"
>
&5
echo
"configure:68
4
6: checking for size_t"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_type_size_t
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 68
3
1 "configure"
#line 68
5
1 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
...
...
@@ -6866,19 +6877,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo
$ac_n
"checking for working alloca.h""...
$ac_c
"
1>&6
echo
"configure:68
6
1: checking for working alloca.h"
>
&5
echo
"configure:68
8
1: checking for working alloca.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_alloca_h
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 68
6
6 "configure"
#line 68
8
6 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
if
{
(
eval echo
configure:68
7
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:68
9
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
ac_cv_header_alloca_h
=
yes
else
...
...
@@ -6899,12 +6910,12 @@ EOF
fi
echo
$ac_n
"checking for alloca""...
$ac_c
"
1>&6
echo
"configure:6
89
4: checking for alloca"
>
&5
echo
"configure:6
91
4: checking for alloca"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_alloca_works
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 6
89
9 "configure"
#line 6
91
9 "configure"
#include "confdefs.h"
#ifdef __GNUC__
...
...
@@ -6932,7 +6943,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
if
{
(
eval echo
configure:69
2
7:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:69
4
7:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
ac_cv_func_alloca_works
=
yes
else
...
...
@@ -6964,12 +6975,12 @@ EOF
echo
$ac_n
"checking whether alloca needs Cray hooks""...
$ac_c
"
1>&6
echo
"configure:69
5
9: checking whether alloca needs Cray hooks"
>
&5
echo
"configure:69
7
9: checking whether alloca needs Cray hooks"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_os_cray
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 69
6
4 "configure"
#line 69
8
4 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
...
...
@@ -6994,12 +7005,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if
test
$ac_cv_os_cray
=
yes
;
then
for
ac_func
in
_getb67 GETB67 getb67
;
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:
698
9: checking for
$ac_func
"
>
&5
echo
"configure:
700
9: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line
699
4 "configure"
#line
701
4 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -7022,7 +7033,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:70
1
7:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:70
3
7:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -7049,7 +7060,7 @@ done
fi
echo
$ac_n
"checking stack direction for C alloca""...
$ac_c
"
1>&6
echo
"configure:70
4
4: checking stack direction for C alloca"
>
&5
echo
"configure:70
6
4: checking stack direction for C alloca"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_c_stack_direction
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7057,7 +7068,7 @@ else
ac_cv_c_stack_direction
=
0
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 70
5
2 "configure"
#line 70
7
2 "configure"
#include "confdefs.h"
find_stack_direction ()
{
...
...
@@ -7076,7 +7087,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
if
{
(
eval echo
configure:70
7
1:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:70
9
1:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
ac_cv_c_stack_direction
=
1
else
...
...
@@ -7103,17 +7114,17 @@ unistd.h sys/param.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:7
09
8: checking for
$ac_hdr
"
>
&5
echo
"configure:7
11
8: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 71
0
3 "configure"
#line 71
2
3 "configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:71
0
8:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:71
2
8:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -7143,12 +7154,12 @@ done
strdup __argz_count __argz_stringify __argz_next
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:71
3
8: checking for
$ac_func
"
>
&5
echo
"configure:71
5
8: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 71
4
3 "configure"
#line 71
6
3 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -7171,7 +7182,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:71
6
6:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:71
8
6:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -7200,12 +7211,12 @@ done
for
ac_func
in
stpcpy
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:7
19
5: checking for
$ac_func
"
>
&5
echo
"configure:7
21
5: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 72
0
0 "configure"
#line 72
2
0 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -7228,7 +7239,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:72
2
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:72
4
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -7262,19 +7273,19 @@ EOF
if
test
$ac_cv_header_locale_h
=
yes
;
then
echo
$ac_n
"checking for LC_MESSAGES""...
$ac_c
"
1>&6
echo
"configure:72
5
7: checking for LC_MESSAGES"
>
&5
echo
"configure:72
7
7: checking for LC_MESSAGES"
>
&5
if
eval
"test
\"
`
echo
'$''{'
am_cv_val_LC_MESSAGES
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 72
6
2 "configure"
#line 72
8
2 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
if
{
(
eval echo
configure:72
6
9:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:72
8
9:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
am_cv_val_LC_MESSAGES
=
yes
else
...
...
@@ -7295,7 +7306,7 @@ EOF
fi
fi
echo
$ac_n
"checking whether NLS is requested""...
$ac_c
"
1>&6
echo
"configure:7
29
0: checking whether NLS is requested"
>
&5
echo
"configure:7
31
0: checking whether NLS is requested"
>
&5
# Check whether --enable-nls or --disable-nls was given.
if
test
"
${
enable_nls
+set
}
"
=
set
;
then
enableval
=
"
$enable_nls
"
...
...
@@ -7315,7 +7326,7 @@ fi
EOF
echo
$ac_n
"checking whether included gettext is requested""...
$ac_c
"
1>&6
echo
"configure:73
1
0: checking whether included gettext is requested"
>
&5
echo
"configure:73
3
0: checking whether included gettext is requested"
>
&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if
test
"
${
with_included_gettext
+set
}
"
=
set
;
then
withval
=
"
$with_included_gettext
"
...
...
@@ -7334,17 +7345,17 @@ fi
ac_safe
=
`
echo
"libintl.h"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for libintl.h""...
$ac_c
"
1>&6
echo
"configure:73
2
9: checking for libintl.h"
>
&5
echo
"configure:73
4
9: checking for libintl.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 73
3
4 "configure"
#line 73
5
4 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:73
3
9:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:73
5
9:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -7361,19 +7372,19 @@ fi
if
eval
"test
\"
`
echo
'$ac_cv_header_'
$ac_safe
`
\"
= yes"
;
then
echo
"
$ac_t
""yes"
1>&6
echo
$ac_n
"checking for gettext in libc""...
$ac_c
"
1>&6
echo
"configure:73
5
6: checking for gettext in libc"
>
&5
echo
"configure:73
7
6: checking for gettext in libc"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gt_cv_func_gettext_libc
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 73
6
1 "configure"
#line 73
8
1 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
if
{
(
eval echo
configure:73
6
8:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:73
8
8:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
gt_cv_func_gettext_libc
=
yes
else
...
...
@@ -7389,7 +7400,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if
test
"
$gt_cv_func_gettext_libc
"
!=
"yes"
;
then
echo
$ac_n
"checking for bindtextdomain in -lintl""...
$ac_c
"
1>&6
echo
"configure:7
38
4: checking for bindtextdomain in -lintl"
>
&5
echo
"configure:7
40
4: checking for bindtextdomain in -lintl"
>
&5
ac_lib_var
=
`
echo
intl
'_'
bindtextdomain | sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -7397,7 +7408,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lintl
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 7
39
2 "configure"
#line 7
41
2 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -7408,7 +7419,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
if
{
(
eval echo
configure:74
0
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:74
2
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -7424,12 +7435,12 @@ fi
if
eval
"test
\"
`
echo
'$ac_cv_lib_'
$ac_lib_var
`
\"
= yes"
;
then
echo
"
$ac_t
""yes"
1>&6
echo
$ac_n
"checking for gettext in libintl""...
$ac_c
"
1>&6
echo
"configure:74
1
9: checking for gettext in libintl"
>
&5
echo
"configure:74
3
9: checking for gettext in libintl"
>
&5
if
eval
"test
\"
`
echo
'$''{'
gt_cv_func_gettext_libintl
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
echo
$ac_n
"checking for gettext in -lintl""...
$ac_c
"
1>&6
echo
"configure:74
2
4: checking for gettext in -lintl"
>
&5
echo
"configure:74
4
4: checking for gettext in -lintl"
>
&5
ac_lib_var
=
`
echo
intl
'_'
gettext | sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -7437,7 +7448,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lintl
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 74
3
2 "configure"
#line 74
5
2 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -7448,7 +7459,7 @@ int main() {
gettext()
; return 0; }
EOF
if
{
(
eval echo
configure:74
4
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:74
6
3:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -7487,7 +7498,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set
dummy msgfmt
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:7
48
2: checking for
$ac_word
"
>
&5
echo
"configure:7
50
2: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_MSGFMT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7521,12 +7532,12 @@ fi
for
ac_func
in
dcgettext
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:75
1
6: checking for
$ac_func
"
>
&5
echo
"configure:75
3
6: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 75
2
1 "configure"
#line 75
4
1 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -7549,7 +7560,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:75
4
4:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:75
6
4:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -7576,7 +7587,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set
dummy gmsgfmt
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:75
7
1: checking for
$ac_word
"
>
&5
echo
"configure:75
9
1: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GMSGFMT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7612,7 +7623,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set
dummy xgettext
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:76
0
7: checking for
$ac_word
"
>
&5
echo
"configure:76
2
7: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_XGETTEXT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7644,7 +7655,7 @@ else
fi
cat
>
conftest.
$ac_ext
<<
EOF
#line 76
3
9 "configure"
#line 76
5
9 "configure"
#include "confdefs.h"
int main() {
...
...
@@ -7652,7 +7663,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
if
{
(
eval echo
configure:76
4
7:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:76
6
7:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
CATOBJEXT
=
.gmo
DATADIRNAME
=
share
...
...
@@ -7675,7 +7686,7 @@ fi
if
test
"
$CATOBJEXT
"
=
"NONE"
;
then
echo
$ac_n
"checking whether catgets can be used""...
$ac_c
"
1>&6
echo
"configure:76
7
0: checking whether catgets can be used"
>
&5
echo
"configure:76
9
0: checking whether catgets can be used"
>
&5
# Check whether --with-catgets or --without-catgets was given.
if
test
"
${
with_catgets
+set
}
"
=
set
;
then
withval
=
"
$with_catgets
"
...
...
@@ -7688,7 +7699,7 @@ fi
if
test
"
$nls_cv_use_catgets
"
=
"yes"
;
then
echo
$ac_n
"checking for main in -li""...
$ac_c
"
1>&6
echo
"configure:7
68
3: checking for main in -li"
>
&5
echo
"configure:7
70
3: checking for main in -li"
>
&5
ac_lib_var
=
`
echo
i
'_'
main | sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -7696,14 +7707,14 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-li
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 7
69
1 "configure"
#line 7
71
1 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
if
{
(
eval echo
configure:7
69
8:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:7
71
8:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -7731,12 +7742,12 @@ else
fi
echo
$ac_n
"checking for catgets""...
$ac_c
"
1>&6
echo
"configure:77
2
6: checking for catgets"
>
&5
echo
"configure:77
4
6: checking for catgets"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_catgets
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 77
3
1 "configure"
#line 77
5
1 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char catgets(); below. */
...
...
@@ -7759,7 +7770,7 @@ catgets();
; return 0; }
EOF
if
{
(
eval echo
configure:77
5
4:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:77
7
4:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_catgets=yes"
else
...
...
@@ -7781,7 +7792,7 @@ EOF
# Extract the first word of "gencat", so it can be a program name with args.
set
dummy gencat
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:77
7
6: checking for
$ac_word
"
>
&5
echo
"configure:77
9
6: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GENCAT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7817,7 +7828,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set
dummy gmsgfmt
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:78
1
2: checking for
$ac_word
"
>
&5
echo
"configure:78
3
2: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GMSGFMT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7854,7 +7865,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set
dummy msgfmt
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:78
4
9: checking for
$ac_word
"
>
&5
echo
"configure:78
6
9: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GMSGFMT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7889,7 +7900,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set
dummy xgettext
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:7
88
4: checking for
$ac_word
"
>
&5
echo
"configure:7
90
4: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_XGETTEXT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7947,7 +7958,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set
dummy msgfmt
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:79
4
2: checking for
$ac_word
"
>
&5
echo
"configure:79
6
2: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_MSGFMT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -7981,7 +7992,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set
dummy gmsgfmt
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:79
7
6: checking for
$ac_word
"
>
&5
echo
"configure:79
9
6: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GMSGFMT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -8017,7 +8028,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set
dummy xgettext
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:80
1
2: checking for
$ac_word
"
>
&5
echo
"configure:80
3
2: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_XGETTEXT
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -8110,7 +8121,7 @@ fi
LINGUAS
=
else
echo
$ac_n
"checking for catalogs to be installed""...
$ac_c
"
1>&6
echo
"configure:81
0
5: checking for catalogs to be installed"
>
&5
echo
"configure:81
2
5: checking for catalogs to be installed"
>
&5
NEW_LINGUAS
=
for
lang
in
${
LINGUAS
=
$ALL_LINGUAS
}
;
do
case
"
$ALL_LINGUAS
"
in
...
...
@@ -8138,17 +8149,17 @@ echo "configure:8105: checking for catalogs to be installed" >&5
if
test
"
$CATOBJEXT
"
=
".cat"
;
then
ac_safe
=
`
echo
"linux/version.h"
| sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for linux/version.h""...
$ac_c
"
1>&6
echo
"configure:81
3
3: checking for linux/version.h"
>
&5
echo
"configure:81
5
3: checking for linux/version.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 81
3
8 "configure"
#line 81
5
8 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:81
4
3:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:81
6
3:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -8223,7 +8234,7 @@ fi
echo
$ac_n
"checking whether windows registry support is requested""...
$ac_c
"
1>&6
echo
"configure:82
1
8: checking whether windows registry support is requested"
>
&5
echo
"configure:82
3
8: checking whether windows registry support is requested"
>
&5
if
test
x
$enable_win32_registry
!=
xno
;
then
cat
>>
confdefs.h
<<
\
EOF
#define ENABLE_WIN32_REGISTRY 1
...
...
@@ -8252,7 +8263,7 @@ esac
if
test
x
$enable_win32_registry
!=
xno
;
then
echo
$ac_n
"checking registry key on windows hosts""...
$ac_c
"
1>&6
echo
"configure:82
4
7: checking registry key on windows hosts"
>
&5
echo
"configure:82
6
7: checking registry key on windows hosts"
>
&5
cat
>>
confdefs.h
<<
EOF
#define WIN32_REGISTRY_KEY "
$gcc_cv_win32_registry_key
"
EOF
...
...
@@ -8428,7 +8439,7 @@ fi
# Figure out what assembler alignment features are present.
echo
$ac_n
"checking assembler alignment features""...
$ac_c
"
1>&6
echo
"configure:84
2
3: checking assembler alignment features"
>
&5
echo
"configure:84
4
3: checking assembler alignment features"
>
&5
gcc_cv_as
=
gcc_cv_as_alignment_features
=
gcc_cv_as_gas_srcdir
=
`
echo
$srcdir
| sed
-e
's,/gcc$,,'
`
/gas
...
...
@@ -8549,7 +8560,7 @@ fi
echo
"
$ac_t
""
$gcc_cv_as_alignment_features
"
1>&6
echo
$ac_n
"checking assembler subsection support""...
$ac_c
"
1>&6
echo
"configure:85
4
4: checking assembler subsection support"
>
&5
echo
"configure:85
6
4: checking assembler subsection support"
>
&5
gcc_cv_as_subsections
=
if
test
x
$gcc_cv_as
!=
x
;
then
# Check if we have .subsection
...
...
@@ -8591,7 +8602,7 @@ echo "$ac_t""$gcc_cv_as_subsections" 1>&6
case
"
$target
"
in
sparc
*
-
*
-
*
)
echo
$ac_n
"checking assembler .register pseudo-op support""...
$ac_c
"
1>&6
echo
"configure:8
58
6: checking assembler .register pseudo-op support"
>
&5
echo
"configure:8
60
6: checking assembler .register pseudo-op support"
>
&5
gcc_cv_as_register_pseudo_op
=
if
test
x
$gcc_cv_as
!=
x
;
then
# Check if we have .register
...
...
@@ -8608,7 +8619,7 @@ EOF
echo
"
$ac_t
""
$gcc_cv_as_register_pseudo_op
"
1>&6
echo
$ac_n
"checking assembler offsetable %lo() support""...
$ac_c
"
1>&6
echo
"configure:86
0
3: checking assembler offsetable %lo() support"
>
&5
echo
"configure:86
2
3: checking assembler offsetable %lo() support"
>
&5
gcc_cv_as_offsetable_lo10
=
if
test
x
$gcc_cv_as
!=
x
;
then
# Check if assembler has offsetable %lo()
...
...
@@ -8645,7 +8656,7 @@ EOF
i[34567]86-
*
-
*
)
echo
$ac_n
"checking assembler instructions""...
$ac_c
"
1>&6
echo
"configure:86
4
0: checking assembler instructions"
>
&5
echo
"configure:86
6
0: checking assembler instructions"
>
&5
gcc_cv_as_instructions
=
if
test
x
$gcc_cv_as
!=
x
;
then
set
"filds fists"
"filds mem; fists mem"
...
...
@@ -8745,6 +8756,8 @@ esac
else
if
test
$ac_cv_func_mmap_fixed_mapped
=
yes
;
then
GGC
=
ggc-page
elif
test
$ac_cv_func_valloc
=
yes
;
then
GGC
=
ggc-page
else
GGC
=
ggc-simple
fi
...
...
gcc/configure.in
View file @
005537df
...
...
@@ -368,7 +368,7 @@ fi
AC_CHECK_FUNCS(strtoul bsearch strerror putenv popen bcopy bzero bcmp \
index rindex strchr strrchr kill getrlimit setrlimit atoll atoq \
sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \
fputs_unlocked getrusage)
fputs_unlocked getrusage
valloc
)
# Make sure wchar_t is available
#AC_CHECK_TYPE(wchar_t, unsigned int)
...
...
@@ -4456,6 +4456,8 @@ AC_ARG_WITH(gc,
esac],
[if test $ac_cv_func_mmap_fixed_mapped = yes; then
GGC=ggc-page
elif test $ac_cv_func_valloc = yes; then
GGC=ggc-page
else
GGC=ggc-simple
fi])
...
...
gcc/ggc-common.c
View file @
005537df
...
...
@@ -268,21 +268,18 @@ ggc_mark_rtx_children (r)
ggc_mark_rtvec
(
XVEC
(
r
,
i
));
break
;
case
'S'
:
case
's'
:
ggc_mark_
string_
if_gcable
(
XSTR
(
r
,
i
));
ggc_mark_if_gcable
(
XSTR
(
r
,
i
));
break
;
}
}
}
void
ggc_mark_rtvec
(
v
)
ggc_mark_rtvec
_children
(
v
)
rtvec
v
;
{
int
i
;
if
(
v
==
NULL
||
ggc_set_mark_rtvec
(
v
))
return
;
i
=
GET_NUM_ELEM
(
v
);
while
(
--
i
>=
0
)
ggc_mark_rtx
(
RTVEC_ELT
(
v
,
i
));
...
...
@@ -451,3 +448,26 @@ ggc_mark_tree_hash_table (ht)
hash_traverse
(
ht
,
ggc_mark_tree_hash_table_entry
,
/*info=*/
0
);
}
/* Allocation wrappers. */
char
*
ggc_alloc_string
(
contents
,
length
)
const
char
*
contents
;
int
length
;
{
char
*
string
;
if
(
length
<
0
)
{
if
(
contents
==
NULL
)
return
NULL
;
length
=
strlen
(
contents
);
}
string
=
(
char
*
)
ggc_alloc_obj
(
length
+
1
,
0
);
if
(
contents
!=
NULL
)
memcpy
(
string
,
contents
,
length
);
string
[
length
]
=
0
;
return
string
;
}
gcc/ggc-none.c
View file @
005537df
...
...
@@ -35,28 +35,13 @@
/* For now, keep using the old obstack scheme in the gen* programs. */
int
ggc_p
=
0
;
rtx
ggc_alloc_rtx
(
nslots
)
int
nslots
;
void
*
ggc_alloc_obj
(
size
,
zero
)
size_t
size
;
int
zero
;
{
int
size
=
sizeof
(
struct
rtx_def
)
+
(
nslots
-
1
)
*
sizeof
(
rtunion
);
rtx
n
;
n
=
(
rtx
)
xmalloc
(
size
);
bzero
((
char
*
)
n
,
size
);
return
n
;
}
rtvec
ggc_alloc_rtvec
(
nelt
)
int
nelt
;
{
int
size
=
sizeof
(
struct
rtvec_def
)
+
(
nelt
-
1
)
*
sizeof
(
rtx
);
rtvec
v
;
v
=
(
rtvec
)
xmalloc
(
size
);
bzero
((
char
*
)
v
,
size
);
return
v
;
void
*
p
=
xmalloc
(
size
);
if
(
zero
)
memset
(
p
,
0
,
size
);
return
p
;
}
gcc/ggc-page.c
View file @
005537df
...
...
@@ -27,7 +27,9 @@
#include "flags.h"
#include "ggc.h"
#ifdef HAVE_MMAP
#include <sys/mman.h>
#endif
/* Stategy:
...
...
@@ -111,10 +113,10 @@ char *empty_string;
significant PAGE_L2_BITS and PAGE_L1_BITS are the second and first
index values in the lookup table, respectively.
The topmost leftover bits, if any, are ignored. For 32-bit
architectures and the settings below, there are no leftover bits.
For architectures with wider pointers, the lookup tree points to a
list of pages, which must be scanned to find the
correct one. */
For 32-bit architectures and the settings below, there are no
leftover bits. For architectures with wider pointers, the lookup
tree points to a list of pages, which must be scanned to find the
correct one. */
#define PAGE_L1_BITS (8)
#define PAGE_L2_BITS (32 - PAGE_L1_BITS - G.lg_pagesize)
...
...
@@ -178,8 +180,8 @@ typedef page_entry **page_table[PAGE_L1_SIZE];
#else
/* On 64-bit hosts, we use t
wo level page tables plus a linked list
that disambiguates the top 32-bits. There will almost always be
/* On 64-bit hosts, we use t
he same two level page tables plus a linked
list
that disambiguates the top 32-bits. There will almost always be
exactly one entry in the list. */
typedef
struct
page_table_chain
{
...
...
@@ -221,7 +223,7 @@ static struct globals
unsigned
char
context_depth
;
/* A file descriptor open to /dev/zero for reading. */
#if
ndef MAP_ANONYMOUS
#if
defined (HAVE_MMAP) && !defined(MAP_ANONYMOUS)
int
dev_zero_fd
;
#endif
...
...
@@ -258,16 +260,13 @@ static struct globals
#define GGC_MIN_LAST_ALLOCATED (4 * 1024 * 1024)
static
page_entry
***
ggc_lookup_page_table
PROTO
((
void
));
static
int
ggc_allocated_p
PROTO
((
const
void
*
));
static
page_entry
*
lookup_page_table_entry
PROTO
((
void
*
));
static
page_entry
*
lookup_page_table_entry
PROTO
((
const
void
*
));
static
void
set_page_table_entry
PROTO
((
void
*
,
page_entry
*
));
static
char
*
alloc_anon
PROTO
((
char
*
,
size_t
));
static
struct
page_entry
*
alloc_page
PROTO
((
unsigned
));
static
void
free_page
PROTO
((
struct
page_entry
*
));
static
void
release_pages
PROTO
((
void
));
static
void
*
alloc_obj
PROTO
((
size_t
,
int
));
static
int
mark_obj
PROTO
((
void
*
));
static
void
clear_marks
PROTO
((
void
));
static
void
sweep_pages
PROTO
((
void
));
...
...
@@ -278,37 +277,31 @@ static void poison_pages PROTO ((void));
void
debug_print_page_list
PROTO
((
int
));
/* Returns
the lookup table appropriate for looking up P
. */
/* Returns
non-zero if P was allocated in GC'able memory
. */
static
inline
page_entry
***
ggc_lookup_page_table
()
static
inline
int
ggc_allocated_p
(
p
)
const
void
*
p
;
{
page_entry
***
base
;
size_t
L1
,
L2
;
#if HOST_BITS_PER_PTR <= 32
base
=
&
G
.
lookup
[
0
];
#else
page_table
table
=
G
.
lookup
;
size_t
high_bits
=
(
size_t
)
p
&
~
(
size_t
)
0xffffffff
;
while
(
table
->
high_bits
!=
high_bits
)
while
(
1
)
{
if
(
table
==
NULL
)
return
0
;
if
(
table
->
high_bits
==
high_bits
)
break
;
table
=
table
->
next
;
}
base
=
&
table
->
table
[
0
];
#endif
return
base
;
}
/* Returns non-zero if P was allocated in GC'able memory. */
static
inline
int
ggc_allocated_p
(
p
)
const
void
*
p
;
{
page_entry
***
base
;
size_t
L1
,
L2
;
base
=
ggc_lookup_page_table
();
/* Extract the level 1 and 2 indicies. */
L1
=
LOOKUP_L1
(
p
);
L2
=
LOOKUP_L2
(
p
);
...
...
@@ -321,12 +314,20 @@ ggc_allocated_p (p)
static
inline
page_entry
*
lookup_page_table_entry
(
p
)
void
*
p
;
const
void
*
p
;
{
page_entry
***
base
;
size_t
L1
,
L2
;
base
=
ggc_lookup_page_table
();
#if HOST_BITS_PER_PTR <= 32
base
=
&
G
.
lookup
[
0
];
#else
page_table
table
=
G
.
lookup
;
size_t
high_bits
=
(
size_t
)
p
&
~
(
size_t
)
0xffffffff
;
while
(
table
->
high_bits
!=
high_bits
)
table
=
table
->
next
;
base
=
&
table
->
table
[
0
];
#endif
/* Extract the level 1 and 2 indicies. */
L1
=
LOOKUP_L1
(
p
);
...
...
@@ -407,11 +408,12 @@ poison (start, len)
(if non-null). */
static
inline
char
*
alloc_anon
(
pref
,
size
)
char
*
pref
;
char
*
pref
ATTRIBUTE_UNUSED
;
size_t
size
;
{
char
*
page
;
#ifdef HAVE_MMAP
#ifdef MAP_ANONYMOUS
page
=
(
char
*
)
mmap
(
pref
,
size
,
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
|
MAP_ANONYMOUS
,
-
1
,
0
);
...
...
@@ -424,6 +426,16 @@ alloc_anon (pref, size)
fputs
(
"Virtual memory exhausted!
\n
"
,
stderr
);
exit
(
1
);
}
#else
#ifdef HAVE_VALLOC
page
=
(
char
*
)
valloc
(
size
);
if
(
!
page
)
{
fputs
(
"Virtual memory exhausted!
\n
"
,
stderr
);
exit
(
1
);
}
#endif
/* HAVE_VALLOC */
#endif
/* HAVE_MMAP */
return
page
;
}
...
...
@@ -522,6 +534,7 @@ free_page (entry)
static
inline
void
release_pages
()
{
#ifdef HAVE_MMAP
page_entry
*
p
,
*
next
;
char
*
start
;
size_t
len
;
...
...
@@ -553,6 +566,19 @@ release_pages ()
}
munmap
(
start
,
len
);
#else
#ifdef HAVE_VALLOC
page_entry
*
p
,
*
next
;
for
(
p
=
G
.
free_pages
;
p
;
p
=
next
)
{
next
=
p
->
next
;
free
(
p
->
page
);
free
(
p
);
}
#endif
/* HAVE_VALLOC */
#endif
/* HAVE_MMAP */
G
.
free_pages
=
NULL
;
}
...
...
@@ -582,8 +608,8 @@ static unsigned char const size_lookup[257] =
/* Allocate a chunk of memory of SIZE bytes. If ZERO is non-zero, the
memory is zeroed; otherwise, its contents are undefined. */
static
void
*
alloc_obj
(
size
,
zero
)
void
*
ggc_
alloc_obj
(
size
,
zero
)
size_t
size
;
int
zero
;
{
...
...
@@ -700,8 +726,8 @@ alloc_obj (size, zero)
/* If P is not marked, marks it and returns 0. Otherwise returns 1.
P must have been allocated by the GC allocator; it mustn't point to
static objects, stack variables, or memory allocated with malloc. */
static
int
mark_obj
(
p
)
int
ggc_set_mark
(
p
)
void
*
p
;
{
page_entry
*
entry
;
...
...
@@ -738,6 +764,13 @@ mark_obj (p)
return
0
;
}
void
ggc_mark_if_gcable
(
p
)
void
*
p
;
{
if
(
p
&&
ggc_allocated_p
(
p
))
ggc_set_mark
(
p
);
}
/* Initialize the ggc-mmap allocator. */
void
...
...
@@ -746,7 +779,7 @@ init_ggc ()
G
.
pagesize
=
getpagesize
();
G
.
lg_pagesize
=
exact_log2
(
G
.
pagesize
);
#if
ndef MAP_ANONYMOUS
#if
defined (HAVE_MMAP) && !defined(MAP_ANONYMOUS)
G
.
dev_zero_fd
=
open
(
"/dev/zero"
,
O_RDONLY
);
if
(
G
.
dev_zero_fd
==
-
1
)
abort
();
...
...
@@ -813,64 +846,6 @@ ggc_pop_context ()
}
}
struct
rtx_def
*
ggc_alloc_rtx
(
nslots
)
int
nslots
;
{
return
(
struct
rtx_def
*
)
alloc_obj
(
sizeof
(
struct
rtx_def
)
+
(
nslots
-
1
)
*
sizeof
(
rtunion
),
1
);
}
struct
rtvec_def
*
ggc_alloc_rtvec
(
nelt
)
int
nelt
;
{
return
(
struct
rtvec_def
*
)
alloc_obj
(
sizeof
(
struct
rtvec_def
)
+
(
nelt
-
1
)
*
sizeof
(
rtx
),
1
);
}
union
tree_node
*
ggc_alloc_tree
(
length
)
int
length
;
{
return
(
union
tree_node
*
)
alloc_obj
(
length
,
1
);
}
char
*
ggc_alloc_string
(
contents
,
length
)
const
char
*
contents
;
int
length
;
{
char
*
string
;
if
(
length
<
0
)
{
if
(
contents
==
NULL
)
return
NULL
;
length
=
strlen
(
contents
);
}
string
=
(
char
*
)
alloc_obj
(
length
+
1
,
0
);
if
(
contents
!=
NULL
)
memcpy
(
string
,
contents
,
length
);
string
[
length
]
=
0
;
return
string
;
}
void
*
ggc_alloc
(
size
)
size_t
size
;
{
return
alloc_obj
(
size
,
0
);
}
static
inline
void
clear_marks
()
{
...
...
@@ -1072,54 +1047,9 @@ ggc_collect ()
time
=
get_run_time
()
-
time
;
gc_time
+=
time
;
time
=
(
time
+
500
)
/
1000
;
if
(
!
quiet_flag
)
fprintf
(
stderr
,
"%luk in %d.%03d}"
,
(
unsigned
long
)
G
.
allocated
/
1024
,
time
/
1000
,
time
%
1000
);
}
int
ggc_set_mark_rtx
(
r
)
rtx
r
;
{
return
mark_obj
(
r
);
}
int
ggc_set_mark_rtvec
(
v
)
rtvec
v
;
{
return
mark_obj
(
v
);
}
int
ggc_set_mark_tree
(
t
)
tree
t
;
{
return
mark_obj
(
t
);
}
void
ggc_mark_string
(
s
)
char
*
s
;
{
if
(
s
)
mark_obj
(
s
);
}
void
ggc_mark_string_if_gcable
(
s
)
char
*
s
;
{
if
(
s
&&
ggc_allocated_p
(
s
))
mark_obj
(
s
);
}
void
ggc_mark
(
p
)
void
*
p
;
{
if
(
p
)
mark_obj
(
p
);
{
fprintf
(
stderr
,
"%luk in %.3f}"
,
(
unsigned
long
)
G
.
allocated
/
1024
,
time
*
1e-6
);
}
}
gcc/ggc-simple.c
View file @
005537df
...
...
@@ -28,69 +28,74 @@
#include "hash.h"
#include "ggc.h"
#ifndef offsetof
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
/* Debugging flags. */
/* Zap memory before freeing to catch dangling pointers. */
#define GGC_POISON
/* Log alloc and release. Don't enable this unless you want a
really really lot of data. */
#undef GGC_DUMP
/* Collect statistics on how bushy the search tree is. */
#undef GGC_BALANCE
/* Some magic tags for strings and anonymous memory, hoping to catch
certain errors wrt marking memory. */
/* Perform collection every time ggc_collect is invoked. Otherwise,
collection is performed only when a significant amount of memory
has been allocated since the last collection. */
#undef GGC_ALWAYS_COLLECT
#define IS_MARKED(X) ((X) & 1)
#
define IGNORE_MARK(X) ((X) & -2)
/* Always verify that the to-be-marked memory is collectable. */
#
undef GGC_ALWAYS_VERIFY
#
define GGC_STRING_MAGIC ((unsigned int)0xa1b2c3d4)
#define GGC_
STRING_MAGIC_MARK ((unsigned int)0xa1b2c3d4 | 1)
#define GGC_A
NY_MAGIC ((unsigned int)0xa9bacbdc)
#
define GGC_ANY_MAGIC_MARK ((unsigned int)0xa9bacbdc | 1)
#
ifdef ENABLE_CHECKING
#define GGC_
POISON
#define GGC_ALWAYS_COLLECT
#define GGC_A
LWAYS_VERIFY
#
endif
/* Constants for general use. */
char
*
empty_string
;
extern
int
gc_time
;
/* Global lists of roots, rtxs, and trees. */
#ifndef HOST_BITS_PER_PTR
#define HOST_BITS_PER_PTR HOST_BITS_PER_LONG
#endif
struct
ggc_rtx
{
struct
ggc_rtx
*
chain
;
struct
rtx_def
rtx
;
};
/* We'd like a balanced tree, but we don't really want to pay for the
cost of keeping the tree balanced. We'll settle for the next best
thing -- nearly balanced.
struct
ggc_rtvec
{
struct
ggc_rtvec
*
chain
;
struct
rtvec_def
vec
;
};
In this context, the most natural key is the node pointer itself,
but due to the way memory managers work, we'd be virtually certain
to wind up with a completely degenerate straight line. What's needed
is to make something more variable, and yet predictable, be more
significant in the comparison.
struct
ggc_tree
{
struct
ggc_tree
*
chain
;
union
tree_node
tree
;
};
The handiest source of variability is the low bits of the pointer
value itself. Any sort of bit/byte swap would do, but such machine
specific operations are not handy, and we don't want to put that much
effort into it. */
struct
ggc_string
{
struct
ggc_string
*
chain
;
unsigned
int
magic_mark
;
char
string
[
1
];
};
#define PTR_KEY(p) ((size_t)p << (HOST_BITS_PER_PTR - 8) \
| ((size_t)p & 0xff00) << (HOST_BITS_PER_PTR - 24) \
| (size_t)p >> 16)
/*
A generic allocation, with an external mark bit
. */
/*
GC'able memory; a node in a binary search tree
. */
struct
ggc_
any
struct
ggc_
mem
{
struct
ggc_any
*
chain
;
unsigned
int
magic_mark
;
/* A combination of the standard left/right nodes, indexable by `<'. */
struct
ggc_mem
*
sub
[
2
];
unsigned
int
mark
:
1
;
unsigned
int
context
:
7
;
unsigned
int
size
:
24
;
/* Make sure the data is reasonably aligned. */
union
{
char
c
;
HOST_WIDE_INT
i
;
HOST_WIDEST_INT
i
;
#ifdef HAVE_LONG_DOUBLE
long
double
d
;
#else
...
...
@@ -99,642 +104,373 @@ struct ggc_any
}
u
;
};
st
ruct
ggc_statu
s
st
atic
struct
global
s
{
struct
ggc_status
*
next
;
struct
ggc_rtx
*
rtxs
;
struct
ggc_rtvec
*
vecs
;
struct
ggc_tree
*
trees
;
struct
ggc_string
*
strings
;
struct
ggc_any
*
anys
;
size_t
bytes_alloced_since_gc
;
};
/* Root of the object tree. */
struct
ggc_mem
*
root
;
/* A chain of GGC contexts. The currently active context is at the
front of the chain. */
static
struct
ggc_status
*
ggc_chain
;
/* Data bytes currently allocated. */
size_t
allocated
;
/* The table of all allocated strings. Only valid during collection. */
static
varray_type
ggc_allocated_strings
;
static
size_t
ggc_strings_used
;
/* Data objects currently allocated. */
size_t
objects
;
/* Some statistics. */
/* Data bytes allocated at time of last GC. */
size_t
allocated_last_gc
;
static
int
n_rtxs_collected
;
static
int
n_vecs_collected
;
static
int
n_trees_collected
;
static
int
n_strings_collected
;
static
int
n_anys_collected
;
extern
int
gc_time
;
/* Current context level. */
int
context
;
}
G
;
#ifdef GGC_DUMP
static
FILE
*
dump
;
#endif
/* Skip garbage collection if the current allocation is not at least
this factor times the allocation at the end of the last collection.
In other words, total allocation must expand by (this factor minus
one) before collection is performed. */
#define GGC_MIN_EXPAND_FOR_GC (1.3)
/* Local function prototypes. */
static
void
ggc_free_rtx
PROTO
((
struct
ggc_rtx
*
r
));
static
void
ggc_free_rtvec
PROTO
((
struct
ggc_rtvec
*
v
));
static
void
ggc_free_tree
PROTO
((
struct
ggc_tree
*
t
));
static
void
ggc_free_string
PROTO
((
struct
ggc_string
*
s
));
static
void
ggc_free_any
PROTO
((
struct
ggc_any
*
a
));
static
int
ggc_compare_addresses
PROTO
((
const
void
*
,
const
void
*
));
/* Bound `allocated_last_gc' to 4MB, to prevent the memory expansion
test from triggering too often when the heap is small. */
#define GGC_MIN_LAST_ALLOCATED (4 * 1024 * 1024)
/*
Called once to initialize the garbage collector
. */
/*
Local function prototypes
. */
void
init_ggc
PROTO
((
void
))
{
/* Initialize the global context. */
ggc_push_context
(
);
static
void
tree_insert
PROTO
((
struct
ggc_mem
*
));
static
int
tree_lookup
PROTO
((
struct
ggc_mem
*
));
static
void
clear_marks
PROTO
((
struct
ggc_mem
*
));
static
void
sweep_objs
PROTO
((
struct
ggc_mem
**
));
static
void
ggc_pop_context_1
PROTO
((
struct
ggc_mem
*
,
int
)
);
#ifdef GGC_
DUMP
dump
=
fopen
(
"zgcdump"
,
"w"
);
setlinebuf
(
dump
);
#ifdef GGC_
BALANCE
extern
void
debug_ggc_balance
PROTO
((
void
)
);
static
void
tally_leaves
PROTO
((
struct
ggc_mem
*
,
int
,
size_t
*
,
size_t
*
)
);
#endif
empty_string
=
ggc_alloc_string
(
""
,
0
);
ggc_add_string_root
(
&
empty_string
,
1
);
}
/* Start a new GGC context. Memory allocated in previous contexts
will not be collected while the new context is active. */
void
ggc_push_context
PROTO
((
void
))
{
struct
ggc_status
*
gs
=
(
struct
ggc_status
*
)
xcalloc
(
1
,
sizeof
(
*
gs
));
gs
->
next
=
ggc_chain
;
ggc_chain
=
gs
;
}
/* Insert V into the search tree. */
/* Finish a GC context. Any uncollected memory in the new context
will be merged with the old context. */
void
ggc_pop_context
PROTO
((
void
))
static
inline
void
tree_insert
(
v
)
struct
ggc_mem
*
v
;
{
struct
ggc_rtx
*
r
;
struct
ggc_rtvec
*
v
;
struct
ggc_tree
*
t
;
struct
ggc_string
*
s
;
struct
ggc_any
*
a
;
struct
ggc_status
*
gs
;
gs
=
ggc_chain
;
r
=
gs
->
rtxs
;
if
(
r
)
{
while
(
r
->
chain
)
r
=
r
->
chain
;
r
->
chain
=
gs
->
next
->
rtxs
;
gs
->
next
->
rtxs
=
gs
->
rtxs
;
}
size_t
v_key
=
PTR_KEY
(
v
);
struct
ggc_mem
*
p
,
**
pp
;
v
=
gs
->
vecs
;
if
(
v
)
for
(
pp
=
&
G
.
root
,
p
=
*
pp
;
p
;
p
=
*
pp
)
{
while
(
v
->
chain
)
v
=
v
->
chain
;
v
->
chain
=
gs
->
next
->
vecs
;
gs
->
next
->
vecs
=
gs
->
vecs
;
size_t
p_key
=
PTR_KEY
(
p
);
pp
=
&
p
->
sub
[
v_key
<
p_key
];
}
*
pp
=
v
;
}
t
=
gs
->
trees
;
if
(
t
)
{
while
(
t
->
chain
)
t
=
t
->
chain
;
t
->
chain
=
gs
->
next
->
trees
;
gs
->
next
->
trees
=
gs
->
trees
;
}
/* Return true if V is in the tree. */
s
=
gs
->
strings
;
if
(
s
)
{
while
(
s
->
chain
)
s
=
s
->
chain
;
s
->
chain
=
gs
->
next
->
strings
;
gs
->
next
->
strings
=
gs
->
strings
;
}
static
inline
int
tree_lookup
(
v
)
struct
ggc_mem
*
v
;
{
size_t
v_key
=
PTR_KEY
(
v
);
struct
ggc_mem
*
p
=
G
.
root
;
a
=
gs
->
anys
;
if
(
a
)
while
(
p
)
{
while
(
a
->
chain
)
a
=
a
->
chain
;
a
->
chain
=
gs
->
next
->
anys
;
gs
->
next
->
anys
=
gs
->
anys
;
size_t
p_key
=
PTR_KEY
(
p
);
if
(
p
==
v
)
return
1
;
p
=
p
->
sub
[
v_key
<
p_key
]
;
}
gs
->
next
->
bytes_alloced_since_gc
+=
gs
->
bytes_alloced_since_gc
;
ggc_chain
=
gs
->
next
;
free
(
gs
);
return
0
;
}
/* These allocators are dreadfully simple, with no caching whatsoever so
that Purify-like tools that do allocation versioning can catch errors.
This collector is never going to go fast anyway. */
/* Alloc SIZE bytes of GC'able memory. If ZERO, clear the memory. */
rtx
ggc_alloc_rtx
(
nslots
)
int
nslots
;
void
*
ggc_alloc_obj
(
size
,
zero
)
size_t
size
;
int
zero
;
{
struct
ggc_rtx
*
n
;
int
size
=
sizeof
(
*
n
)
+
(
nslots
-
1
)
*
sizeof
(
rtunion
);
struct
ggc_mem
*
x
;
n
=
(
struct
ggc_rtx
*
)
xcalloc
(
1
,
size
);
n
->
chain
=
ggc_chain
->
rtxs
;
ggc_chain
->
rtxs
=
n
;
x
=
(
struct
ggc_mem
*
)
xmalloc
(
offsetof
(
struct
ggc_mem
,
u
)
+
size
);
x
->
sub
[
0
]
=
NULL
;
x
->
sub
[
1
]
=
NULL
;
x
->
mark
=
0
;
x
->
context
=
G
.
context
;
x
->
size
=
size
;
#ifdef GGC_DUMP
fprintf
(
dump
,
"alloc rtx %p
\n
"
,
&
n
->
rtx
);
#endif
if
(
zero
)
memset
(
&
x
->
u
,
0
,
size
);
ggc_chain
->
bytes_alloced_since_gc
+=
size
;
tree_insert
(
x
);
G
.
allocated
+=
size
;
G
.
objects
+=
1
;
return
&
n
->
rtx
;
return
&
x
->
u
;
}
rtvec
ggc_alloc_rtvec
(
nelt
)
int
nelt
;
{
struct
ggc_rtvec
*
v
;
int
size
=
sizeof
(
*
v
)
+
(
nelt
-
1
)
*
sizeof
(
rtx
);
v
=
(
struct
ggc_rtvec
*
)
xcalloc
(
1
,
size
);
v
->
chain
=
ggc_chain
->
vecs
;
ggc_chain
->
vecs
=
v
;
#ifdef GGC_DUMP
fprintf
(
dump
,
"alloc vec %p
\n
"
,
&
v
->
vec
);
#endif
ggc_chain
->
bytes_alloced_since_gc
+=
size
;
return
&
v
->
vec
;
}
/* Mark a node. */
tree
ggc_
alloc_tree
(
length
)
int
length
;
int
ggc_
set_mark
(
p
)
void
*
p
;
{
struct
ggc_tree
*
n
;
int
size
=
sizeof
(
*
n
)
-
sizeof
(
n
->
tree
)
+
length
;
n
=
(
struct
ggc_tree
*
)
xcalloc
(
1
,
size
);
n
->
chain
=
ggc_chain
->
trees
;
ggc_chain
->
trees
=
n
;
struct
ggc_mem
*
x
;
#ifdef GGC_DUMP
fprintf
(
dump
,
"alloc tree %p
\n
"
,
&
n
->
tree
);
x
=
(
struct
ggc_mem
*
)
((
char
*
)
p
-
offsetof
(
struct
ggc_mem
,
u
));
#ifdef GGC_ALWAYS_VERIFY
if
(
!
tree_lookup
(
x
))
abort
();
#endif
ggc_chain
->
bytes_alloced_since_gc
+=
size
;
return
&
n
->
tree
;
}
char
*
ggc_alloc_string
(
contents
,
length
)
const
char
*
contents
;
int
length
;
{
struct
ggc_string
*
s
;
int
size
;
if
(
length
<
0
)
{
if
(
contents
==
NULL
)
return
NULL
;
length
=
strlen
(
contents
);
}
size
=
(
s
->
string
-
(
char
*
)
s
)
+
length
+
1
;
s
=
(
struct
ggc_string
*
)
xmalloc
(
size
);
s
->
chain
=
ggc_chain
->
strings
;
s
->
magic_mark
=
GGC_STRING_MAGIC
;
ggc_chain
->
strings
=
s
;
if
(
contents
)
memcpy
(
s
->
string
,
contents
,
length
);
s
->
string
[
length
]
=
0
;
#ifdef GGC_DUMP
fprintf
(
dump
,
"alloc string %p
\n
"
,
&
s
->
string
);
#endif
if
(
x
->
mark
)
return
1
;
ggc_chain
->
bytes_alloced_since_gc
+=
size
;
x
->
mark
=
1
;
G
.
allocated
+=
x
->
size
;
G
.
objects
+=
1
;
return
s
->
string
;
return
0
;
}
/* Like xmalloc, but allocates GC-able memory. */
void
*
ggc_alloc
(
bytes
)
size_t
bytes
;
void
ggc_mark_if_gcable
(
p
)
void
*
p
;
{
struct
ggc_
any
*
a
;
struct
ggc_
mem
*
x
;
if
(
bytes
==
0
)
bytes
=
1
;
bytes
+=
(
&
((
struct
ggc_any
*
)
0
)
->
u
.
c
-
(
char
*
)
0
);
if
(
p
==
NULL
)
return
;
a
=
(
struct
ggc_any
*
)
xmalloc
(
bytes
);
a
->
chain
=
ggc_chain
->
anys
;
a
->
magic_mark
=
GGC_ANY_MAGIC
;
ggc_chain
->
anys
=
a
;
x
=
(
struct
ggc_mem
*
)
((
char
*
)
p
-
offsetof
(
struct
ggc_mem
,
u
));
if
(
!
tree_lookup
(
x
))
return
;
ggc_chain
->
bytes_alloced_since_gc
+=
bytes
;
if
(
x
->
mark
)
return
;
return
&
a
->
u
;
x
->
mark
=
1
;
G
.
allocated
+=
x
->
size
;
G
.
objects
+=
1
;
}
/* Freeing a bit of rtl is as simple as calling free. */
static
inline
void
ggc_free_rtx
(
r
)
struct
ggc_rtx
*
r
;
static
void
clear_marks
(
x
)
struct
ggc_mem
*
x
;
{
#ifdef GGC_DUMP
fprintf
(
dump
,
"collect rtx %p
\n
"
,
&
r
->
rtx
);
#endif
#ifdef GGC_POISON
memset
(
r
,
0xAA
,
sizeof
(
*
r
)
+
((
GET_RTX_LENGTH
(
r
->
rtx
.
code
)
-
1
)
*
sizeof
(
rtunion
)));
#endif
free
(
r
);
x
->
mark
=
0
;
if
(
x
->
sub
[
0
])
clear_marks
(
x
->
sub
[
0
]);
if
(
x
->
sub
[
1
])
clear_marks
(
x
->
sub
[
1
]);
}
/* Freeing an rtvec is as simple as calling free. */
static
inline
void
ggc_free_rtvec
(
v
)
struct
ggc_rtvec
*
v
;
static
void
sweep_objs
(
root
)
struct
ggc_mem
**
root
;
{
#ifdef GGC_DUMP
fprintf
(
dump
,
"collect vec %p
\n
"
,
&
v
->
vec
);
#endif
#ifdef GGC_POISON
memset
(
v
,
0xBB
,
sizeof
(
*
v
)
+
((
GET_NUM_ELEM
(
&
v
->
vec
)
-
1
)
*
sizeof
(
rtx
)));
#endif
struct
ggc_mem
*
x
=
*
root
;
if
(
!
x
)
return
;
free
(
v
);
}
sweep_objs
(
&
x
->
sub
[
0
]
);
sweep_objs
(
&
x
->
sub
[
1
]);
/* Freeing a tree node is almost, but not quite, as simple as calling free.
Mostly we need to let the language clean up its lang_specific bits. */
if
(
!
x
->
mark
&&
x
->
context
>=
G
.
context
)
{
struct
ggc_mem
*
l
,
*
r
;
l
=
x
->
sub
[
0
];
r
=
x
->
sub
[
1
];
if
(
!
l
)
*
root
=
r
;
else
if
(
!
r
)
*
root
=
l
;
else
if
(
!
l
->
sub
[
1
])
{
*
root
=
l
;
l
->
sub
[
1
]
=
r
;
}
else
if
(
!
r
->
sub
[
0
])
{
*
root
=
r
;
r
->
sub
[
0
]
=
l
;
}
else
{
*
root
=
l
;
do
{
root
=
&
l
->
sub
[
1
];
}
while
((
l
=
*
root
)
!=
NULL
);
*
root
=
r
;
}
static
inline
void
ggc_free_tree
(
t
)
struct
ggc_tree
*
t
;
{
#ifdef GGC_DUMP
fprintf
(
dump
,
"collect tree %p
\n
"
,
&
t
->
tree
);
#endif
#ifdef GGC_POISON
memset
(
&
t
->
tree
.
common
,
0xCC
,
sizeof
(
t
->
tree
.
common
)
);
memset
(
&
x
->
u
,
0xA5
,
x
->
size
);
#endif
free
(
t
);
free
(
x
);
}
}
/*
Freeing a string is as simple as calling fre
e. */
/*
The top level mark-and-sweep routin
e. */
static
inline
void
ggc_free_string
(
s
)
struct
ggc_string
*
s
;
void
ggc_collect
()
{
#ifdef GGC_DUMP
fprintf
(
dump
,
"collect string %p
\n
"
,
s
->
string
);
#endif
#ifdef GGC_POISON
s
->
magic_mark
=
0xDDDDDDDD
;
s
->
string
[
0
]
=
0xDD
;
#endif
free
(
s
);
}
/* Freeing anonymous memory is as simple as calling free. */
int
time
;
static
inline
void
ggc_free_any
(
a
)
struct
ggc_any
*
a
;
{
#ifdef GGC_DUMP
fprintf
(
dump
,
"collect mem %p
\n
"
,
&
a
->
u
);
#endif
#ifdef GGC_POISON
a
->
magic_mark
=
0xEEEEEEEE
;
#ifndef GGC_ALWAYS_COLLECT
if
(
G
.
allocated
<
GGC_MIN_EXPAND_FOR_GC
*
G
.
allocated_last_gc
)
return
;
#endif
free
(
a
);
}
#ifdef GGC_BALANCE
debug_ggc_balance
();
#endif
/* Mark a node. */
time
=
get_run_time
();
if
(
!
quiet_flag
)
fprintf
(
stderr
,
" {GC %luk -> "
,
(
unsigned
long
)
G
.
allocated
/
1024
);
int
ggc_set_mark_rtx
(
r
)
rtx
r
;
{
int
marked
=
r
->
gc_mark
;
if
(
!
marked
)
r
->
gc_mark
=
1
;
return
marked
;
}
G
.
allocated
=
0
;
G
.
objects
=
0
;
int
ggc_set_mark_rtvec
(
v
)
rtvec
v
;
{
int
marked
=
v
->
gc_mark
;
if
(
!
marked
)
v
->
gc_mark
=
1
;
return
marked
;
}
clear_marks
(
G
.
root
);
ggc_mark_roots
();
sweep_objs
(
&
G
.
root
);
int
ggc_set_mark_tree
(
t
)
tree
t
;
{
int
marked
=
t
->
common
.
gc_mark
;
if
(
!
marked
)
t
->
common
.
gc_mark
=
1
;
return
marked
;
}
G
.
allocated_last_gc
=
G
.
allocated
;
if
(
G
.
allocated_last_gc
<
GGC_MIN_LAST_ALLOCATED
)
G
.
allocated_last_gc
=
GGC_MIN_LAST_ALLOCATED
;
/* Compare the pointers pointed to by A1 and A2. Used as a callback
for qsort/bsearch. */
time
=
get_run_time
()
-
time
;
gc_time
+=
time
;
static
int
ggc_compare_addresses
(
a1
,
a2
)
const
void
*
a1
;
const
void
*
a2
;
{
const
char
*
c1
=
*
((
const
char
**
)
a1
);
const
char
*
c2
=
*
((
const
char
**
)
a2
);
if
(
!
quiet_flag
)
{
fprintf
(
stderr
,
"%luk in %.3f}"
,
(
unsigned
long
)
G
.
allocated
/
1024
,
time
*
1e-6
);
}
if
(
c1
<
c2
)
return
-
1
;
else
if
(
c1
>
c2
)
return
1
;
else
return
0
;
#ifdef GGC_BALANCE
debug_ggc_balance
();
#endif
}
/* Called once to initialize the garbage collector. */
void
ggc_mark_string
(
s
)
char
*
s
;
init_ggc
()
{
const
ptrdiff_t
d
=
(((
struct
ggc_string
*
)
0
)
->
string
-
(
char
*
)
0
);
struct
ggc_string
*
gs
;
G
.
allocated_last_gc
=
GGC_MIN_LAST_ALLOCATED
;
if
(
s
==
NULL
)
return
;
gs
=
(
struct
ggc_string
*
)(
s
-
d
);
if
(
IGNORE_MARK
(
gs
->
magic_mark
)
!=
GGC_STRING_MAGIC
)
return
;
/* abort? */
gs
->
magic_mark
=
GGC_STRING_MAGIC_MARK
;
empty_string
=
ggc_alloc_string
(
""
,
0
);
ggc_add_string_root
(
&
empty_string
,
1
);
}
/* Start a new GGC context. Memory allocated in previous contexts
will not be collected while the new context is active. */
void
ggc_mark_string_if_gcable
(
s
)
char
*
s
;
ggc_push_context
()
{
if
(
s
&&
!
bsearch
(
&
s
,
&
VARRAY_CHAR_PTR
(
ggc_allocated_strings
,
0
),
ggc_strings_used
,
sizeof
(
char
*
),
ggc_compare_addresses
))
return
;
G
.
context
++
;
ggc_mark_string
(
s
);
/* We only allocated 7 bits in the node for the context. This
should be more than enough. */
if
(
G
.
context
>=
128
)
abort
();
}
/* Mark P, allocated with ggc_alloc
. */
/* Finish a GC context. Any uncollected memory in the new context
will be merged with the old context
. */
void
ggc_mark
(
p
)
void
*
p
;
ggc_pop_context
()
{
const
ptrdiff_t
d
=
(
&
((
struct
ggc_any
*
)
0
)
->
u
.
c
-
(
char
*
)
0
);
struct
ggc_any
*
a
;
if
(
p
==
NULL
)
return
;
G
.
context
--
;
if
(
G
.
root
)
ggc_pop_context_1
(
G
.
root
,
G
.
context
);
}
a
=
(
struct
ggc_any
*
)
(((
char
*
)
p
)
-
d
);
if
(
IGNORE_MARK
(
a
->
magic_mark
)
!=
GGC_ANY_MAGIC
)
abort
();
a
->
magic_mark
=
GGC_ANY_MAGIC_MARK
;
static
void
ggc_pop_context_1
(
x
,
c
)
struct
ggc_mem
*
x
;
int
c
;
{
if
(
x
->
context
>
c
)
x
->
context
=
c
;
if
(
x
->
sub
[
0
])
ggc_pop_context_1
(
x
->
sub
[
0
],
c
);
if
(
x
->
sub
[
1
])
ggc_pop_context_1
(
x
->
sub
[
1
],
c
);
}
/*
The top level mark-and-sweep routin
e. */
/*
Dump a tre
e. */
void
ggc_collect
()
debug_ggc_tree
(
p
,
indent
)
struct
ggc_mem
*
p
;
int
indent
;
{
struct
ggc_rtx
*
r
,
**
rp
;
struct
ggc_rtvec
*
v
,
**
vp
;
struct
ggc_tree
*
t
,
**
tp
;
struct
ggc_string
*
s
,
**
sp
;
struct
ggc_status
*
gs
;
struct
ggc_any
*
a
,
**
ap
;
int
time
,
n_rtxs
,
n_trees
,
n_vecs
,
n_strings
,
n_anys
;
#if !defined(ENABLE_CHECKING)
/* See if it's even worth our while. */
if
(
ggc_chain
->
bytes_alloced_since_gc
<
4
*
1024
*
1024
)
return
;
#endif
if
(
!
quiet_flag
)
fputs
(
" {GC "
,
stderr
);
time
=
get_run_time
();
int
i
;
/* Set up the table of allocated strings. */
VARRAY_CHAR_PTR_INIT
(
ggc_allocated_strings
,
1024
,
"allocated strings"
);
ggc_strings_used
=
0
;
/* Clean out all of the GC marks. */
for
(
gs
=
ggc_chain
;
gs
;
gs
=
gs
->
next
)
{
for
(
r
=
gs
->
rtxs
;
r
!=
NULL
;
r
=
r
->
chain
)
r
->
rtx
.
gc_mark
=
0
;
for
(
v
=
gs
->
vecs
;
v
!=
NULL
;
v
=
v
->
chain
)
v
->
vec
.
gc_mark
=
0
;
for
(
t
=
gs
->
trees
;
t
!=
NULL
;
t
=
t
->
chain
)
t
->
tree
.
common
.
gc_mark
=
0
;
for
(
s
=
gs
->
strings
;
s
!=
NULL
;
s
=
s
->
chain
)
if
(
!
p
)
{
s
->
magic_mark
=
GGC_STRING_MAGIC
;
if
(
ggc_strings_used
==
ggc_allocated_strings
->
num_elements
)
VARRAY_GROW
(
ggc_allocated_strings
,
2
*
ggc_strings_used
);
VARRAY_CHAR_PTR
(
ggc_allocated_strings
,
ggc_strings_used
)
=
&
s
->
string
[
0
];
++
ggc_strings_used
;
}
for
(
a
=
gs
->
anys
;
a
!=
NULL
;
a
=
a
->
chain
)
a
->
magic_mark
=
GGC_ANY_MAGIC
;
fputs
(
"(nil)
\n
"
,
stderr
);
return
;
}
/* Sort the allocated string table. */
qsort
(
&
VARRAY_CHAR_PTR
(
ggc_allocated_strings
,
0
),
ggc_strings_used
,
sizeof
(
char
*
),
ggc_compare_addresses
);
ggc_mark_roots
();
/* Free the string table. */
VARRAY_FREE
(
ggc_allocated_strings
);
if
(
p
->
sub
[
0
])
debug_ggc_tree
(
p
->
sub
[
0
],
indent
+
1
);
/* Sweep the resulting dead nodes. */
for
(
i
=
0
;
i
<
indent
;
++
i
)
putc
(
' '
,
stderr
);
fprintf
(
stderr
,
"%lx %p
\n
"
,
PTR_KEY
(
p
),
p
);
/* The RTXs. */
rp
=
&
ggc_chain
->
rtxs
;
r
=
ggc_chain
->
rtxs
;
n_rtxs
=
0
;
while
(
r
!=
NULL
)
{
struct
ggc_rtx
*
chain
=
r
->
chain
;
if
(
!
r
->
rtx
.
gc_mark
)
{
ggc_free_rtx
(
r
);
*
rp
=
chain
;
n_rtxs
++
;
}
else
rp
=
&
r
->
chain
;
r
=
chain
;
}
*
rp
=
NULL
;
n_rtxs_collected
+=
n_rtxs
;
/* The vectors. */
if
(
p
->
sub
[
1
])
debug_ggc_tree
(
p
->
sub
[
1
],
indent
+
1
);
}
vp
=
&
ggc_chain
->
vecs
;
v
=
ggc_chain
->
vecs
;
n_vecs
=
0
;
while
(
v
!=
NULL
)
{
struct
ggc_rtvec
*
chain
=
v
->
chain
;
if
(
!
v
->
vec
.
gc_mark
)
{
ggc_free_rtvec
(
v
);
*
vp
=
chain
;
n_vecs
++
;
}
else
vp
=
&
v
->
chain
;
v
=
chain
;
}
*
vp
=
NULL
;
n_vecs_collected
+=
n_vecs
;
#ifdef GGC_BALANCE
/* Collect tree balance metrics */
/* The trees. */
#include <math.h>
tp
=
&
ggc_chain
->
trees
;
t
=
ggc_chain
->
trees
;
n_trees
=
0
;
while
(
t
!=
NULL
)
{
struct
ggc_tree
*
chain
=
t
->
chain
;
if
(
!
t
->
tree
.
common
.
gc_mark
)
{
ggc_free_tree
(
t
);
*
tp
=
chain
;
n_trees
++
;
}
else
tp
=
&
t
->
chain
;
t
=
chain
;
}
*
tp
=
NULL
;
n_trees_collected
+=
n_trees
;
/* The strings. */
void
debug_ggc_balance
()
{
size_t
nleaf
,
sumdepth
;
sp
=
&
ggc_chain
->
strings
;
s
=
ggc_chain
->
strings
;
n_strings
=
0
;
while
(
s
!=
NULL
)
{
struct
ggc_string
*
chain
=
s
->
chain
;
if
(
!
IS_MARKED
(
s
->
magic_mark
))
{
ggc_free_string
(
s
);
*
sp
=
chain
;
n_strings
++
;
}
else
sp
=
&
s
->
chain
;
s
=
chain
;
}
*
sp
=
NULL
;
n_strings_collected
+=
n_strings
;
nleaf
=
sumdepth
=
0
;
tally_leaves
(
G
.
root
,
0
,
&
nleaf
,
&
sumdepth
);
/* The generic data. */
fprintf
(
stderr
,
" {B %.2f,%.1f,%.1f}"
,
/* In a balanced tree, leaf/node should approach 1/2. */
(
float
)
nleaf
/
(
float
)
G
.
objects
,
/* In a balanced tree, average leaf depth should approach lg(n). */
(
float
)
sumdepth
/
(
float
)
nleaf
,
log
((
double
)
G
.
objects
)
/
M_LN2
);
}
ap
=
&
ggc_chain
->
anys
;
a
=
ggc_chain
->
anys
;
n_anys
=
0
;
while
(
a
!=
NULL
)
{
struct
ggc_any
*
chain
=
a
->
chain
;
if
(
!
IS_MARKED
(
a
->
magic_mark
))
static
void
tally_leaves
(
x
,
depth
,
nleaf
,
sumdepth
)
struct
ggc_mem
*
x
;
int
depth
;
size_t
*
nleaf
;
size_t
*
sumdepth
;
{
if
(
!
x
->
sub
[
0
]
&&
!
x
->
sub
[
1
])
{
ggc_free_any
(
a
);
*
ap
=
chain
;
n_anys
++
;
*
nleaf
+=
1
;
*
sumdepth
+=
depth
;
}
else
ap
=
&
a
->
chain
;
a
=
chain
;
}
n_anys_collected
+=
n_anys
;
ggc_chain
->
bytes_alloced_since_gc
=
0
;
time
=
get_run_time
()
-
time
;
gc_time
+=
time
;
if
(
!
quiet_flag
)
{
time
=
(
time
+
500
)
/
1000
;
fprintf
(
stderr
,
"%dr,%dv,%dt,%ds,%da %d.%03d}"
,
n_rtxs
,
n_vecs
,
n_trees
,
n_strings
,
n_anys
,
time
/
1000
,
time
%
1000
);
}
}
#if 0
/* GDB really should have a memory search function. Since this is just
for initial debugging, I won't even pretend to get the __data_start
to work on any but alpha-dec-linux-gnu. */
static void **
search_data(void **start, void *target)
{
extern void *__data_start[];
void **_end = (void **)sbrk(0);
if (start == NULL)
start = __data_start;
while (start < _end)
{
if (*start == target)
return start;
start++;
if
(
x
->
sub
[
0
])
tally_leaves
(
x
->
sub
[
0
],
depth
+
1
,
nleaf
,
sumdepth
);
if
(
x
->
sub
[
1
])
tally_leaves
(
x
->
sub
[
1
],
depth
+
1
,
nleaf
,
sumdepth
);
}
return NULL;
}
#endif
gcc/ggc.h
View file @
005537df
...
...
@@ -56,34 +56,52 @@ void ggc_del_root PROTO ((void *base));
/* Mark nodes from the gc_add_root callback. These functions follow
pointers to mark other objects too. */
extern
void
ggc_mark_rtvec
PROTO
((
struct
rtvec_def
*
));
extern
void
ggc_mark_tree_varray
PROTO
((
struct
varray_head_tag
*
));
extern
void
ggc_mark_tree_hash_table
PROTO
((
struct
hash_table
*
));
extern
void
ggc_mark_string
PROTO
((
char
*
));
extern
void
ggc_mark
PROTO
((
void
*
));
extern
void
ggc_mark_roots
PROTO
((
void
));
extern
void
ggc_mark_rtx_children
PROTO
((
struct
rtx_def
*
));
extern
void
ggc_mark_rtvec_children
PROTO
((
struct
rtvec_def
*
));
extern
void
ggc_mark_tree_children
PROTO
((
union
tree_node
*
));
/* Mark the string, but only if it was allocated in collectable
memory. */
extern
void
ggc_mark_string_if_gcable
PROTO
((
char
*
));
#define ggc_mark_rtx(RTX_EXPR) \
#define ggc_mark_rtx(EXPR) \
do { \
rtx r__ = (
RTX_
EXPR); \
if (r__ != NULL && ! ggc_set_mark
_rtx
(r__)) \
rtx r__ = (EXPR); \
if (r__ != NULL && ! ggc_set_mark (r__)) \
ggc_mark_rtx_children (r__); \
} while (0)
#define ggc_mark_tree(
TREE_
EXPR) \
#define ggc_mark_tree(EXPR) \
do { \
tree t__ = (
TREE_
EXPR); \
if (t__ != NULL && ! ggc_set_mark
_tree
(t__)) \
tree t__ = (EXPR); \
if (t__ != NULL && ! ggc_set_mark (t__)) \
ggc_mark_tree_children (t__); \
} while (0)
#define ggc_mark_rtvec(EXPR) \
do { \
rtvec v__ = (EXPR); \
if (v__ != NULL && ! ggc_set_mark (v__)) \
ggc_mark_rtvec_children (v__); \
} while (0)
#define ggc_mark_string(EXPR) \
do { \
char *s__ = (EXPR); \
if (s__ != NULL) \
ggc_set_mark (s__); \
} while (0)
#define ggc_mark(EXPR) \
do { \
void *a__ = (EXPR); \
if (a__ != NULL) \
ggc_set_mark (a__); \
} while (0)
/* Mark, but only if it was allocated in collectable memory. */
extern
void
ggc_mark_if_gcable
PROTO
((
void
*
));
/* A GC implementation must provide these functions. */
/* Initialize the garbage collector. */
...
...
@@ -98,24 +116,35 @@ extern void ggc_push_context PROTO ((void));
extern
void
ggc_pop_context
PROTO
((
void
));
/* Allocation. */
struct
rtx_def
*
ggc_alloc_rtx
PROTO
((
int
nslots
));
struct
rtvec_def
*
ggc_alloc_rtvec
PROTO
((
int
nelt
));
union
tree_node
*
ggc_alloc_tree
PROTO
((
int
length
));
/* The internal primitive. */
void
*
ggc_alloc_obj
PROTO
((
size_t
,
int
));
#define ggc_alloc_rtx(NSLOTS) \
((struct rtx_def *) ggc_alloc_obj (sizeof (struct rtx_def) \
+ ((NSLOTS) - 1) * sizeof (rtunion), 1))
#define ggc_alloc_rtvec(NELT) \
((struct rtvec_def *) ggc_alloc_obj (sizeof (struct rtvec_def) \
+ ((NELT) - 1) * sizeof (rtx), 1))
#define ggc_alloc_tree(LENGTH) \
((union tree_node *) ggc_alloc_obj ((LENGTH), 1))
#define ggc_alloc(SIZE) ggc_alloc_obj((SIZE), 0)
char
*
ggc_alloc_string
PROTO
((
const
char
*
contents
,
int
length
));
void
*
ggc_alloc
PROTO
((
size_t
));
/* Invoke the collector. This is really just a hint, but in the case of
the simple collector, the only time it will happen. */
void
ggc_collect
PROTO
((
void
));
/* Actually set the mark on a particular region of memory, but don't
follow pointers. These functions are called by ggc_mark_*. They
return zero if the object was not previously marked; they return
non-zero if the object was already marked, or if, for any other
reason, pointers in this data structure should not be traversed. */
int
ggc_set_mark_rtx
PROTO
((
struct
rtx_def
*
));
int
ggc_set_mark_rtvec
PROTO
((
struct
rtvec_def
*
));
int
ggc_set_mark_tree
PROTO
((
union
tree_node
*
));
follow pointers. This function is called by ggc_mark_*. It
returns zero if the object was not previously marked; non-zero if
the object was already marked, or if, for any other reason,
pointers in this data structure should not be traversed. */
int
ggc_set_mark
PROTO
((
void
*
));
/* Callbacks to the languages. */
...
...
gcc/rtl.h
View file @
005537df
...
...
@@ -102,18 +102,15 @@ typedef struct rtx_def
{
#ifdef ONLY_INT_FIELDS
#ifdef CODE_FIELD_BUG
unsigned
int
code
:
1
5
;
unsigned
int
code
:
1
6
;
#else
unsigned
short
code
;
#endif
#else
/* The kind of expression this is. */
enum
rtx_code
code
:
1
5
;
enum
rtx_code
code
:
1
6
;
#endif
/* Used by the garbage collector. */
unsigned
gc_mark
:
1
;
/* The kind of value the expression has. */
#ifdef ONLY_INT_FIELDS
int
mode
:
8
;
...
...
@@ -207,7 +204,6 @@ typedef struct rtx_def
typedef
struct
rtvec_def
{
int
num_elem
;
/* number of elements */
int
gc_mark
;
struct
rtx_def
*
elem
[
1
];
}
*
rtvec
;
...
...
gcc/tree.h
View file @
005537df
...
...
@@ -203,9 +203,7 @@ struct tree_common
unsigned
lang_flag_5
:
1
;
unsigned
lang_flag_6
:
1
;
unsigned
gc_mark
:
1
;
/* There is room for two more flags. */
/* There is room for three more flags. */
};
/* The following table lists the uses of each of the above flags and
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment