mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
Update.
1998-06-08 18:57 Ulrich Drepper <drepper@cygnus.com> * Makeconfig (subdirs): Add debug. * configure.in: Use sysdeps/generic/elf subdir if ELF platform. * libc.map: Add __backtrace, __backtrace_symbols, backtrace and backtrace_symbols. * sysdeps/generic/backtrace.c: New file. * sysdeps/generic/backtracesyms.c: New file. * sysdeps/generic/elf/backtracesyms.c: New file. * sysdeps/i386/backtrace.c: New file. * debug/Makefile: New file. * debug/backtrace-tst.c: New file. * debug/execinfo.h: New file.
This commit is contained in:
parent
31f7410f5c
commit
2de7874e55
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
1998-06-08 18:57 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* Makeconfig (subdirs): Add debug.
|
||||
* configure.in: Use sysdeps/generic/elf subdir if ELF platform.
|
||||
* libc.map: Add __backtrace, __backtrace_symbols, backtrace and
|
||||
backtrace_symbols.
|
||||
* sysdeps/generic/backtrace.c: New file.
|
||||
* sysdeps/generic/backtracesyms.c: New file.
|
||||
* sysdeps/generic/elf/backtracesyms.c: New file.
|
||||
* sysdeps/i386/backtrace.c: New file.
|
||||
* debug/Makefile: New file.
|
||||
* debug/backtrace-tst.c: New file.
|
||||
* debug/execinfo.h: New file.
|
||||
|
||||
1998-06-08 13:34 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* elf/sprof.c: Implement call graph profiling.
|
||||
|
@ -760,7 +760,7 @@ subdirs = csu assert ctype db2 locale intl catgets math setjmp signal stdlib \
|
||||
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd \
|
||||
posix io termios resource misc socket sysvipc gmon gnulib iconv \
|
||||
iconvdata wctype manual shadow md5-crypt po argp $(add-ons) nss \
|
||||
localedata timezone rt $(sysdep-subdirs) $(binfmt-subdir)
|
||||
localedata timezone rt debug $(sysdep-subdirs) $(binfmt-subdir)
|
||||
|
||||
# The mach and hurd subdirectories have many generated header files which
|
||||
# much of the rest of the library depends on, so it is best to build them
|
||||
|
164
configure
vendored
164
configure
vendored
@ -1119,7 +1119,11 @@ while test $# -gt 0; do
|
||||
done
|
||||
|
||||
# Add the default directories.
|
||||
sysnames="$names sysdeps/generic"
|
||||
if test "$elf" = yes; then
|
||||
sysnames="$names sysdeps/generic/elf sysdeps/generic"
|
||||
else
|
||||
sysnames="$names sysdeps/generic"
|
||||
fi
|
||||
|
||||
# The other names were emitted during the scan.
|
||||
echo "$ac_t""sysdeps/generic" 1>&6
|
||||
@ -1138,7 +1142,7 @@ echo "$ac_t""sysdeps/generic" 1>&6
|
||||
# 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:1142: checking for a BSD compatible install" >&5
|
||||
echo "configure:1146: 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
|
||||
@ -1192,7 +1196,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
|
||||
INSTALL='\$(..)./install-sh -c'
|
||||
fi
|
||||
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
|
||||
echo "configure:1196: checking whether ln -s works" >&5
|
||||
echo "configure:1200: checking whether ln -s works" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1215,7 +1219,7 @@ fi
|
||||
|
||||
# These programs are version sensitive.
|
||||
echo $ac_n "checking build system type""... $ac_c" 1>&6
|
||||
echo "configure:1219: checking build system type" >&5
|
||||
echo "configure:1223: checking build system type" >&5
|
||||
|
||||
build_alias=$build
|
||||
case "$build_alias" in
|
||||
@ -1243,7 +1247,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:1247: checking for $ac_word" >&5
|
||||
echo "configure:1251: 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
|
||||
@ -1276,7 +1280,7 @@ if test -z "$CC"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $CC""... $ac_c" 1>&6
|
||||
echo "configure:1280: checking version of $CC" >&5
|
||||
echo "configure:1284: checking version of $CC" >&5
|
||||
ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcst0-9.-]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1296,7 +1300,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:1300: checking for $ac_word" >&5
|
||||
echo "configure:1304: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1329,7 +1333,7 @@ if test -z "$MAKE"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $MAKE""... $ac_c" 1>&6
|
||||
echo "configure:1333: checking version of $MAKE" >&5
|
||||
echo "configure:1337: checking version of $MAKE" >&5
|
||||
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*version \([0-9][0-9.]*\), by.*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1350,7 +1354,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:1354: checking for $ac_word" >&5
|
||||
echo "configure:1358: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1383,7 +1387,7 @@ if test -z "$MSGFMT"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $MSGFMT""... $ac_c" 1>&6
|
||||
echo "configure:1387: checking version of $MSGFMT" >&5
|
||||
echo "configure:1391: checking version of $MSGFMT" >&5
|
||||
ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.*\([0-9][0-9]*\.[0-9]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1403,7 +1407,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:1407: checking for $ac_word" >&5
|
||||
echo "configure:1411: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1436,7 +1440,7 @@ if test -z "$MAKEINFO"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $MAKEINFO""... $ac_c" 1>&6
|
||||
echo "configure:1440: checking version of $MAKEINFO" >&5
|
||||
echo "configure:1444: checking version of $MAKEINFO" >&5
|
||||
ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo \([0-9][0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1465,7 +1469,7 @@ test -n "$aux_missing" && echo "configure: warning:
|
||||
|
||||
|
||||
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
|
||||
echo "configure:1469: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
|
||||
echo "configure:1473: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1478,11 +1482,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
|
||||
cross_compiling=$ac_cv_prog_cc_cross
|
||||
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1482 "configure"
|
||||
#line 1486 "configure"
|
||||
#include "confdefs.h"
|
||||
main(){return(0);}
|
||||
EOF
|
||||
if { (eval echo configure:1486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:1490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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
|
||||
@ -1507,7 +1511,7 @@ else
|
||||
cross_linkable=yes
|
||||
fi
|
||||
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
|
||||
echo "configure:1511: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
|
||||
echo "configure:1515: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1519,7 +1523,7 @@ 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:1523: checking whether we are using GNU C" >&5
|
||||
echo "configure:1527: 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
|
||||
@ -1528,7 +1532,7 @@ else
|
||||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1532: \"$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:1536: \"$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
|
||||
@ -1541,7 +1545,7 @@ if test $ac_cv_prog_gcc != yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking build system type""... $ac_c" 1>&6
|
||||
echo "configure:1545: checking build system type" >&5
|
||||
echo "configure:1549: checking build system type" >&5
|
||||
|
||||
build_alias=$build
|
||||
case "$build_alias" in
|
||||
@ -1564,7 +1568,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:1568: checking for $ac_word" >&5
|
||||
echo "configure:1572: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1595,7 +1599,7 @@ done
|
||||
fi
|
||||
|
||||
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
|
||||
echo "configure:1599: checking how to run the C preprocessor" >&5
|
||||
echo "configure:1603: checking how to run the C preprocessor" >&5
|
||||
# On Suns, sometimes $CPP names a directory.
|
||||
if test -n "$CPP" && test -d "$CPP"; then
|
||||
CPP=
|
||||
@ -1610,13 +1614,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 1614 "configure"
|
||||
#line 1618 "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:1620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1627,13 +1631,13 @@ else
|
||||
rm -rf conftest*
|
||||
CPP="${CC-cc} -E -traditional-cpp"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1631 "configure"
|
||||
#line 1635 "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:1637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1666,7 +1670,7 @@ LD=`$CC -print-prog-name=ld`
|
||||
|
||||
# Determine whether we are using GNU binutils.
|
||||
echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6
|
||||
echo "configure:1670: checking whether $AS is GNU as" >&5
|
||||
echo "configure:1674: checking whether $AS is GNU as" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1684,7 +1688,7 @@ rm -f a.out
|
||||
gnu_as=$libc_cv_prog_as_gnu
|
||||
|
||||
echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6
|
||||
echo "configure:1688: checking whether $LD is GNU ld" >&5
|
||||
echo "configure:1692: checking whether $LD is GNU ld" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1703,7 +1707,7 @@ gnu_ld=$libc_cv_prog_ld_gnu
|
||||
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}ar; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1707: checking for $ac_word" >&5
|
||||
echo "configure:1711: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1734,7 +1738,7 @@ fi
|
||||
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1738: checking for $ac_word" >&5
|
||||
echo "configure:1742: 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
|
||||
@ -1765,7 +1769,7 @@ if test -n "$ac_tool_prefix"; then
|
||||
# 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:1769: checking for $ac_word" >&5
|
||||
echo "configure:1773: 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
|
||||
@ -1799,7 +1803,7 @@ fi
|
||||
# Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}mig; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1803: checking for $ac_word" >&5
|
||||
echo "configure:1807: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1839,7 +1843,7 @@ fi
|
||||
|
||||
# check if ranlib is necessary
|
||||
echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6
|
||||
echo "configure:1843: checking whether ranlib is necessary" >&5
|
||||
echo "configure:1847: checking whether ranlib is necessary" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1873,7 +1877,7 @@ fi
|
||||
# - two terminals occur directly after each other
|
||||
# - the path contains an element with a dot in it
|
||||
echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6
|
||||
echo "configure:1877: checking LD_LIBRARY_PATH variable" >&5
|
||||
echo "configure:1881: checking LD_LIBRARY_PATH variable" >&5
|
||||
case ${LD_LIBRARY_PATH} in
|
||||
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
|
||||
ld_library_path_setting="contains current directory"
|
||||
@ -1893,7 +1897,7 @@ fi
|
||||
# Extract the first word of "bash", so it can be a program name with args.
|
||||
set dummy bash; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1897: checking for $ac_word" >&5
|
||||
echo "configure:1901: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1935,7 +1939,7 @@ if test "$BASH" = no; then
|
||||
# Extract the first word of "ksh", so it can be a program name with args.
|
||||
set dummy ksh; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1939: checking for $ac_word" >&5
|
||||
echo "configure:1943: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1981,7 +1985,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:1985: checking for $ac_word" >&5
|
||||
echo "configure:1989: 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
|
||||
@ -2014,7 +2018,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:2018: checking for $ac_word" >&5
|
||||
echo "configure:2022: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2049,7 +2053,7 @@ test -n "$PERL" || PERL="no"
|
||||
|
||||
|
||||
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
|
||||
echo "configure:2053: checking for signed size_t type" >&5
|
||||
echo "configure:2057: checking for signed size_t type" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2073,12 +2077,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
|
||||
echo "configure:2077: checking for libc-friendly stddef.h" >&5
|
||||
echo "configure:2081: checking for libc-friendly stddef.h" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2082 "configure"
|
||||
#line 2086 "configure"
|
||||
#include "confdefs.h"
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
@ -2093,7 +2097,7 @@ size_t size; wchar_t wchar;
|
||||
if (&size == NULL || &wchar == NULL) abort ();
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2097: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_friendly_stddef=yes
|
||||
else
|
||||
@ -2112,7 +2116,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
|
||||
echo "configure:2116: checking whether we need to use -P to assemble .S files" >&5
|
||||
echo "configure:2120: checking whether we need to use -P to assemble .S files" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2135,7 +2139,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
|
||||
echo "configure:2139: checking for assembler global-symbol directive" >&5
|
||||
echo "configure:2143: checking for assembler global-symbol directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2165,7 +2169,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2169: checking for .set assembler directive" >&5
|
||||
echo "configure:2173: checking for .set assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2199,7 +2203,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2203: checking for .symver assembler directive" >&5
|
||||
echo "configure:2207: checking for .symver assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2218,7 +2222,7 @@ fi
|
||||
|
||||
echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
|
||||
echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
|
||||
echo "configure:2222: checking for ld --version-script" >&5
|
||||
echo "configure:2226: checking for ld --version-script" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2241,7 +2245,7 @@ EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
|
||||
-nostartfiles -nostdlib
|
||||
-Wl,--version-script,conftest.map
|
||||
1>&5'; { (eval echo configure:2245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
1>&5'; { (eval echo configure:2249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
then
|
||||
libc_cv_ld_version_script_option=yes
|
||||
else
|
||||
@ -2279,7 +2283,7 @@ if test $VERSIONING = no; then
|
||||
fi
|
||||
if test $elf = yes; then
|
||||
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2283: checking for .previous assembler directive" >&5
|
||||
echo "configure:2287: checking for .previous assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2287,7 +2291,7 @@ else
|
||||
.section foo_section
|
||||
.previous
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_previous_directive=yes
|
||||
else
|
||||
libc_cv_asm_previous_directive=no
|
||||
@ -2303,7 +2307,7 @@ EOF
|
||||
|
||||
else
|
||||
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2307: checking for .popsection assembler directive" >&5
|
||||
echo "configure:2311: checking for .popsection assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2311,7 +2315,7 @@ else
|
||||
.pushsection foo_section
|
||||
.popsection
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2315: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_popsection_directive=yes
|
||||
else
|
||||
libc_cv_asm_popsection_directive=no
|
||||
@ -2331,12 +2335,12 @@ fi
|
||||
|
||||
if test $elf != yes; then
|
||||
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
|
||||
echo "configure:2335: checking for .init and .fini sections" >&5
|
||||
echo "configure:2339: checking for .init and .fini sections" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2340 "configure"
|
||||
#line 2344 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() {
|
||||
@ -2345,7 +2349,7 @@ asm (".section .init");
|
||||
asm (".text");
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2349: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_have_initfini=yes
|
||||
else
|
||||
@ -2373,19 +2377,19 @@ if test $elf = yes; then
|
||||
else
|
||||
if test $ac_cv_prog_cc_works = yes; then
|
||||
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
|
||||
echo "configure:2377: checking for _ prefix on C symbol names" >&5
|
||||
echo "configure:2381: checking for _ prefix on C symbol names" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2382 "configure"
|
||||
#line 2386 "configure"
|
||||
#include "confdefs.h"
|
||||
asm ("_glibc_foobar:");
|
||||
int main() {
|
||||
glibc_foobar ();
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:2393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
libc_cv_asm_underscores=yes
|
||||
else
|
||||
@ -2400,17 +2404,17 @@ fi
|
||||
echo "$ac_t""$libc_cv_asm_underscores" 1>&6
|
||||
else
|
||||
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
|
||||
echo "configure:2404: checking for _ prefix on C symbol names" >&5
|
||||
echo "configure:2408: checking for _ prefix on C symbol names" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2409 "configure"
|
||||
#line 2413 "configure"
|
||||
#include "confdefs.h"
|
||||
void underscore_test(void) {
|
||||
return; }
|
||||
EOF
|
||||
if { (eval echo configure:2414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if grep _underscore_test conftest* >/dev/null; then
|
||||
rm -f conftest*
|
||||
libc_cv_asm_underscores=yes
|
||||
@ -2442,7 +2446,7 @@ if test $elf = yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
|
||||
echo "configure:2446: checking for assembler .weak directive" >&5
|
||||
echo "configure:2450: checking for assembler .weak directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2465,7 +2469,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
|
||||
|
||||
if test $libc_cv_asm_weak_directive = no; then
|
||||
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
|
||||
echo "configure:2469: checking for assembler .weakext directive" >&5
|
||||
echo "configure:2473: checking for assembler .weakext directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2503,7 +2507,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
|
||||
echo "configure:2507: checking for ld --no-whole-archive" >&5
|
||||
echo "configure:2511: checking for ld --no-whole-archive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2514,7 +2518,7 @@ __throw () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS
|
||||
-nostdlib -nostartfiles -Wl,--no-whole-archive
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:2518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:2522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_ld_no_whole_archive=yes
|
||||
else
|
||||
libc_cv_ld_no_whole_archive=no
|
||||
@ -2528,7 +2532,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
|
||||
echo "configure:2532: checking for gcc -fno-exceptions" >&5
|
||||
echo "configure:2536: checking for gcc -fno-exceptions" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2539,7 +2543,7 @@ __throw () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS
|
||||
-nostdlib -nostartfiles -fno-exceptions
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:2543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:2547: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_no_exceptions=yes
|
||||
else
|
||||
libc_cv_gcc_no_exceptions=no
|
||||
@ -2554,14 +2558,14 @@ fi
|
||||
|
||||
if test "$base_machine" = alpha ; then
|
||||
echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
|
||||
echo "configure:2558: checking for function ..ng prefix" >&5
|
||||
echo "configure:2562: checking for function ..ng prefix" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<\EOF
|
||||
foo () { }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
then
|
||||
libc_cv_gcc_alpha_ng_prefix=yes
|
||||
else
|
||||
@ -2588,19 +2592,19 @@ if test "$host_cpu" = powerpc ; then
|
||||
# Check for a bug present in at least versions 2.8.x of GCC
|
||||
# and versions 1.0.x of EGCS.
|
||||
echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6
|
||||
echo "configure:2592: checking whether clobbering cr0 causes problems" >&5
|
||||
echo "configure:2596: checking whether clobbering cr0 causes problems" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2597 "configure"
|
||||
#line 2601 "configure"
|
||||
#include "confdefs.h"
|
||||
int tester(int x) { asm ("" : : : "cc"); return x & 123; }
|
||||
int main() {
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_c_asmcr0_bug='no'
|
||||
else
|
||||
@ -2622,12 +2626,12 @@ fi
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
|
||||
echo "configure:2626: checking for DWARF2 unwind info support" >&5
|
||||
echo "configure:2630: checking for DWARF2 unwind info support" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
#line 2631 "configure"
|
||||
#line 2635 "configure"
|
||||
static char __EH_FRAME_BEGIN__;
|
||||
_start ()
|
||||
{
|
||||
@ -2654,7 +2658,7 @@ __bzero () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
|
||||
-nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:2658: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:2662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_dwarf2_unwind_info=static
|
||||
else
|
||||
libc_cv_gcc_dwarf2_unwind_info=no
|
||||
@ -2662,7 +2666,7 @@ fi
|
||||
if test $libc_cv_gcc_dwarf2_unwind_info = no; then
|
||||
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
|
||||
-nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:2666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:2670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_dwarf2_unwind_info=yes
|
||||
else
|
||||
libc_cv_gcc_dwarf2_unwind_info=no
|
||||
@ -2736,7 +2740,7 @@ if test "$uname" = "sysdeps/generic"; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
|
||||
echo "configure:2740: checking OS release for uname" >&5
|
||||
echo "configure:2744: checking OS release for uname" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2758,7 +2762,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
|
||||
uname_release="$libc_cv_uname_release"
|
||||
|
||||
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
|
||||
echo "configure:2762: checking OS version for uname" >&5
|
||||
echo "configure:2766: checking OS version for uname" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2780,7 +2784,7 @@ else
|
||||
fi
|
||||
|
||||
echo $ac_n "checking stdio selection""... $ac_c" 1>&6
|
||||
echo "configure:2784: checking stdio selection" >&5
|
||||
echo "configure:2788: checking stdio selection" >&5
|
||||
|
||||
case $stdio in
|
||||
libio) cat >> confdefs.h <<\EOF
|
||||
@ -2792,7 +2796,7 @@ esac
|
||||
echo "$ac_t""$stdio" 1>&6
|
||||
|
||||
echo $ac_n "checking ldap selection""... $ac_c" 1>&6
|
||||
echo "configure:2796: checking ldap selection" >&5
|
||||
echo "configure:2800: checking ldap selection" >&5
|
||||
|
||||
case $add_ons in
|
||||
*ldap*)
|
||||
@ -2843,7 +2847,7 @@ if test $shared = default; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
|
||||
echo "configure:2847: checking whether -fPIC is default" >&5
|
||||
echo "configure:2851: checking whether -fPIC is default" >&5
|
||||
if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -429,7 +429,11 @@ changequote([,])dnl
|
||||
done
|
||||
|
||||
# Add the default directories.
|
||||
sysnames="$names sysdeps/generic"
|
||||
if test "$elf" = yes; then
|
||||
sysnames="$names sysdeps/generic/elf sysdeps/generic"
|
||||
else
|
||||
sysnames="$names sysdeps/generic"
|
||||
fi
|
||||
AC_SUBST(sysnames)
|
||||
# The other names were emitted during the scan.
|
||||
AC_MSG_RESULT(sysdeps/generic)
|
||||
|
32
debug/Makefile
Normal file
32
debug/Makefile
Normal file
@ -0,0 +1,32 @@
|
||||
# Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Library General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of the
|
||||
# License, or (at your option) any later version.
|
||||
|
||||
# The GNU C Library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Library General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU Library General Public
|
||||
# License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
#
|
||||
# Sub-makefile for debug portion of the library.
|
||||
#
|
||||
subdir := debug
|
||||
|
||||
headers := execinfo.h
|
||||
|
||||
routines := backtrace backtracesyms
|
||||
|
||||
CFLAGS-backtrace.c = -fno-omit-frame-pointer
|
||||
|
||||
tests = backtrace-tst
|
||||
|
||||
include ../Rules
|
44
debug/backtrace-tst.c
Normal file
44
debug/backtrace-tst.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <execinfo.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
static int
|
||||
compare (const void *p1, const void *p2)
|
||||
{
|
||||
void *ba[20];
|
||||
int n = backtrace (ba, sizeof (ba) / sizeof (ba[0]));
|
||||
if (n != 0)
|
||||
{
|
||||
char **names = backtrace_symbols (ba, n);
|
||||
if (names != NULL)
|
||||
{
|
||||
int i;
|
||||
printf ("called from %s\n", names[0]);
|
||||
for (i = 1; i < n; ++i)
|
||||
printf (" %s\n", names[i]);
|
||||
free (names);
|
||||
}
|
||||
}
|
||||
|
||||
return *(uint32_t *) p1 - *(uint32_t *) p2;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
uint32_t arr[20];
|
||||
size_t cnt;
|
||||
|
||||
for (cnt = 0; cnt < sizeof (arr) / sizeof (arr[0]); ++cnt)
|
||||
arr[cnt] = random ();
|
||||
|
||||
qsort (arr, sizeof (arr) / sizeof (arr[0]), sizeof (arr[0]), compare);
|
||||
|
||||
for (cnt = 0; cnt < sizeof (arr) / sizeof (arr[0]); ++cnt)
|
||||
printf ("%" PRIx32 "\n", arr[cnt]);
|
||||
|
||||
return 0;
|
||||
}
|
39
debug/execinfo.h
Normal file
39
debug/execinfo.h
Normal file
@ -0,0 +1,39 @@
|
||||
/* Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _EXECINFO_H
|
||||
#define _EXECINFO_H 1
|
||||
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Store up to SIZE return address of the current program state in
|
||||
ARRAY and return the exact number of values stored. */
|
||||
extern int __backtrace __P ((void **__array, int __size));
|
||||
extern int backtrace __P ((void **__array, int __size));
|
||||
|
||||
|
||||
/* Return names of functions from the backtrace list in ARRAY in a newly
|
||||
malloc()ed memory block. */
|
||||
extern char **__backtrace_symbols __P ((__const void **__array, int __size));
|
||||
extern char **backtrace_symbols __P ((__const void **__array, int __size));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* execinfo.h */
|
4
libc.map
4
libc.map
@ -490,7 +490,7 @@ GLIBC_2.1 {
|
||||
__syscall_rt_sigqueueinfo;
|
||||
__xstat64; __fxstat64; __lxstat64;
|
||||
__pread64; __pwrite64;
|
||||
__backtrace; __backtracesyms;
|
||||
__backtrace; __backtrace_symbols;
|
||||
|
||||
# helper functions
|
||||
__libc_current_sigrtmin; __libc_current_sigrtmax; __libc_allocate_rtsig;
|
||||
@ -536,7 +536,7 @@ GLIBC_2.1 {
|
||||
authdes_create; authdes_getucred; authdes_pk_create;
|
||||
|
||||
# b*
|
||||
backtrace; backtracesyms;
|
||||
backtrace; backtrace_symbols;
|
||||
|
||||
# c*
|
||||
capget; capset; cbc_crypt; creat64;
|
||||
|
34
sysdeps/generic/backtrace.c
Normal file
34
sysdeps/generic/backtrace.c
Normal file
@ -0,0 +1,34 @@
|
||||
/* Return backtrace of current program state.
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <execinfo.h>
|
||||
|
||||
|
||||
int
|
||||
__backtrace (array, size)
|
||||
void **array;
|
||||
int size;
|
||||
{
|
||||
/* We don't generally have the possibility to determine the stack
|
||||
trace. Even gcc's `__builtin_return_address' feature cannot help
|
||||
since it requires a constant argument. */
|
||||
return 0;
|
||||
}
|
||||
weak_alias (__backtrace, backtrace)
|
58
sysdeps/generic/backtracesyms.c
Normal file
58
sysdeps/generic/backtracesyms.c
Normal file
@ -0,0 +1,58 @@
|
||||
/* Return list with names for address in backtrace.
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <execinfo.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
/* Assume the worst for the width of an address. */
|
||||
#define WORD_WIDTH 16
|
||||
|
||||
|
||||
char **
|
||||
__backtrace_symbols (array, size)
|
||||
const void **array;
|
||||
int size;
|
||||
{
|
||||
int cnt;
|
||||
size_t total = 0;
|
||||
const char **result;
|
||||
|
||||
/* We can compute the text size needed for the symbols since we print
|
||||
them all as "[%<addr>]". */
|
||||
total = size * (WORD_WIDTH + 3);
|
||||
|
||||
/* Allocate memory for the result. */
|
||||
result = malloc (size * sizeof (char *) + total);
|
||||
if (result != NULL)
|
||||
{
|
||||
char *last = (char *) (result + size);
|
||||
|
||||
for (cnt = 0; cnt < size; ++cnt)
|
||||
{
|
||||
result[cnt] = last;
|
||||
last += 1 + sprintf (last, "[+%p]", array[cnt]);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
weak_alias (__backtrace_symbols, backtrace_symbols)
|
88
sysdeps/generic/elf/backtracesyms.c
Normal file
88
sysdeps/generic/elf/backtracesyms.c
Normal file
@ -0,0 +1,88 @@
|
||||
/* Return list with names for address in backtrace.
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <execinfo.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <elf/ldsodefs.h>
|
||||
|
||||
#if __ELF_NATIVE_CLASS == 32
|
||||
# define WORD_WIDTH 8
|
||||
#else
|
||||
/* We assyme 64bits. */
|
||||
# define WORD_WIDTH 16
|
||||
#endif
|
||||
|
||||
|
||||
char **
|
||||
__backtrace_symbols (array, size)
|
||||
const void **array;
|
||||
int size;
|
||||
{
|
||||
Dl_info info[size];
|
||||
int status[size];
|
||||
int cnt;
|
||||
size_t total = 0;
|
||||
char **result;
|
||||
|
||||
/* Fill in the information we can get from `dladdr'. */
|
||||
for (cnt = 0; cnt < size; ++cnt)
|
||||
{
|
||||
status[cnt] = _dl_addr (array[cnt], &info[cnt]);
|
||||
if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
|
||||
/* We have some info, compute the length of the string which will be
|
||||
"<fct-name>(<sym-name>)[+offset]. */
|
||||
total += (strlen (info[cnt].dli_fname ?: "")
|
||||
+ (info[cnt].dli_sname
|
||||
? strlen (info[cnt].dli_sname) + 2
|
||||
: 0)
|
||||
+ WORD_WIDTH + 6);
|
||||
else
|
||||
total += 6 + WORD_WIDTH;
|
||||
}
|
||||
|
||||
/* Allocate memory for the result. */
|
||||
result = malloc (size * sizeof (char *) + total);
|
||||
if (result != NULL)
|
||||
{
|
||||
char *last = (char *) (result + size);
|
||||
|
||||
for (cnt = 0; cnt < size; ++cnt)
|
||||
{
|
||||
result[cnt] = last;
|
||||
|
||||
if (status[cnt] && info[cnt].dli_fname
|
||||
&& info[cnt].dli_fname[0] != '\0')
|
||||
last += 1 + sprintf (last, "%s%s%s%s[+%p]",
|
||||
info[cnt].dli_fname ?: "",
|
||||
info[cnt].dli_sname ? "(" : "",
|
||||
info[cnt].dli_sname ?: "",
|
||||
info[cnt].dli_sname ? ") " : " ",
|
||||
info[cnt].dli_fbase);
|
||||
else
|
||||
last += 1 + sprintf (last, "[+%p]", array[cnt]);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
weak_alias (__backtrace_symbols, backtrace_symbols)
|
63
sysdeps/i386/backtrace.c
Normal file
63
sysdeps/i386/backtrace.c
Normal file
@ -0,0 +1,63 @@
|
||||
/* Return backtrace of current program state.
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <execinfo.h>
|
||||
|
||||
|
||||
/* This is the stack alyout we see with every stack frame.
|
||||
|
||||
+-----------------+ +-----------------+
|
||||
%ebp -> | %ebp last frame--------> | %ebp last frame--->...
|
||||
| | | |
|
||||
| return address | | return address |
|
||||
+-----------------+ +-----------------+
|
||||
*/
|
||||
struct layout
|
||||
{
|
||||
struct layout *next;
|
||||
void *return_address;
|
||||
};
|
||||
|
||||
int
|
||||
__backtrace (array, size)
|
||||
void **array;
|
||||
int size;
|
||||
{
|
||||
/* We assume that all the code is generated with frame pointers set. */
|
||||
register void *ebp __asm__ ("ebp");
|
||||
struct layout *current;
|
||||
int cnt = 0;
|
||||
|
||||
/* We skip the call to this function, it makes no sense to record it. */
|
||||
current = (struct layout *) ebp;
|
||||
while (cnt < size)
|
||||
{
|
||||
if (current == NULL)
|
||||
/* This means the toplevel is reached. */
|
||||
break;
|
||||
|
||||
array[cnt++] = current->return_address;
|
||||
|
||||
current = current->next;
|
||||
}
|
||||
|
||||
return cnt;
|
||||
}
|
||||
weak_alias (__backtrace, backtrace)
|
Loading…
Reference in New Issue
Block a user