mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 02:40:08 +00:00
Update.
2001-10-02 Jakub Jelinek <jakub@redhat.com> H.J. Lu <hjl@gnu.org> * configure.in (libc_cv_gcc_static_libgcc): Set to -static-libgcc if gcc supports this flag. (EXPORT_UNWIND_FIND_FDE): Define unless target configure disables it. (gcc3): Allow glibc to be compiled with gcc 3.x. * config.h.in (EXPORT_UNWIND_FIND_FDE): Add. * config.make.in (static-libgcc, unwind-find-fde): Add. * Makerules (build-shlib-helper, build-module-helper): Use it. * scripts/versions.awk: Make sure GLIBC_ versions come first. * elf/soinit.c (__libc_global_ctors): Set tbases and dbases if necessary. (_fini): Call __deregister_frame_info_bases if __register_frame_info_bases was used to register. * elf/Versions (__register_frame_info, __deregister_frame_info): Add for GLIBC_2.0. (__register_frame_info_bases, __register_frame_info_table_bases, __deregister_frame_info_bases, _Unwind_Find_FDE): Add for GLIBC_2.2.5. * elf/Makefile (routines): Add unwind-dw2-fde. (shared-only-routines): Add unwind-dw2-fde. * sysdeps/alpha/gccframe.h: New file. * sysdeps/arm/gccframe.h: New file. * sysdeps/generic/framestate.c: New file. * sysdeps/generic/dwarf2.h: New file. * sysdeps/generic/gccframe.h (struct object): Update from gcc 3.0. * sysdeps/generic/unwind-dw2-fde.c: New file. * sysdeps/unix/sysv/linux/ia64/unwind-dw2-fde.c: New file. * sysdeps/generic/unwind-dw2-fde.h: New file. * sysdeps/generic/unwind-dw2.c: New file. * sysdeps/generic/unwind-pe.h: New file. * sysdeps/generic/unwind.h: New file. * sysdeps/hppa/gccframe.h: New file. * sysdeps/i386/gccframe.h: New file. * sysdeps/m68k/gccframe.h: New file. * sysdeps/mips/gccframe.h: New file. * sysdeps/powerpc/gccframe.h: New file. * sysdeps/s390/gccframe.h: New file. * sysdeps/sh/gccframe.h: New file. * sysdeps/sparc/gccframe.h: New file. * sysdeps/vax/gccframe.h: New file. * sysdeps/unix/sysv/linux/configure.in (libc_cv_gcc_unwind_find_fde): Set on all architectures except ia64. * sysdeps/mach/hurd/configure.in (libc_cv_gcc_unwind_find_fde): Set for i386. * sysdeps/mach/hurd/i386/Versions (__register_frame_info, __deregister_frame_info): Move to elf/Versions. * sysdeps/unix/sysv/linux/m68k/Versions: Likewise. * sysdeps/unix/sysv/linux/arm/Versions: Likewise. * sysdeps/unix/sysv/linux/alpha/Versions: Likewise. * sysdeps/unix/sysv/linux/i386/Versions: Likewise. * sysdeps/unix/sysv/linux/mips/Versions: Likewise. * sysdeps/unix/sysv/linux/powerpc/Versions: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: Likewise. * sysdeps/mach/hurd/i386/Makefile (sysdep-routines): Add framestate. * sysdeps/unix/sysv/linux/arm/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. * sysdeps/unix/sysv/linux/mips/Makefile: Likewise. * sysdeps/unix/sysv/linux/powerpc/Makefile: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. * sysdeps/unix/sysv/linux/sparc/Makefile: Likewise. * sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: New file. * sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed: New file. * sysdeps/generic/strnlen.c: New file.
This commit is contained in:
parent
4acda75c3d
commit
74bd2300b5
72
ChangeLog
72
ChangeLog
@ -1,3 +1,69 @@
|
||||
2001-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* configure.in (libc_cv_gcc_static_libgcc): Set to -static-libgcc
|
||||
if gcc supports this flag.
|
||||
(EXPORT_UNWIND_FIND_FDE): Define unless target configure disables it.
|
||||
(gcc3): Allow glibc to be compiled with gcc 3.x.
|
||||
* config.h.in (EXPORT_UNWIND_FIND_FDE): Add.
|
||||
* config.make.in (static-libgcc, unwind-find-fde): Add.
|
||||
* Makerules (build-shlib-helper, build-module-helper): Use it.
|
||||
* scripts/versions.awk: Make sure GLIBC_ versions come first.
|
||||
* elf/soinit.c (__libc_global_ctors): Set tbases and dbases if
|
||||
necessary.
|
||||
(_fini): Call __deregister_frame_info_bases if
|
||||
__register_frame_info_bases was used to register.
|
||||
* elf/Versions (__register_frame_info, __deregister_frame_info): Add
|
||||
for GLIBC_2.0.
|
||||
(__register_frame_info_bases, __register_frame_info_table_bases,
|
||||
__deregister_frame_info_bases, _Unwind_Find_FDE): Add for GLIBC_2.2.5.
|
||||
* elf/Makefile (routines): Add unwind-dw2-fde.
|
||||
(shared-only-routines): Add unwind-dw2-fde.
|
||||
* sysdeps/alpha/gccframe.h: New file.
|
||||
* sysdeps/arm/gccframe.h: New file.
|
||||
* sysdeps/generic/framestate.c: New file.
|
||||
* sysdeps/generic/dwarf2.h: New file.
|
||||
* sysdeps/generic/gccframe.h (struct object): Update from gcc 3.0.
|
||||
* sysdeps/generic/unwind-dw2-fde.c: New file.
|
||||
* sysdeps/unix/sysv/linux/ia64/unwind-dw2-fde.c: New file.
|
||||
* sysdeps/generic/unwind-dw2-fde.h: New file.
|
||||
* sysdeps/generic/unwind-dw2.c: New file.
|
||||
* sysdeps/generic/unwind-pe.h: New file.
|
||||
* sysdeps/generic/unwind.h: New file.
|
||||
* sysdeps/hppa/gccframe.h: New file.
|
||||
* sysdeps/i386/gccframe.h: New file.
|
||||
* sysdeps/m68k/gccframe.h: New file.
|
||||
* sysdeps/mips/gccframe.h: New file.
|
||||
* sysdeps/powerpc/gccframe.h: New file.
|
||||
* sysdeps/s390/gccframe.h: New file.
|
||||
* sysdeps/sh/gccframe.h: New file.
|
||||
* sysdeps/sparc/gccframe.h: New file.
|
||||
* sysdeps/vax/gccframe.h: New file.
|
||||
* sysdeps/unix/sysv/linux/configure.in (libc_cv_gcc_unwind_find_fde):
|
||||
Set on all architectures except ia64.
|
||||
* sysdeps/mach/hurd/configure.in (libc_cv_gcc_unwind_find_fde): Set
|
||||
for i386.
|
||||
* sysdeps/mach/hurd/i386/Versions (__register_frame_info,
|
||||
__deregister_frame_info): Move to elf/Versions.
|
||||
* sysdeps/unix/sysv/linux/m68k/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/arm/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/mips/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc64/Versions: Likewise.
|
||||
* sysdeps/mach/hurd/i386/Makefile (sysdep-routines): Add framestate.
|
||||
* sysdeps/unix/sysv/linux/arm/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/alpha/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/m68k/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/mips/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/Makefile: Likewise.
|
||||
|
||||
2001-11-15 Jeff Law <law@redhat.com>
|
||||
|
||||
* posix/regex.c (uintptr_t): Do not provide a definition if the
|
||||
@ -798,8 +864,8 @@
|
||||
|
||||
2001-09-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: New.
|
||||
* sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed: New.
|
||||
* sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: New file.
|
||||
* sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed: New file.
|
||||
* sysdeps/unix/sysv/linux/configure.in: Add ia64 and s390
|
||||
ldd-rewrite scripts.
|
||||
|
||||
@ -1632,7 +1698,7 @@
|
||||
2001-08-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* string/strnlen.c: Remove.
|
||||
* sysdeps/generic/strnlen.c: New.
|
||||
* sysdeps/generic/strnlen.c: New file.
|
||||
* sysdeps/i386/i486/bits/string.h (strnlen): Remove.
|
||||
|
||||
2001-08-21 Roland McGrath <roland@frob.com>
|
||||
|
@ -400,7 +400,7 @@ endif
|
||||
|
||||
ifeq ($(elf),yes)
|
||||
define build-shlib-helper
|
||||
$(LINK.o) -shared -Wl,-O1 $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
||||
$(LINK.o) -shared $(static-libgcc) -Wl,-O1 $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
||||
$(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
|
||||
$(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
|
||||
-Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
|
||||
@ -460,7 +460,7 @@ $(LINK.o) -Wl,-G -Wl,-bM:SRE -Wl,-bnoentry -Wl,-bexpall \
|
||||
endef
|
||||
else
|
||||
define build-module-helper
|
||||
$(LINK.o) -shared $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
||||
$(LINK.o) -shared $(static-libgcc) $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
||||
-B$(csu-objpfx) $(load-map-file) \
|
||||
$(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \
|
||||
-L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
|
||||
|
@ -48,6 +48,9 @@
|
||||
/* Define a symbol_name as a global .symbol_name for ld. */
|
||||
#undef HAVE_ASM_GLOBAL_DOT_NAME
|
||||
|
||||
/* Define if _Unwind_Find_FDE should be exported from glibc. */
|
||||
#undef EXPORT_UNWIND_FIND_FDE
|
||||
|
||||
/* Define to use GNU libio instead of GNU stdio.
|
||||
This is defined by configure under --enable-libio. */
|
||||
#undef USE_IN_LIBIO
|
||||
|
@ -46,6 +46,9 @@ have-Bgroup = @libc_cv_Bgroup@
|
||||
need-nopic-initfini = @nopic_initfini@
|
||||
with-cvs = @with_cvs@
|
||||
old-glibc-headers = @old_glibc_headers@
|
||||
unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
|
||||
|
||||
static-libgcc = @libc_cv_gcc_static_libgcc@
|
||||
|
||||
versioning = @VERSIONING@
|
||||
oldest-abi = @oldest_abi@
|
||||
|
207
configure
vendored
207
configure
vendored
@ -2105,27 +2105,6 @@ test -n "$aux_missing" && echo "configure: warning:
|
||||
CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
|
||||
|
||||
|
||||
case $CCVERSION in
|
||||
3.*) gcc3=yes;;
|
||||
esac
|
||||
|
||||
if test x"$gcc3" = xyes; then
|
||||
echo "\
|
||||
*** This version of GNU libc cannot be compiled by GCC 3.x.
|
||||
*** GCC 3.x will generate a library that is binary incompatible to
|
||||
*** older and future releases of GNU libc.
|
||||
*** You should compile this GNU libc release by an older GCC version
|
||||
*** or wait for the next GNU libc release."
|
||||
if test $enable_sanity = yes; then
|
||||
echo "\
|
||||
*** If you really mean to use GCC 3.x, run configure again
|
||||
*** using the extra parameter \`--disable-sanity-checks'."
|
||||
exit 1
|
||||
else
|
||||
echo "\
|
||||
*** This configuration is not supported by the GNU libc developers."
|
||||
fi
|
||||
fi
|
||||
# if using special system headers, find out the compiler's sekrit
|
||||
# header directory and add that to the list. NOTE: Only does the right
|
||||
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
|
||||
@ -2137,7 +2116,7 @@ fi
|
||||
|
||||
# check if ranlib is necessary
|
||||
echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6
|
||||
echo "configure:2141: checking whether ranlib is necessary" >&5
|
||||
echo "configure:2120: 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
|
||||
@ -2171,7 +2150,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:2175: checking LD_LIBRARY_PATH variable" >&5
|
||||
echo "configure:2154: checking LD_LIBRARY_PATH variable" >&5
|
||||
case ${LD_LIBRARY_PATH} in
|
||||
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
|
||||
ld_library_path_setting="contains current directory"
|
||||
@ -2188,10 +2167,25 @@ if test "$ld_library_path_setting" != "ok"; then
|
||||
*** and run configure again." 1>&2; exit 1; }
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether GCC supports -static-libgcc""... $ac_c" 1>&6
|
||||
echo "configure:2172: checking whether GCC supports -static-libgcc" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_static_libgcc'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
|
||||
libc_cv_gcc_static_libgcc=
|
||||
else
|
||||
libc_cv_gcc_static_libgcc=-static-libgcc
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$ac_t""$libc_cv_gcc_static_libgcc" 1>&6
|
||||
|
||||
|
||||
# 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:2195: checking for $ac_word" >&5
|
||||
echo "configure:2189: 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
|
||||
@ -2237,7 +2231,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:2241: checking for $ac_word" >&5
|
||||
echo "configure:2235: 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
|
||||
@ -2287,7 +2281,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:2291: checking for $ac_word" >&5
|
||||
echo "configure:2285: 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
|
||||
@ -2319,7 +2313,7 @@ done
|
||||
# Extract the first word of "perl", so it can be a program name with args.
|
||||
set dummy perl; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2323: checking for $ac_word" >&5
|
||||
echo "configure:2317: 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
|
||||
@ -2359,7 +2353,7 @@ fi
|
||||
# Extract the first word of "install-info", so it can be a program name with args.
|
||||
set dummy install-info; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2363: checking for $ac_word" >&5
|
||||
echo "configure:2357: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_INSTALL_INFO'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2394,7 +2388,7 @@ fi
|
||||
|
||||
if test "$INSTALL_INFO" != "no"; then
|
||||
echo $ac_n "checking for old Debian install-info""... $ac_c" 1>&6
|
||||
echo "configure:2398: checking for old Debian install-info" >&5
|
||||
echo "configure:2392: checking for old Debian install-info" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_old_debian_install_info'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2429,7 +2423,7 @@ fi
|
||||
# Extract the first word of "bison", so it can be a program name with args.
|
||||
set dummy bison; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2433: checking for $ac_word" >&5
|
||||
echo "configure:2427: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_BISON'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2464,7 +2458,7 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
|
||||
echo "configure:2468: checking for signed size_t type" >&5
|
||||
echo "configure:2462: 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
|
||||
@ -2488,12 +2482,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
|
||||
echo "configure:2492: checking for libc-friendly stddef.h" >&5
|
||||
echo "configure:2486: 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 2497 "configure"
|
||||
#line 2491 "configure"
|
||||
#include "confdefs.h"
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
@ -2508,7 +2502,7 @@ size_t size; wchar_t wchar;
|
||||
if (&size == NULL || &wchar == NULL) abort ();
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_friendly_stddef=yes
|
||||
else
|
||||
@ -2527,7 +2521,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:2531: checking whether we need to use -P to assemble .S files" >&5
|
||||
echo "configure:2525: 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
|
||||
@ -2550,7 +2544,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether .text pseudo-op must be used""... $ac_c" 1>&6
|
||||
echo "configure:2554: checking whether .text pseudo-op must be used" >&5
|
||||
echo "configure:2548: checking whether .text pseudo-op must be used" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_dot_text'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2571,7 +2565,7 @@ else
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
|
||||
echo "configure:2575: checking for assembler global-symbol directive" >&5
|
||||
echo "configure:2569: 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
|
||||
@ -2601,7 +2595,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2605: checking for .set assembler directive" >&5
|
||||
echo "configure:2599: 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
|
||||
@ -2644,7 +2638,7 @@ EOF
|
||||
esac
|
||||
|
||||
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2648: checking for .symver assembler directive" >&5
|
||||
echo "configure:2642: 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
|
||||
@ -2663,7 +2657,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:2667: checking for ld --version-script" >&5
|
||||
echo "configure:2661: 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
|
||||
@ -2686,7 +2680,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:2690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
1>&5'; { (eval echo configure:2684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
then
|
||||
libc_cv_ld_version_script_option=yes
|
||||
else
|
||||
@ -2725,7 +2719,7 @@ if test $elf = yes && test $shared != no && test $VERSIONING = no; then
|
||||
fi
|
||||
if test $elf = yes; then
|
||||
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2729: checking for .previous assembler directive" >&5
|
||||
echo "configure:2723: 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
|
||||
@ -2733,7 +2727,7 @@ else
|
||||
.section foo_section
|
||||
.previous
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_previous_directive=yes
|
||||
else
|
||||
libc_cv_asm_previous_directive=no
|
||||
@ -2749,7 +2743,7 @@ EOF
|
||||
|
||||
else
|
||||
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2753: checking for .popsection assembler directive" >&5
|
||||
echo "configure:2747: 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
|
||||
@ -2757,7 +2751,7 @@ else
|
||||
.pushsection foo_section
|
||||
.popsection
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_popsection_directive=yes
|
||||
else
|
||||
libc_cv_asm_popsection_directive=no
|
||||
@ -2774,7 +2768,7 @@ EOF
|
||||
fi
|
||||
fi
|
||||
echo $ac_n "checking for .protected and .hidden assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2778: checking for .protected and .hidden assembler directive" >&5
|
||||
echo "configure:2772: checking for .protected and .hidden assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_protected_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2784,7 +2778,7 @@ foo:
|
||||
.hidden bar
|
||||
bar:
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_protected_directive=yes
|
||||
else
|
||||
libc_cv_asm_protected_directive=no
|
||||
@ -2796,14 +2790,14 @@ echo "$ac_t""$libc_cv_asm_protected_directive" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z nodelete option""... $ac_c" 1>&6
|
||||
echo "configure:2800: checking for -z nodelete option" >&5
|
||||
echo "configure:2794: checking for -z nodelete option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_nodelete'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_z_nodelete=yes
|
||||
else
|
||||
@ -2816,14 +2810,14 @@ echo "$ac_t""$libc_cv_z_nodelete" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z nodlopen option""... $ac_c" 1>&6
|
||||
echo "configure:2820: checking for -z nodlopen option" >&5
|
||||
echo "configure:2814: checking for -z nodlopen option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_nodlopen'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_z_nodlopen=yes
|
||||
else
|
||||
@ -2836,14 +2830,14 @@ echo "$ac_t""$libc_cv_z_nodlopen" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z initfirst option""... $ac_c" 1>&6
|
||||
echo "configure:2840: checking for -z initfirst option" >&5
|
||||
echo "configure:2834: checking for -z initfirst option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_initfirst'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2847: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_z_initfirst=yes
|
||||
else
|
||||
@ -2856,14 +2850,14 @@ echo "$ac_t""$libc_cv_z_initfirst" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -Bgroup option""... $ac_c" 1>&6
|
||||
echo "configure:2860: checking for -Bgroup option" >&5
|
||||
echo "configure:2854: checking for -Bgroup option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_Bgroup'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:2867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:2861: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_Bgroup=yes
|
||||
else
|
||||
@ -2876,14 +2870,14 @@ echo "$ac_t""$libc_cv_Bgroup" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z combreloc""... $ac_c" 1>&6
|
||||
echo "configure:2880: checking for -z combreloc" >&5
|
||||
echo "configure:2874: checking for -z combreloc" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_combreloc'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int foo (void) { return 0; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-z,combreloc 1>&5'; { (eval echo configure:2887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-z,combreloc 1>&5'; { (eval echo configure:2881: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
|
||||
libc_cv_z_combreloc=yes
|
||||
@ -2908,12 +2902,12 @@ fi
|
||||
|
||||
if test $elf != yes; then
|
||||
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
|
||||
echo "configure:2912: checking for .init and .fini sections" >&5
|
||||
echo "configure:2906: 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 2917 "configure"
|
||||
#line 2911 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() {
|
||||
@ -2922,7 +2916,7 @@ asm (".section .init");
|
||||
asm ("${libc_cv_dot_text}");
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2926: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_have_initfini=yes
|
||||
else
|
||||
@ -2945,7 +2939,7 @@ fi
|
||||
|
||||
if test $elf = yes -a $gnu_ld = yes; then
|
||||
echo $ac_n "checking whether cc puts quotes around section names""... $ac_c" 1>&6
|
||||
echo "configure:2949: checking whether cc puts quotes around section names" >&5
|
||||
echo "configure:2943: checking whether cc puts quotes around section names" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_have_section_quotes'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2982,19 +2976,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:2986: checking for _ prefix on C symbol names" >&5
|
||||
echo "configure:2980: 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 2991 "configure"
|
||||
#line 2985 "configure"
|
||||
#include "confdefs.h"
|
||||
asm ("_glibc_foobar:");
|
||||
int main() {
|
||||
glibc_foobar ();
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:2992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
libc_cv_asm_underscores=yes
|
||||
else
|
||||
@ -3009,17 +3003,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:3013: checking for _ prefix on C symbol names" >&5
|
||||
echo "configure:3007: 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 3018 "configure"
|
||||
#line 3012 "configure"
|
||||
#include "confdefs.h"
|
||||
void underscore_test(void) {
|
||||
return; }
|
||||
EOF
|
||||
if { (eval echo configure:3023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:3017: \"$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
|
||||
@ -3051,7 +3045,7 @@ if test $elf = yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
|
||||
echo "configure:3055: checking for assembler .weak directive" >&5
|
||||
echo "configure:3049: 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
|
||||
@ -3074,7 +3068,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:3078: checking for assembler .weakext directive" >&5
|
||||
echo "configure:3072: 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
|
||||
@ -3121,14 +3115,14 @@ EOF
|
||||
;;
|
||||
hppa*linux*)
|
||||
echo $ac_n "checking for assembler line separator""... $ac_c" 1>&6
|
||||
echo "configure:3125: checking for assembler line separator" >&5
|
||||
echo "configure:3119: checking for assembler line separator" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_line_sep'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.s <<EOF
|
||||
nop ; is_old_puffin
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_line_sep='!'
|
||||
else
|
||||
if test -z "$enable_hacker_mode"; then
|
||||
@ -3150,7 +3144,7 @@ EOF
|
||||
esac
|
||||
|
||||
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
|
||||
echo "configure:3154: checking for ld --no-whole-archive" >&5
|
||||
echo "configure:3148: 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
|
||||
@ -3161,7 +3155,7 @@ __throw () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS
|
||||
-nostdlib -nostartfiles -Wl,--no-whole-archive
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3159: \"$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
|
||||
@ -3175,7 +3169,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6
|
||||
echo "configure:3179: checking for gcc -fexceptions" >&5
|
||||
echo "configure:3173: checking for gcc -fexceptions" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3186,7 +3180,7 @@ __throw () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS
|
||||
-nostdlib -nostartfiles -fexceptions
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3190: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_exceptions=yes
|
||||
else
|
||||
libc_cv_gcc_exceptions=no
|
||||
@ -3201,14 +3195,14 @@ fi
|
||||
|
||||
if test "$base_machine" = alpha ; then
|
||||
echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
|
||||
echo "configure:3205: checking for function ..ng prefix" >&5
|
||||
echo "configure:3199: 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:3212: \"$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:3206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
then
|
||||
libc_cv_gcc_alpha_ng_prefix=yes
|
||||
else
|
||||
@ -3235,19 +3229,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:3239: checking whether clobbering cr0 causes problems" >&5
|
||||
echo "configure:3233: 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 3244 "configure"
|
||||
#line 3238 "configure"
|
||||
#include "confdefs.h"
|
||||
int tester(int x) { asm ("" : : : "cc"); return x & 123; }
|
||||
int main() {
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:3245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_c_asmcr0_bug='no'
|
||||
else
|
||||
@ -3269,12 +3263,12 @@ fi
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
|
||||
echo "configure:3273: checking for DWARF2 unwind info support" >&5
|
||||
echo "configure:3267: 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 3278 "configure"
|
||||
#line 3272 "configure"
|
||||
static char __EH_FRAME_BEGIN__;
|
||||
_start ()
|
||||
{
|
||||
@ -3301,7 +3295,7 @@ __bzero () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
|
||||
-nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3299: \"$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
|
||||
@ -3309,7 +3303,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:3313: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3307: \"$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
|
||||
@ -3339,12 +3333,12 @@ EOF
|
||||
esac
|
||||
|
||||
echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6
|
||||
echo "configure:3343: checking for __builtin_expect" >&5
|
||||
echo "configure:3337: checking for __builtin_expect" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
#line 3348 "configure"
|
||||
#line 3342 "configure"
|
||||
int foo (int a)
|
||||
{
|
||||
a = __builtin_expect (a, 10);
|
||||
@ -3352,7 +3346,7 @@ int foo (int a)
|
||||
}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_builtin_expect=yes
|
||||
else
|
||||
libc_cv_gcc_builtin_expect=no
|
||||
@ -3369,12 +3363,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for local label subtraction""... $ac_c" 1>&6
|
||||
echo "configure:3373: checking for local label subtraction" >&5
|
||||
echo "configure:3367: checking for local label subtraction" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_subtract_local_labels'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
#line 3378 "configure"
|
||||
#line 3372 "configure"
|
||||
int foo (int a)
|
||||
{
|
||||
static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
|
||||
@ -3387,7 +3381,7 @@ int foo (int a)
|
||||
}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3391: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3385: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_subtract_local_labels=yes
|
||||
else
|
||||
libc_cv_gcc_subtract_local_labels=no
|
||||
@ -3404,7 +3398,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for libgd""... $ac_c" 1>&6
|
||||
echo "configure:3408: checking for libgd" >&5
|
||||
echo "configure:3402: checking for libgd" >&5
|
||||
if test "$with_gd" != "no"; then
|
||||
old_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $libgd_include"
|
||||
@ -3413,14 +3407,14 @@ if test "$with_gd" != "no"; then
|
||||
old_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lgd -lpng -lz -lm"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3417 "configure"
|
||||
#line 3411 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <gd.h>
|
||||
int main() {
|
||||
gdImagePng (0, 0)
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:3418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
LIBGD=yes
|
||||
else
|
||||
@ -3440,7 +3434,7 @@ echo "$ac_t""$LIBGD" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking size of long double""... $ac_c" 1>&6
|
||||
echo "configure:3444: checking size of long double" >&5
|
||||
echo "configure:3438: checking size of long double" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3448,7 +3442,7 @@ else
|
||||
ac_cv_sizeof_long_double=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3452 "configure"
|
||||
#line 3446 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
@ -3459,7 +3453,7 @@ int main()
|
||||
return(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:3463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:3457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_long_double=`cat conftestval`
|
||||
else
|
||||
@ -3492,6 +3486,7 @@ libc_link_sources=
|
||||
use_ldconfig=no
|
||||
ldd_rewrite_script=no
|
||||
libc_cv_sysconfdir=$sysconfdir
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
|
||||
# Iterate over all the sysdep directories we will use, running their
|
||||
# configure fragments, and looking for a uname implementation.
|
||||
@ -3516,6 +3511,14 @@ for dir in $sysnames; do
|
||||
fi
|
||||
done
|
||||
|
||||
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define EXPORT_UNWIND_FIND_FDE 1
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
# If we will use the generic uname implementation, we must figure out what
|
||||
@ -3528,7 +3531,7 @@ if test "$uname" = "sysdeps/generic"; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
|
||||
echo "configure:3532: checking OS release for uname" >&5
|
||||
echo "configure:3535: 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
|
||||
@ -3550,7 +3553,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:3554: checking OS version for uname" >&5
|
||||
echo "configure:3557: 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
|
||||
@ -3572,7 +3575,7 @@ else
|
||||
fi
|
||||
|
||||
echo $ac_n "checking stdio selection""... $ac_c" 1>&6
|
||||
echo "configure:3576: checking stdio selection" >&5
|
||||
echo "configure:3579: checking stdio selection" >&5
|
||||
|
||||
case $stdio in
|
||||
libio) cat >> confdefs.h <<\EOF
|
||||
@ -3586,7 +3589,7 @@ echo "$ac_t""$stdio" 1>&6
|
||||
# Test for old glibc 2.0.x headers so that they can be removed properly
|
||||
# Search only in includedir.
|
||||
echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6
|
||||
echo "configure:3590: checking for old glibc 2.0.x headers" >&5
|
||||
echo "configure:3593: checking for old glibc 2.0.x headers" >&5
|
||||
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
|
||||
then
|
||||
old_glibc_headers=yes
|
||||
@ -3647,7 +3650,7 @@ if test $shared = default; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
|
||||
echo "configure:3651: checking whether -fPIC is default" >&5
|
||||
echo "configure:3654: checking whether -fPIC is default" >&5
|
||||
if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3860,6 +3863,7 @@ s%@RANLIB@%$RANLIB%g
|
||||
s%@MIG@%$MIG%g
|
||||
s%@CCVERSION@%$CCVERSION%g
|
||||
s%@SYSINCLUDES@%$SYSINCLUDES%g
|
||||
s%@libc_cv_gcc_static_libgcc@%$libc_cv_gcc_static_libgcc%g
|
||||
s%@BASH@%$BASH%g
|
||||
s%@libc_cv_have_bash2@%$libc_cv_have_bash2%g
|
||||
s%@KSH@%$KSH%g
|
||||
@ -3881,6 +3885,7 @@ s%@no_whole_archive@%$no_whole_archive%g
|
||||
s%@exceptions@%$exceptions%g
|
||||
s%@LIBGD@%$LIBGD%g
|
||||
s%@sizeof_long_double@%$sizeof_long_double%g
|
||||
s%@libc_cv_gcc_unwind_find_fde@%$libc_cv_gcc_unwind_find_fde%g
|
||||
s%@uname_sysname@%$uname_sysname%g
|
||||
s%@uname_release@%$uname_release%g
|
||||
s%@uname_version@%$uname_version%g
|
||||
|
35
configure.in
35
configure.in
@ -636,27 +636,6 @@ test -n "$aux_missing" && AC_MSG_WARN([
|
||||
CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
|
||||
AC_SUBST(CCVERSION)
|
||||
|
||||
case $CCVERSION in
|
||||
3.*) gcc3=yes;;
|
||||
esac
|
||||
|
||||
if test x"$gcc3" = xyes; then
|
||||
echo "\
|
||||
*** This version of GNU libc cannot be compiled by GCC 3.x.
|
||||
*** GCC 3.x will generate a library that is binary incompatible to
|
||||
*** older and future releases of GNU libc.
|
||||
*** You should compile this GNU libc release by an older GCC version
|
||||
*** or wait for the next GNU libc release."
|
||||
if test $enable_sanity = yes; then
|
||||
echo "\
|
||||
*** If you really mean to use GCC 3.x, run configure again
|
||||
*** using the extra parameter \`--disable-sanity-checks'."
|
||||
exit 1
|
||||
else
|
||||
echo "\
|
||||
*** This configuration is not supported by the GNU libc developers."
|
||||
fi
|
||||
fi
|
||||
# if using special system headers, find out the compiler's sekrit
|
||||
# header directory and add that to the list. NOTE: Only does the right
|
||||
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
|
||||
@ -713,6 +692,14 @@ AC_MSG_ERROR([
|
||||
*** and run configure again.])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
|
||||
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
|
||||
libc_cv_gcc_static_libgcc=
|
||||
else
|
||||
libc_cv_gcc_static_libgcc=-static-libgcc
|
||||
fi])
|
||||
AC_SUBST(libc_cv_gcc_static_libgcc)
|
||||
|
||||
AC_PATH_PROG(BASH, bash, no)
|
||||
if test "$BASH" != no &&
|
||||
$BASH -c 'test "$BASH_VERSINFO" \
|
||||
@ -1459,6 +1446,7 @@ libc_link_sources=
|
||||
use_ldconfig=no
|
||||
ldd_rewrite_script=no
|
||||
libc_cv_sysconfdir=$sysconfdir
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
|
||||
# Iterate over all the sysdep directories we will use, running their
|
||||
# configure fragments, and looking for a uname implementation.
|
||||
@ -1484,6 +1472,11 @@ for dir in $sysnames; do
|
||||
]dnl
|
||||
done
|
||||
|
||||
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
|
||||
AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
|
||||
fi
|
||||
AC_SUBST(libc_cv_gcc_unwind_find_fde)
|
||||
|
||||
AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
|
||||
|
||||
# If we will use the generic uname implementation, we must figure out what
|
||||
|
@ -66,6 +66,11 @@ distribute := $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
ifeq ($(unwind-find-fde),yes)
|
||||
routines += unwind-dw2-fde
|
||||
shared-only-routines = unwind-dw2-fde
|
||||
endif
|
||||
|
||||
before-compile = $(objpfx)trusted-dirs.h
|
||||
generated := trusted-dirs.h trusted-dirs.st for-renamed/renamed.so
|
||||
generated-dirs := for-renamed
|
||||
|
@ -2,6 +2,9 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# functions used in other libraries
|
||||
_dl_open; _dl_close; _dl_addr;
|
||||
%ifdef EXPORT_UNWIND_FIND_FDE
|
||||
__register_frame_info; __deregister_frame_info;
|
||||
%endif
|
||||
}
|
||||
GLIBC_2.1 {
|
||||
# functions used in other libraries
|
||||
@ -17,6 +20,12 @@ libc {
|
||||
GLIBC_2.2.4 {
|
||||
dl_iterate_phdr;
|
||||
}
|
||||
%ifdef EXPORT_UNWIND_FIND_FDE
|
||||
GLIBC_2.2.5 {
|
||||
__register_frame_info_bases; __deregister_frame_info_bases;
|
||||
__register_frame_info_table_bases; _Unwind_Find_FDE;
|
||||
}
|
||||
%endif
|
||||
}
|
||||
|
||||
ld {
|
||||
|
24
elf/soinit.c
24
elf/soinit.c
@ -4,6 +4,7 @@
|
||||
calling those lists of functions. */
|
||||
|
||||
#include <libc-internal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
|
||||
# include <gccframe.h>
|
||||
@ -29,7 +30,10 @@ static char __EH_FRAME_BEGIN__[]
|
||||
= { };
|
||||
# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
|
||||
extern void __register_frame_info (const void *, struct object *);
|
||||
extern void __register_frame_info_bases (const void *, struct object *,
|
||||
void *, void *);
|
||||
extern void __deregister_frame_info (const void *);
|
||||
extern void __deregister_frame_info_bases (const void *);
|
||||
# else
|
||||
extern void __register_frame (const void *);
|
||||
extern void __deregister_frame (const void *);
|
||||
@ -47,7 +51,23 @@ __libc_global_ctors (void)
|
||||
# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
|
||||
{
|
||||
static struct object ob;
|
||||
# if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA
|
||||
void *tbase, *dbase;
|
||||
|
||||
# ifdef CRT_GET_RFIB_TEXT
|
||||
CRT_GET_RFIB_TEXT (tbase);
|
||||
# else
|
||||
tbase = NULL;
|
||||
# endif
|
||||
# ifdef CRT_GET_RFIB_DATA
|
||||
CRT_GET_RFIB_DATA (dbase);
|
||||
# else
|
||||
dbase = NULL;
|
||||
# endif
|
||||
__register_frame_info_bases (__EH_FRAME_BEGIN__, &ob, tbase, dbase);
|
||||
# else
|
||||
__register_frame_info (__EH_FRAME_BEGIN__, &ob);
|
||||
# endif
|
||||
}
|
||||
# else
|
||||
__register_frame (__EH_FRAME_BEGIN__);
|
||||
@ -66,7 +86,11 @@ _fini (void)
|
||||
run_hooks (__DTOR_LIST__);
|
||||
#ifdef HAVE_DWARF2_UNWIND_INFO
|
||||
# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
|
||||
# if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA
|
||||
__deregister_frame_info_bases (__EH_FRAME_BEGIN__);
|
||||
# else
|
||||
__deregister_frame_info (__EH_FRAME_BEGIN__);
|
||||
# endif
|
||||
# else
|
||||
__deregister_frame (__EH_FRAME_BEGIN__);
|
||||
# endif
|
||||
|
311
localedata/locales/se_NO
Normal file
311
localedata/locales/se_NO
Normal file
@ -0,0 +1,311 @@
|
||||
# $Id$
|
||||
comment_char %
|
||||
escape_char /
|
||||
%
|
||||
% Northern Saami Language Locale for Norway
|
||||
% Source: http://www.hum.uit.no/a/trond/loc.html
|
||||
% Contact: Børre Gaup
|
||||
% Email: boerre.gaup@pc.nu
|
||||
% Language: se
|
||||
% Territory: NO
|
||||
% Revision: 0.1
|
||||
% Date: 2001-11-03
|
||||
% Application: general
|
||||
% Users: general
|
||||
% Charset: UTF-8
|
||||
% Distribution and use is free, also
|
||||
% for commercial purposes.
|
||||
|
||||
LC_IDENTIFICATION
|
||||
title "Northern Saami language locale for Norway"
|
||||
source "http://www.hum.uit.no/a/trond/loc.html"
|
||||
address ""
|
||||
contact "Børre Gaup"
|
||||
email "boerre.gaup@pc.nu"
|
||||
tel ""
|
||||
fax ""
|
||||
language "Northern Saami"
|
||||
territory "Norway"
|
||||
revision "0.1"
|
||||
date "2001-11-09"
|
||||
|
||||
category se_NO:2000;LC_IDENTIFICATION
|
||||
category se_NO:2000;LC_CTYPE
|
||||
category se_NO:2000;LC_COLLATE
|
||||
category se_NO:2000;LC_TIME
|
||||
category se_NO:2000;LC_NUMERIC
|
||||
category se_NO:2000;LC_PAPER
|
||||
category se_NO:2000;LC_TELEPHONE
|
||||
category se_NO:2000;LC_MEASUREMENT
|
||||
category se_NO:2000;LC_ADDRESS
|
||||
category se_NO:2000;LC_MONETARY
|
||||
category se_NO:2000;LC_MESSAGES
|
||||
|
||||
END LC_IDENTIFICATION
|
||||
|
||||
|
||||
LC_COLLATE
|
||||
copy "iso14651_t1"
|
||||
|
||||
collating-symbol <aring>
|
||||
collating-symbol <atilde>
|
||||
collating-symbol <acircumflex>
|
||||
collating-symbol <agrave>
|
||||
collating-symbol <aacute>
|
||||
collating-symbol <noae>
|
||||
collating-symbol <svae>
|
||||
collating-symbol <ccedilla>
|
||||
collating-symbol <ccaron>
|
||||
collating-symbol <ezh>
|
||||
collating-symbol <ezhcaron>
|
||||
collating-symbol <dstroke>
|
||||
collating-symbol <eth>
|
||||
collating-symbol <fhook>
|
||||
collating-symbol <gcaron>
|
||||
collating-symbol <gstroke>
|
||||
collating-symbol <kcaron>
|
||||
collating-symbol <otilde>
|
||||
collating-symbol <oe>
|
||||
collating-symbol <ssharp>
|
||||
collating-symbol <scaron>
|
||||
collating-symbol <oumlaut>
|
||||
collating-symbol <oslash>
|
||||
|
||||
%
|
||||
reorder-after <CAP>
|
||||
<MIN>
|
||||
|
||||
reorder-after <a>
|
||||
<agrave>
|
||||
<atilde>
|
||||
<aacute>
|
||||
<acircumflex>
|
||||
|
||||
|
||||
reorder-after <c>
|
||||
<ccaron>
|
||||
<ccedilla>
|
||||
<ezh>
|
||||
<ezhcaron>
|
||||
|
||||
reorder-after <d>
|
||||
<dstroke>
|
||||
<eth>
|
||||
|
||||
reorder-after <f>
|
||||
<fhook>
|
||||
|
||||
reorder-after <g>
|
||||
<gcaron>
|
||||
<gstroke>
|
||||
|
||||
reorder-after <k>
|
||||
<kcaron>
|
||||
|
||||
reorder-after <s>
|
||||
<ssharp>
|
||||
<scaron>
|
||||
|
||||
reorder-after <th>
|
||||
<noae>
|
||||
<oslash>
|
||||
<aring>
|
||||
<svae>
|
||||
<oumlaut>
|
||||
|
||||
reorder-after <U0061>
|
||||
<U00E0> <agrave>;<GRA>;<MIN>;IGNORE % 201 à
|
||||
<U00E1> <aacute>;<ACA>;<MIN>;IGNORE % 200 á
|
||||
<U00E2> <acircumflex>;<CIR>;<MIN>;IGNORE % 202 â
|
||||
<U00E3> <atilde>;<TIL>;<MIN>;IGNORE % 203 ã
|
||||
|
||||
reorder-after <U0041>
|
||||
<U00C0> <agrave>;<GRA>;<CAP>;IGNORE % 321 À
|
||||
<U00C1> <aacute>;<ACA>;<CAP>;IGNORE % 320 Á
|
||||
<U00C2> <acircumflex>;<CIR>;<CAP>;IGNORE % 322 Â
|
||||
<U00C3> <atilde>;<TIL>;<CAP>;IGNORE % 323 Ã
|
||||
|
||||
reorder-after <U0063>
|
||||
<U00E7> <ccedilla>;<CDI>;<MIN>;IGNORE % 212 ç
|
||||
<U010D> <ccaron>;<CAR>;<MIN>;IGNORE % 215 <c<>
|
||||
|
||||
reorder-after <U0043>
|
||||
<U00C7> <ccedilla>;<CDI>;<CAP>;IGNORE % 332 Ç
|
||||
<U010C> <ccaron>;<CAR>;<CAP>;IGNORE % 335 <C<>
|
||||
|
||||
reorder-after <U010B>
|
||||
<U0292> <ezh>;<BAS>;<MIN>;IGNORE % ezh
|
||||
<U01EF> <ezhcaron>;<CAR>;<MIN>;IGNORE % ezh caron
|
||||
|
||||
reorder-after <U010A>
|
||||
<U01B7> <ezh>;<BAS>;<MIN>;IGNORE % EZH
|
||||
<U01EE> <ezhcaron>;<CAR>;<CAP>;IGNORE % EZH caron
|
||||
|
||||
reorder-after <U0064>
|
||||
<U00F0> <eth>;<PCL>;<MIN>;IGNORE % 218 ð
|
||||
<U0111> <dstroke>;<OBL>;<MIN>;IGNORE % 220 <d//>
|
||||
|
||||
reorder-after <U0044>
|
||||
<U00D0> <eth>;<PCL>;<CAP>;IGNORE % 338 Ð
|
||||
<U0110> <dstroke>;<OBL>;<CAP>;IGNORE % 340 <D//>
|
||||
|
||||
reorder-after <U0066>
|
||||
<U0192> <fhook>;<BAS>;<MIN>;IGNORE % f WITH HOOK
|
||||
|
||||
reorder-after <U0123>
|
||||
<U01E7> <gcaron>;<CAR>;<MIN>;IGNORE % gcaron
|
||||
<U01E5> <gstroke>;<OBL>;<MIN>;IGNORE % gstroke
|
||||
|
||||
reorder-after <U0122>
|
||||
<U01E6> <gcaron>;<CAR>;<MIN>;IGNORE % Gcaron
|
||||
<U01E4> <gstroke>;<OBL>;<MIN>;IGNORE % Gstroke
|
||||
|
||||
reorder-after <U0137>
|
||||
<U01E9> <kcaron>;<CAR>;<MIN>;IGNORE % kcaron
|
||||
reorder-after <U0136>
|
||||
<U01E8> <kcaron>;<CAR>;<CAP>;IGNORE % Kcaron
|
||||
|
||||
reorder-after <U0053>
|
||||
<U00DF> <ssharp>;"<LIG><LIG>";"<MIN><MIN>";IGNORE % ß
|
||||
<U0161> <scaron>;<CAR>;<MIN>;IGNORE % 288 <s<>
|
||||
<U0160> <scaron>;<CAR>;<CAP>;IGNORE % 405 <S<>
|
||||
|
||||
|
||||
reorder-after <U00E3>
|
||||
<U00E4> <svae>;<REU>;<MIN>;IGNORE % ä
|
||||
<U00E5> <aring>;<RNE>;<MIN>;IGNORE % å
|
||||
<U00E6> <noae>;<LIG>;<MIN>;IGNORE % æ
|
||||
reorder-after <U00F5>
|
||||
<U00F6> <oumlaut>;<REU>;<MIN>;IGNORE % ö
|
||||
<U00F8> <oslash>;<OBL>;<MIN>;IGNORE % ø
|
||||
|
||||
reorder-after <U00C3>
|
||||
<U00C4> <svae>;<REU>;<CAP>;IGNORE % Ä
|
||||
<U00C5> <aring>;<RNE>;<CAP>;IGNORE % Å
|
||||
<U00C6> <noae>;<LIG>;<CAP>;IGNORE % Æ
|
||||
reorder-after <U00D5>
|
||||
<U00D6> <oumlaut>;<REU>;<CAP>;IGNORE % Ö
|
||||
<U00D8> <oslash>;<OBL>;<CAP>;IGNORE % Ø
|
||||
|
||||
% ü/Ü is treated like y/Y but is sorted after the latter
|
||||
reorder-after <U00FB>
|
||||
<U00FC> <y>;<REU>;<MIN>;IGNORE % ü
|
||||
reorder-after <U00DB>
|
||||
<U00DC> <y>;<REU>;<CAP>;IGNORE % Ü
|
||||
reorder-end
|
||||
|
||||
END LC_COLLATE
|
||||
|
||||
LC_CTYPE
|
||||
copy "i18n"
|
||||
END LC_CTYPE
|
||||
|
||||
LC_MONETARY
|
||||
int_curr_symbol "<U004E><U004F><U004B><U0020>"
|
||||
currency_symbol "<U0020><U0072><U0075>"
|
||||
mon_decimal_point "<U002C>"
|
||||
mon_thousands_sep "<U002E>"
|
||||
mon_grouping 3;3
|
||||
positive_sign ""
|
||||
negative_sign "<U002D>"
|
||||
int_frac_digits 2
|
||||
frac_digits 2
|
||||
p_cs_precedes 1
|
||||
p_sep_by_space 0
|
||||
n_cs_precedes 1
|
||||
n_sep_by_space 0
|
||||
p_sign_posn 4
|
||||
n_sign_posn 4
|
||||
END LC_MONETARY
|
||||
|
||||
LC_NUMERIC
|
||||
decimal_point "<U002C>"
|
||||
thousands_sep "<U002E>"
|
||||
grouping 3;3
|
||||
END LC_NUMERIC
|
||||
|
||||
|
||||
LC_TIME
|
||||
abday "<U0073><U006F><U0074><U006E>";"<U0076><U0075><U006F><U0073>";/
|
||||
"<U006D><U0061><U014B>";"<U0067><U0061><U0073><U006B>";/
|
||||
"<U0064><U0075><U006F><U0072>";"<U0062><U0065><U0061><U0072>";/
|
||||
"<U006C><U00E1><U0076>"
|
||||
day "<U0073><U006F><U0074><U006E><U0061><U0062><U0065><U0061><U0069><U0076><U0069>";/
|
||||
"<U0076><U0075><U006F><U0073><U0073><U00E1><U0072><U0067><U0061>";/
|
||||
"<U006D><U0061><U014B><U014B><U0065><U0062><U0061><U0072><U0067><U0061>";/
|
||||
"<U0067><U0061><U0073><U006B><U0061><U0076><U0061><U0068><U006B><U006B><U0075>";/
|
||||
"<U0064><U0075><U006F><U0072><U0061><U0073><U0064><U0061><U0074>";/
|
||||
"<U0062><U0065><U0061><U0072><U006A><U0061><U0064><U0061><U0074>";/
|
||||
"<U006C><U00E1><U0076><U0076><U0061><U0072><U0064><U0061><U0074>"
|
||||
abmon "<U006F><U0111><U0111><U006A>";"<U0067><U0075><U006F><U0076>";/
|
||||
"<U006E><U006A><U0075><U006B>";"<U0063><U0075><U006F><U014B>";/
|
||||
"<U006D><U0069><U0065><U0073>";"<U0067><U0065><U0061><U0073>";/
|
||||
"<U0073><U0075><U006F><U0069>";"<U0062><U006F><U0072><U0067>";/
|
||||
"<U010D><U0061><U006B><U010D>";"<U0067><U006F><U006C><U0067>";/
|
||||
"<U0073><U006B><U00E1><U0062>";"<U006A><U0075><U006F><U0076>"
|
||||
mon "<U006F><U0111><U0111><U0061><U006A><U0061><U0067><U0065><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0067><U0075><U006F><U0076><U0076><U0061><U006D><U00E1><U006E><U0075>";/
|
||||
"<U006E><U006A><U0075><U006B><U010D><U0061><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0063><U0075><U006F><U014B><U006F><U006D><U00E1><U006E><U0075>";/
|
||||
"<U006D><U0069><U0065><U0073><U0073><U0065><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0067><U0065><U0061><U0073><U0073><U0065><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0073><U0075><U006F><U0069><U0064><U006E><U0065><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0062><U006F><U0072><U0067><U0065><U006D><U00E1><U006E><U0075>";/
|
||||
"<U010D><U0061><U006B><U010D><U0061><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0067><U006F><U006C><U0067><U0067><U006F><U0074><U006D><U00E1><U006E><U0075>";/
|
||||
"<U0073><U006B><U00E1><U0062><U006D><U0061><U006D><U00E1><U006E><U0075>";/
|
||||
"<U006A><U0075><U006F><U0076><U006C><U0061><U006D><U00E1><U006E><U0075>"
|
||||
% usual date representation
|
||||
% Linjen nedenfor er: %a, %b %e b. %Y %T %Z
|
||||
% f.eks. bear, geas 14. b. 2001 21:15:11 CEST
|
||||
d_t_fmt "<U0025><U0061><U002C><U0020><U0025><U0062><U0020><U0025><U0065><U002E><U0020><U0062><U002E><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
|
||||
%Linjen nedenfor er: %Y-%m-%d
|
||||
%f.eks 2001-04-26
|
||||
d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
|
||||
t_fmt "<U0025><U0054>"
|
||||
am_pm "";""
|
||||
t_fmt_ampm ""
|
||||
|
||||
% Denne linjen vil gi f.eks.:
|
||||
% duorasdat, borgem<U00E1>nu 23. b. 2001 00:47:57 CEST
|
||||
date_fmt "<U0025><U0041><U002C><U0020><U0025><U0042><U0020><U0025><U0064><U002E>/
|
||||
<U0020><U0062><U002E><U0020><U0025><U0059><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
|
||||
<U0020><U0025><U005A>"
|
||||
|
||||
% %a %b-%e %H:%M:%S %Z %Y søn jan-31 21:15:11 CET 2001
|
||||
END LC_TIME
|
||||
|
||||
LC_MESSAGES
|
||||
yesexpr "<U005E><U005B><U004A><U006A><U0059><U0079><U005D><U002E><U002A>"
|
||||
noexpr "<U005E><U005B><U0049><U0069><U005D><U002E><U002A>"
|
||||
END LC_MESSAGES
|
||||
|
||||
|
||||
LC_PAPER
|
||||
height 297
|
||||
width 210
|
||||
END LC_PAPER
|
||||
|
||||
LC_TELEPHONE
|
||||
tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U006C>"
|
||||
tel_dom_fmt "<U0025><U006C>"
|
||||
int_select "<U0030><U0030>"
|
||||
int_prefix "<U0034><U0037>"
|
||||
END LC_TELEPHONE
|
||||
|
||||
LC_MEASUREMENT
|
||||
measurement 1
|
||||
END LC_MEASUREMENT
|
||||
|
||||
LC_NAME
|
||||
name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
|
||||
<U0025><U006D><U0025><U0074><U0025><U0066>"
|
||||
END LC_NAME
|
||||
|
||||
LC_ADDRESS
|
||||
postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
|
||||
<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
|
||||
<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
|
||||
<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
|
||||
<U004E><U0025><U0063><U0025><U004E>"
|
||||
END LC_ADDRESS
|
22
sysdeps/alpha/gccframe.h
Normal file
22
sysdeps/alpha/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. alpha version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 64
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
22
sysdeps/arm/gccframe.h
Normal file
22
sysdeps/arm/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. arm version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 27
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
585
sysdeps/generic/dwarf2.h
Normal file
585
sysdeps/generic/dwarf2.h
Normal file
@ -0,0 +1,585 @@
|
||||
/* Declarations and definitions of codes relating to the DWARF2 symbolic
|
||||
debugging information format.
|
||||
Copyright (C) 1992, 1993, 1995, 1996, 1997, 2000
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Gary Funck (gary@intrepid.com). Derived from the
|
||||
DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com).
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This file is derived from the DWARF specification (a public document)
|
||||
Revision 2.0.0 (July 27, 1993) developed by the UNIX International
|
||||
Programming Languages Special Interest Group (UI/PLSIG) and distributed
|
||||
by UNIX International. Copies of this specification are available from
|
||||
UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. */
|
||||
|
||||
/* This file is shared between GCC and GDB, and should not contain
|
||||
prototypes. */
|
||||
|
||||
/* Tag names and codes. */
|
||||
|
||||
enum dwarf_tag
|
||||
{
|
||||
DW_TAG_padding = 0x00,
|
||||
DW_TAG_array_type = 0x01,
|
||||
DW_TAG_class_type = 0x02,
|
||||
DW_TAG_entry_point = 0x03,
|
||||
DW_TAG_enumeration_type = 0x04,
|
||||
DW_TAG_formal_parameter = 0x05,
|
||||
DW_TAG_imported_declaration = 0x08,
|
||||
DW_TAG_label = 0x0a,
|
||||
DW_TAG_lexical_block = 0x0b,
|
||||
DW_TAG_member = 0x0d,
|
||||
DW_TAG_pointer_type = 0x0f,
|
||||
DW_TAG_reference_type = 0x10,
|
||||
DW_TAG_compile_unit = 0x11,
|
||||
DW_TAG_string_type = 0x12,
|
||||
DW_TAG_structure_type = 0x13,
|
||||
DW_TAG_subroutine_type = 0x15,
|
||||
DW_TAG_typedef = 0x16,
|
||||
DW_TAG_union_type = 0x17,
|
||||
DW_TAG_unspecified_parameters = 0x18,
|
||||
DW_TAG_variant = 0x19,
|
||||
DW_TAG_common_block = 0x1a,
|
||||
DW_TAG_common_inclusion = 0x1b,
|
||||
DW_TAG_inheritance = 0x1c,
|
||||
DW_TAG_inlined_subroutine = 0x1d,
|
||||
DW_TAG_module = 0x1e,
|
||||
DW_TAG_ptr_to_member_type = 0x1f,
|
||||
DW_TAG_set_type = 0x20,
|
||||
DW_TAG_subrange_type = 0x21,
|
||||
DW_TAG_with_stmt = 0x22,
|
||||
DW_TAG_access_declaration = 0x23,
|
||||
DW_TAG_base_type = 0x24,
|
||||
DW_TAG_catch_block = 0x25,
|
||||
DW_TAG_const_type = 0x26,
|
||||
DW_TAG_constant = 0x27,
|
||||
DW_TAG_enumerator = 0x28,
|
||||
DW_TAG_file_type = 0x29,
|
||||
DW_TAG_friend = 0x2a,
|
||||
DW_TAG_namelist = 0x2b,
|
||||
DW_TAG_namelist_item = 0x2c,
|
||||
DW_TAG_packed_type = 0x2d,
|
||||
DW_TAG_subprogram = 0x2e,
|
||||
DW_TAG_template_type_param = 0x2f,
|
||||
DW_TAG_template_value_param = 0x30,
|
||||
DW_TAG_thrown_type = 0x31,
|
||||
DW_TAG_try_block = 0x32,
|
||||
DW_TAG_variant_part = 0x33,
|
||||
DW_TAG_variable = 0x34,
|
||||
DW_TAG_volatile_type = 0x35,
|
||||
/* SGI/MIPS Extensions */
|
||||
DW_TAG_MIPS_loop = 0x4081,
|
||||
/* GNU extensions */
|
||||
DW_TAG_format_label = 0x4101, /* for FORTRAN 77 and Fortran 90 */
|
||||
DW_TAG_function_template = 0x4102, /* for C++ */
|
||||
DW_TAG_class_template = 0x4103, /* for C++ */
|
||||
DW_TAG_GNU_BINCL = 0x4104,
|
||||
DW_TAG_GNU_EINCL = 0x4105
|
||||
};
|
||||
|
||||
#define DW_TAG_lo_user 0x4080
|
||||
#define DW_TAG_hi_user 0xffff
|
||||
|
||||
/* flag that tells whether entry has a child or not */
|
||||
#define DW_children_no 0
|
||||
#define DW_children_yes 1
|
||||
|
||||
/* Form names and codes. */
|
||||
enum dwarf_form
|
||||
{
|
||||
DW_FORM_addr = 0x01,
|
||||
DW_FORM_block2 = 0x03,
|
||||
DW_FORM_block4 = 0x04,
|
||||
DW_FORM_data2 = 0x05,
|
||||
DW_FORM_data4 = 0x06,
|
||||
DW_FORM_data8 = 0x07,
|
||||
DW_FORM_string = 0x08,
|
||||
DW_FORM_block = 0x09,
|
||||
DW_FORM_block1 = 0x0a,
|
||||
DW_FORM_data1 = 0x0b,
|
||||
DW_FORM_flag = 0x0c,
|
||||
DW_FORM_sdata = 0x0d,
|
||||
DW_FORM_strp = 0x0e,
|
||||
DW_FORM_udata = 0x0f,
|
||||
DW_FORM_ref_addr = 0x10,
|
||||
DW_FORM_ref1 = 0x11,
|
||||
DW_FORM_ref2 = 0x12,
|
||||
DW_FORM_ref4 = 0x13,
|
||||
DW_FORM_ref8 = 0x14,
|
||||
DW_FORM_ref_udata = 0x15,
|
||||
DW_FORM_indirect = 0x16
|
||||
};
|
||||
|
||||
/* Attribute names and codes. */
|
||||
|
||||
enum dwarf_attribute
|
||||
{
|
||||
DW_AT_sibling = 0x01,
|
||||
DW_AT_location = 0x02,
|
||||
DW_AT_name = 0x03,
|
||||
DW_AT_ordering = 0x09,
|
||||
DW_AT_subscr_data = 0x0a,
|
||||
DW_AT_byte_size = 0x0b,
|
||||
DW_AT_bit_offset = 0x0c,
|
||||
DW_AT_bit_size = 0x0d,
|
||||
DW_AT_element_list = 0x0f,
|
||||
DW_AT_stmt_list = 0x10,
|
||||
DW_AT_low_pc = 0x11,
|
||||
DW_AT_high_pc = 0x12,
|
||||
DW_AT_language = 0x13,
|
||||
DW_AT_member = 0x14,
|
||||
DW_AT_discr = 0x15,
|
||||
DW_AT_discr_value = 0x16,
|
||||
DW_AT_visibility = 0x17,
|
||||
DW_AT_import = 0x18,
|
||||
DW_AT_string_length = 0x19,
|
||||
DW_AT_common_reference = 0x1a,
|
||||
DW_AT_comp_dir = 0x1b,
|
||||
DW_AT_const_value = 0x1c,
|
||||
DW_AT_containing_type = 0x1d,
|
||||
DW_AT_default_value = 0x1e,
|
||||
DW_AT_inline = 0x20,
|
||||
DW_AT_is_optional = 0x21,
|
||||
DW_AT_lower_bound = 0x22,
|
||||
DW_AT_producer = 0x25,
|
||||
DW_AT_prototyped = 0x27,
|
||||
DW_AT_return_addr = 0x2a,
|
||||
DW_AT_start_scope = 0x2c,
|
||||
DW_AT_stride_size = 0x2e,
|
||||
DW_AT_upper_bound = 0x2f,
|
||||
DW_AT_abstract_origin = 0x31,
|
||||
DW_AT_accessibility = 0x32,
|
||||
DW_AT_address_class = 0x33,
|
||||
DW_AT_artificial = 0x34,
|
||||
DW_AT_base_types = 0x35,
|
||||
DW_AT_calling_convention = 0x36,
|
||||
DW_AT_count = 0x37,
|
||||
DW_AT_data_member_location = 0x38,
|
||||
DW_AT_decl_column = 0x39,
|
||||
DW_AT_decl_file = 0x3a,
|
||||
DW_AT_decl_line = 0x3b,
|
||||
DW_AT_declaration = 0x3c,
|
||||
DW_AT_discr_list = 0x3d,
|
||||
DW_AT_encoding = 0x3e,
|
||||
DW_AT_external = 0x3f,
|
||||
DW_AT_frame_base = 0x40,
|
||||
DW_AT_friend = 0x41,
|
||||
DW_AT_identifier_case = 0x42,
|
||||
DW_AT_macro_info = 0x43,
|
||||
DW_AT_namelist_items = 0x44,
|
||||
DW_AT_priority = 0x45,
|
||||
DW_AT_segment = 0x46,
|
||||
DW_AT_specification = 0x47,
|
||||
DW_AT_static_link = 0x48,
|
||||
DW_AT_type = 0x49,
|
||||
DW_AT_use_location = 0x4a,
|
||||
DW_AT_variable_parameter = 0x4b,
|
||||
DW_AT_virtuality = 0x4c,
|
||||
DW_AT_vtable_elem_location = 0x4d,
|
||||
/* SGI/MIPS Extensions */
|
||||
DW_AT_MIPS_fde = 0x2001,
|
||||
DW_AT_MIPS_loop_begin = 0x2002,
|
||||
DW_AT_MIPS_tail_loop_begin = 0x2003,
|
||||
DW_AT_MIPS_epilog_begin = 0x2004,
|
||||
DW_AT_MIPS_loop_unroll_factor = 0x2005,
|
||||
DW_AT_MIPS_software_pipeline_depth = 0x2006,
|
||||
DW_AT_MIPS_linkage_name = 0x2007,
|
||||
DW_AT_MIPS_stride = 0x2008,
|
||||
DW_AT_MIPS_abstract_name = 0x2009,
|
||||
DW_AT_MIPS_clone_origin = 0x200a,
|
||||
DW_AT_MIPS_has_inlines = 0x200b,
|
||||
/* GNU extensions. */
|
||||
DW_AT_sf_names = 0x2101,
|
||||
DW_AT_src_info = 0x2102,
|
||||
DW_AT_mac_info = 0x2103,
|
||||
DW_AT_src_coords = 0x2104,
|
||||
DW_AT_body_begin = 0x2105,
|
||||
DW_AT_body_end = 0x2106
|
||||
};
|
||||
|
||||
#define DW_AT_lo_user 0x2000 /* implementation-defined range start */
|
||||
#define DW_AT_hi_user 0x3ff0 /* implementation-defined range end */
|
||||
|
||||
/* Location atom names and codes. */
|
||||
|
||||
enum dwarf_location_atom
|
||||
{
|
||||
DW_OP_addr = 0x03,
|
||||
DW_OP_deref = 0x06,
|
||||
DW_OP_const1u = 0x08,
|
||||
DW_OP_const1s = 0x09,
|
||||
DW_OP_const2u = 0x0a,
|
||||
DW_OP_const2s = 0x0b,
|
||||
DW_OP_const4u = 0x0c,
|
||||
DW_OP_const4s = 0x0d,
|
||||
DW_OP_const8u = 0x0e,
|
||||
DW_OP_const8s = 0x0f,
|
||||
DW_OP_constu = 0x10,
|
||||
DW_OP_consts = 0x11,
|
||||
DW_OP_dup = 0x12,
|
||||
DW_OP_drop = 0x13,
|
||||
DW_OP_over = 0x14,
|
||||
DW_OP_pick = 0x15,
|
||||
DW_OP_swap = 0x16,
|
||||
DW_OP_rot = 0x17,
|
||||
DW_OP_xderef = 0x18,
|
||||
DW_OP_abs = 0x19,
|
||||
DW_OP_and = 0x1a,
|
||||
DW_OP_div = 0x1b,
|
||||
DW_OP_minus = 0x1c,
|
||||
DW_OP_mod = 0x1d,
|
||||
DW_OP_mul = 0x1e,
|
||||
DW_OP_neg = 0x1f,
|
||||
DW_OP_not = 0x20,
|
||||
DW_OP_or = 0x21,
|
||||
DW_OP_plus = 0x22,
|
||||
DW_OP_plus_uconst = 0x23,
|
||||
DW_OP_shl = 0x24,
|
||||
DW_OP_shr = 0x25,
|
||||
DW_OP_shra = 0x26,
|
||||
DW_OP_xor = 0x27,
|
||||
DW_OP_bra = 0x28,
|
||||
DW_OP_eq = 0x29,
|
||||
DW_OP_ge = 0x2a,
|
||||
DW_OP_gt = 0x2b,
|
||||
DW_OP_le = 0x2c,
|
||||
DW_OP_lt = 0x2d,
|
||||
DW_OP_ne = 0x2e,
|
||||
DW_OP_skip = 0x2f,
|
||||
DW_OP_lit0 = 0x30,
|
||||
DW_OP_lit1 = 0x31,
|
||||
DW_OP_lit2 = 0x32,
|
||||
DW_OP_lit3 = 0x33,
|
||||
DW_OP_lit4 = 0x34,
|
||||
DW_OP_lit5 = 0x35,
|
||||
DW_OP_lit6 = 0x36,
|
||||
DW_OP_lit7 = 0x37,
|
||||
DW_OP_lit8 = 0x38,
|
||||
DW_OP_lit9 = 0x39,
|
||||
DW_OP_lit10 = 0x3a,
|
||||
DW_OP_lit11 = 0x3b,
|
||||
DW_OP_lit12 = 0x3c,
|
||||
DW_OP_lit13 = 0x3d,
|
||||
DW_OP_lit14 = 0x3e,
|
||||
DW_OP_lit15 = 0x3f,
|
||||
DW_OP_lit16 = 0x40,
|
||||
DW_OP_lit17 = 0x41,
|
||||
DW_OP_lit18 = 0x42,
|
||||
DW_OP_lit19 = 0x43,
|
||||
DW_OP_lit20 = 0x44,
|
||||
DW_OP_lit21 = 0x45,
|
||||
DW_OP_lit22 = 0x46,
|
||||
DW_OP_lit23 = 0x47,
|
||||
DW_OP_lit24 = 0x48,
|
||||
DW_OP_lit25 = 0x49,
|
||||
DW_OP_lit26 = 0x4a,
|
||||
DW_OP_lit27 = 0x4b,
|
||||
DW_OP_lit28 = 0x4c,
|
||||
DW_OP_lit29 = 0x4d,
|
||||
DW_OP_lit30 = 0x4e,
|
||||
DW_OP_lit31 = 0x4f,
|
||||
DW_OP_reg0 = 0x50,
|
||||
DW_OP_reg1 = 0x51,
|
||||
DW_OP_reg2 = 0x52,
|
||||
DW_OP_reg3 = 0x53,
|
||||
DW_OP_reg4 = 0x54,
|
||||
DW_OP_reg5 = 0x55,
|
||||
DW_OP_reg6 = 0x56,
|
||||
DW_OP_reg7 = 0x57,
|
||||
DW_OP_reg8 = 0x58,
|
||||
DW_OP_reg9 = 0x59,
|
||||
DW_OP_reg10 = 0x5a,
|
||||
DW_OP_reg11 = 0x5b,
|
||||
DW_OP_reg12 = 0x5c,
|
||||
DW_OP_reg13 = 0x5d,
|
||||
DW_OP_reg14 = 0x5e,
|
||||
DW_OP_reg15 = 0x5f,
|
||||
DW_OP_reg16 = 0x60,
|
||||
DW_OP_reg17 = 0x61,
|
||||
DW_OP_reg18 = 0x62,
|
||||
DW_OP_reg19 = 0x63,
|
||||
DW_OP_reg20 = 0x64,
|
||||
DW_OP_reg21 = 0x65,
|
||||
DW_OP_reg22 = 0x66,
|
||||
DW_OP_reg23 = 0x67,
|
||||
DW_OP_reg24 = 0x68,
|
||||
DW_OP_reg25 = 0x69,
|
||||
DW_OP_reg26 = 0x6a,
|
||||
DW_OP_reg27 = 0x6b,
|
||||
DW_OP_reg28 = 0x6c,
|
||||
DW_OP_reg29 = 0x6d,
|
||||
DW_OP_reg30 = 0x6e,
|
||||
DW_OP_reg31 = 0x6f,
|
||||
DW_OP_breg0 = 0x70,
|
||||
DW_OP_breg1 = 0x71,
|
||||
DW_OP_breg2 = 0x72,
|
||||
DW_OP_breg3 = 0x73,
|
||||
DW_OP_breg4 = 0x74,
|
||||
DW_OP_breg5 = 0x75,
|
||||
DW_OP_breg6 = 0x76,
|
||||
DW_OP_breg7 = 0x77,
|
||||
DW_OP_breg8 = 0x78,
|
||||
DW_OP_breg9 = 0x79,
|
||||
DW_OP_breg10 = 0x7a,
|
||||
DW_OP_breg11 = 0x7b,
|
||||
DW_OP_breg12 = 0x7c,
|
||||
DW_OP_breg13 = 0x7d,
|
||||
DW_OP_breg14 = 0x7e,
|
||||
DW_OP_breg15 = 0x7f,
|
||||
DW_OP_breg16 = 0x80,
|
||||
DW_OP_breg17 = 0x81,
|
||||
DW_OP_breg18 = 0x82,
|
||||
DW_OP_breg19 = 0x83,
|
||||
DW_OP_breg20 = 0x84,
|
||||
DW_OP_breg21 = 0x85,
|
||||
DW_OP_breg22 = 0x86,
|
||||
DW_OP_breg23 = 0x87,
|
||||
DW_OP_breg24 = 0x88,
|
||||
DW_OP_breg25 = 0x89,
|
||||
DW_OP_breg26 = 0x8a,
|
||||
DW_OP_breg27 = 0x8b,
|
||||
DW_OP_breg28 = 0x8c,
|
||||
DW_OP_breg29 = 0x8d,
|
||||
DW_OP_breg30 = 0x8e,
|
||||
DW_OP_breg31 = 0x8f,
|
||||
DW_OP_regx = 0x90,
|
||||
DW_OP_fbreg = 0x91,
|
||||
DW_OP_bregx = 0x92,
|
||||
DW_OP_piece = 0x93,
|
||||
DW_OP_deref_size = 0x94,
|
||||
DW_OP_xderef_size = 0x95,
|
||||
DW_OP_nop = 0x96
|
||||
};
|
||||
|
||||
#define DW_OP_lo_user 0x80 /* implementation-defined range start */
|
||||
#define DW_OP_hi_user 0xff /* implementation-defined range end */
|
||||
|
||||
/* Type encodings. */
|
||||
|
||||
enum dwarf_type
|
||||
{
|
||||
DW_ATE_void = 0x0,
|
||||
DW_ATE_address = 0x1,
|
||||
DW_ATE_boolean = 0x2,
|
||||
DW_ATE_complex_float = 0x3,
|
||||
DW_ATE_float = 0x4,
|
||||
DW_ATE_signed = 0x5,
|
||||
DW_ATE_signed_char = 0x6,
|
||||
DW_ATE_unsigned = 0x7,
|
||||
DW_ATE_unsigned_char = 0x8
|
||||
};
|
||||
|
||||
#define DW_ATE_lo_user 0x80
|
||||
#define DW_ATE_hi_user 0xff
|
||||
|
||||
/* Array ordering names and codes. */
|
||||
enum dwarf_array_dim_ordering
|
||||
{
|
||||
DW_ORD_row_major = 0,
|
||||
DW_ORD_col_major = 1
|
||||
};
|
||||
|
||||
/* access attribute */
|
||||
enum dwarf_access_attribute
|
||||
{
|
||||
DW_ACCESS_public = 1,
|
||||
DW_ACCESS_protected = 2,
|
||||
DW_ACCESS_private = 3
|
||||
};
|
||||
|
||||
/* visibility */
|
||||
enum dwarf_visibility_attribute
|
||||
{
|
||||
DW_VIS_local = 1,
|
||||
DW_VIS_exported = 2,
|
||||
DW_VIS_qualified = 3
|
||||
};
|
||||
|
||||
/* virtuality */
|
||||
enum dwarf_virtuality_attribute
|
||||
{
|
||||
DW_VIRTUALITY_none = 0,
|
||||
DW_VIRTUALITY_virtual = 1,
|
||||
DW_VIRTUALITY_pure_virtual = 2
|
||||
};
|
||||
|
||||
/* case sensitivity */
|
||||
enum dwarf_id_case
|
||||
{
|
||||
DW_ID_case_sensitive = 0,
|
||||
DW_ID_up_case = 1,
|
||||
DW_ID_down_case = 2,
|
||||
DW_ID_case_insensitive = 3
|
||||
};
|
||||
|
||||
/* calling convention */
|
||||
enum dwarf_calling_convention
|
||||
{
|
||||
DW_CC_normal = 0x1,
|
||||
DW_CC_program = 0x2,
|
||||
DW_CC_nocall = 0x3
|
||||
};
|
||||
|
||||
#define DW_CC_lo_user 0x40
|
||||
#define DW_CC_hi_user 0xff
|
||||
|
||||
/* inline attribute */
|
||||
enum dwarf_inline_attribute
|
||||
{
|
||||
DW_INL_not_inlined = 0,
|
||||
DW_INL_inlined = 1,
|
||||
DW_INL_declared_not_inlined = 2,
|
||||
DW_INL_declared_inlined = 3
|
||||
};
|
||||
|
||||
/* discriminant lists */
|
||||
enum dwarf_discrim_list
|
||||
{
|
||||
DW_DSC_label = 0,
|
||||
DW_DSC_range = 1
|
||||
};
|
||||
|
||||
/* line number opcodes */
|
||||
enum dwarf_line_number_ops
|
||||
{
|
||||
DW_LNS_extended_op = 0,
|
||||
DW_LNS_copy = 1,
|
||||
DW_LNS_advance_pc = 2,
|
||||
DW_LNS_advance_line = 3,
|
||||
DW_LNS_set_file = 4,
|
||||
DW_LNS_set_column = 5,
|
||||
DW_LNS_negate_stmt = 6,
|
||||
DW_LNS_set_basic_block = 7,
|
||||
DW_LNS_const_add_pc = 8,
|
||||
DW_LNS_fixed_advance_pc = 9
|
||||
};
|
||||
|
||||
/* line number extended opcodes */
|
||||
enum dwarf_line_number_x_ops
|
||||
{
|
||||
DW_LNE_end_sequence = 1,
|
||||
DW_LNE_set_address = 2,
|
||||
DW_LNE_define_file = 3
|
||||
};
|
||||
|
||||
/* call frame information */
|
||||
enum dwarf_call_frame_info
|
||||
{
|
||||
DW_CFA_advance_loc = 0x40,
|
||||
DW_CFA_offset = 0x80,
|
||||
DW_CFA_restore = 0xc0,
|
||||
DW_CFA_nop = 0x00,
|
||||
DW_CFA_set_loc = 0x01,
|
||||
DW_CFA_advance_loc1 = 0x02,
|
||||
DW_CFA_advance_loc2 = 0x03,
|
||||
DW_CFA_advance_loc4 = 0x04,
|
||||
DW_CFA_offset_extended = 0x05,
|
||||
DW_CFA_restore_extended = 0x06,
|
||||
DW_CFA_undefined = 0x07,
|
||||
DW_CFA_same_value = 0x08,
|
||||
DW_CFA_register = 0x09,
|
||||
DW_CFA_remember_state = 0x0a,
|
||||
DW_CFA_restore_state = 0x0b,
|
||||
DW_CFA_def_cfa = 0x0c,
|
||||
DW_CFA_def_cfa_register = 0x0d,
|
||||
DW_CFA_def_cfa_offset = 0x0e,
|
||||
DW_CFA_def_cfa_expression = 0x0f,
|
||||
DW_CFA_expression = 0x10,
|
||||
/* Dwarf 2.1 */
|
||||
DW_CFA_offset_extended_sf = 0x11,
|
||||
DW_CFA_def_cfa_sf = 0x12,
|
||||
DW_CFA_def_cfa_offset_sf = 0x13,
|
||||
|
||||
/* SGI/MIPS specific */
|
||||
DW_CFA_MIPS_advance_loc8 = 0x1d,
|
||||
|
||||
/* GNU extensions */
|
||||
DW_CFA_GNU_window_save = 0x2d,
|
||||
DW_CFA_GNU_args_size = 0x2e,
|
||||
DW_CFA_GNU_negative_offset_extended = 0x2f
|
||||
};
|
||||
|
||||
#define DW_CIE_ID 0xffffffff
|
||||
#define DW_CIE_VERSION 1
|
||||
|
||||
#define DW_CFA_extended 0
|
||||
#define DW_CFA_low_user 0x1c
|
||||
#define DW_CFA_high_user 0x3f
|
||||
|
||||
#define DW_CHILDREN_no 0x00
|
||||
#define DW_CHILDREN_yes 0x01
|
||||
|
||||
#define DW_ADDR_none 0
|
||||
|
||||
/* Source language names and codes. */
|
||||
|
||||
enum dwarf_source_language
|
||||
{
|
||||
DW_LANG_C89 = 0x0001,
|
||||
DW_LANG_C = 0x0002,
|
||||
DW_LANG_Ada83 = 0x0003,
|
||||
DW_LANG_C_plus_plus = 0x0004,
|
||||
DW_LANG_Cobol74 = 0x0005,
|
||||
DW_LANG_Cobol85 = 0x0006,
|
||||
DW_LANG_Fortran77 = 0x0007,
|
||||
DW_LANG_Fortran90 = 0x0008,
|
||||
DW_LANG_Pascal83 = 0x0009,
|
||||
DW_LANG_Modula2 = 0x000a,
|
||||
DW_LANG_Java = 0x000b,
|
||||
DW_LANG_Mips_Assembler = 0x8001
|
||||
};
|
||||
|
||||
|
||||
#define DW_LANG_lo_user 0x8000 /* implementation-defined range start */
|
||||
#define DW_LANG_hi_user 0xffff /* implementation-defined range start */
|
||||
|
||||
/* Names and codes for macro information. */
|
||||
|
||||
enum dwarf_macinfo_record_type
|
||||
{
|
||||
DW_MACINFO_define = 1,
|
||||
DW_MACINFO_undef = 2,
|
||||
DW_MACINFO_start_file = 3,
|
||||
DW_MACINFO_end_file = 4,
|
||||
DW_MACINFO_vendor_ext = 255
|
||||
};
|
||||
|
||||
|
||||
/* @@@ For use with GNU frame unwind information. */
|
||||
|
||||
#define DW_EH_PE_absptr 0x00
|
||||
#define DW_EH_PE_omit 0xff
|
||||
|
||||
#define DW_EH_PE_uleb128 0x01
|
||||
#define DW_EH_PE_udata2 0x02
|
||||
#define DW_EH_PE_udata4 0x03
|
||||
#define DW_EH_PE_udata8 0x04
|
||||
#define DW_EH_PE_sleb128 0x09
|
||||
#define DW_EH_PE_sdata2 0x0A
|
||||
#define DW_EH_PE_sdata4 0x0B
|
||||
#define DW_EH_PE_sdata8 0x0C
|
||||
#define DW_EH_PE_signed 0x08
|
||||
|
||||
#define DW_EH_PE_pcrel 0x10
|
||||
#define DW_EH_PE_textrel 0x20
|
||||
#define DW_EH_PE_datarel 0x30
|
||||
#define DW_EH_PE_funcrel 0x40
|
||||
#define DW_EH_PE_aligned 0x50
|
||||
|
||||
#define DW_EH_PE_indirect 0x80
|
47
sysdeps/generic/framestate.c
Normal file
47
sysdeps/generic/framestate.c
Normal file
@ -0,0 +1,47 @@
|
||||
/* __frame_state_for unwinder helper function wrapper.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <stdlib.h>
|
||||
#define __frame_state_for fallback_frame_state_for
|
||||
#include <unwind-dw2.c>
|
||||
#undef __frame_state_for
|
||||
|
||||
typedef struct frame_state * (*framesf)(void *pc, struct frame_state *);
|
||||
struct frame_state *__frame_state_for (void *pc,
|
||||
struct frame_state *frame_state);
|
||||
|
||||
struct frame_state *
|
||||
__frame_state_for (void *pc, struct frame_state *frame_state)
|
||||
{
|
||||
static framesf frame_state_for;
|
||||
|
||||
if (frame_state_for == NULL)
|
||||
{
|
||||
void *handle = __libc_dlopen ("libgcc_s.so.1");
|
||||
|
||||
if (handle == NULL
|
||||
|| (frame_state_for
|
||||
= (framesf) __libc_dlsym (handle, "__frame_state_for")) == NULL)
|
||||
frame_state_for = fallback_frame_state_for;
|
||||
}
|
||||
|
||||
return frame_state_for (pc, frame_state);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/* Definition of object in frame unwind info. Generic version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001 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
|
||||
@ -17,14 +17,34 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* This must match what's in frame.h in gcc. */
|
||||
#include <sys/types.h>
|
||||
|
||||
struct dwarf_fde;
|
||||
struct fde_vector;
|
||||
|
||||
struct object
|
||||
{
|
||||
void *pc_begin;
|
||||
void *pc_end;
|
||||
void *fde_begin;
|
||||
void *fde_array;
|
||||
__SIZE_TYPE__ count;
|
||||
void *tbase;
|
||||
void *dbase;
|
||||
union {
|
||||
struct dwarf_fde *single;
|
||||
struct dwarf_fde **array;
|
||||
struct fde_vector *sort;
|
||||
} u;
|
||||
|
||||
union {
|
||||
struct {
|
||||
unsigned long sorted : 1;
|
||||
unsigned long from_array : 1;
|
||||
unsigned long mixed_encoding : 1;
|
||||
unsigned long encoding : 8;
|
||||
/* ??? Wish there was an easy way to detect a 64-bit host here;
|
||||
we've got 32 bits left to play with... */
|
||||
unsigned long count : 21;
|
||||
} b;
|
||||
size_t i;
|
||||
} s;
|
||||
|
||||
struct object *next;
|
||||
};
|
||||
|
1021
sysdeps/generic/unwind-dw2-fde.c
Normal file
1021
sysdeps/generic/unwind-dw2-fde.c
Normal file
File diff suppressed because it is too large
Load Diff
165
sysdeps/generic/unwind-dw2-fde.h
Normal file
165
sysdeps/generic/unwind-dw2-fde.h
Normal file
@ -0,0 +1,165 @@
|
||||
/* Subroutines needed for unwinding stack frames for exception handling. */
|
||||
/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Jason Merrill <jason@cygnus.com>.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
In addition to the permissions in the GNU General Public License, the
|
||||
Free Software Foundation gives you unlimited permission to link the
|
||||
compiled version of this file into combinations with other programs,
|
||||
and to distribute those combinations without any restriction coming
|
||||
from the use of this file. (The General Public License restrictions
|
||||
do apply in other respects; for example, they cover modification of
|
||||
the file, and distribution when not linked into a combine
|
||||
executable.)
|
||||
|
||||
GNU CC 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
|
||||
struct fde_vector
|
||||
{
|
||||
void *orig_data;
|
||||
size_t count;
|
||||
struct dwarf_fde *array __flexarr;
|
||||
};
|
||||
|
||||
#ifdef _LIBC
|
||||
#include <gccframe.h>
|
||||
#else
|
||||
struct object
|
||||
{
|
||||
void *pc_begin;
|
||||
void *tbase;
|
||||
void *dbase;
|
||||
union {
|
||||
struct dwarf_fde *single;
|
||||
struct dwarf_fde **array;
|
||||
struct fde_vector *sort;
|
||||
} u;
|
||||
|
||||
union {
|
||||
struct {
|
||||
unsigned long sorted : 1;
|
||||
unsigned long from_array : 1;
|
||||
unsigned long mixed_encoding : 1;
|
||||
unsigned long encoding : 8;
|
||||
/* ??? Wish there was an easy way to detect a 64-bit host here;
|
||||
we've got 32 bits left to play with... */
|
||||
unsigned long count : 21;
|
||||
} b;
|
||||
size_t i;
|
||||
} s;
|
||||
|
||||
struct object *next;
|
||||
};
|
||||
#endif
|
||||
|
||||
/* This is the original definition of struct object. While the struct
|
||||
itself was opaque to users, they did know how large it was, and
|
||||
allocate one statically in crtbegin for each DSO. Keep this around
|
||||
so that we're aware of the static size limitations for the new struct. */
|
||||
struct old_object
|
||||
{
|
||||
void *pc_begin;
|
||||
void *pc_end;
|
||||
struct dwarf_fde *fde_begin;
|
||||
struct dwarf_fde **fde_array;
|
||||
size_t count;
|
||||
struct old_object *next;
|
||||
};
|
||||
|
||||
struct dwarf_eh_bases
|
||||
{
|
||||
void *tbase;
|
||||
void *dbase;
|
||||
void *func;
|
||||
};
|
||||
|
||||
|
||||
extern void __register_frame_info_bases (void *, struct object *,
|
||||
void *, void *);
|
||||
extern void __register_frame_info (void *, struct object *);
|
||||
extern void __register_frame (void *);
|
||||
extern void __register_frame_info_table_bases (void *, struct object *,
|
||||
void *, void *);
|
||||
extern void __register_frame_info_table (void *, struct object *);
|
||||
extern void __register_frame_table (void *);
|
||||
extern void *__deregister_frame_info (void *);
|
||||
extern void *__deregister_frame_info_bases (void *);
|
||||
extern void __deregister_frame (void *);
|
||||
|
||||
|
||||
typedef int sword __attribute__ ((mode (SI)));
|
||||
typedef unsigned int uword __attribute__ ((mode (SI)));
|
||||
typedef unsigned int uaddr __attribute__ ((mode (pointer)));
|
||||
typedef int saddr __attribute__ ((mode (pointer)));
|
||||
typedef unsigned char ubyte;
|
||||
|
||||
/* Terminology:
|
||||
CIE - Common Information Element
|
||||
FDE - Frame Descriptor Element
|
||||
|
||||
There is one per function, and it describes where the function code
|
||||
is located, and what the register lifetimes and stack layout are
|
||||
within the function.
|
||||
|
||||
The data structures are defined in the DWARF specfication, although
|
||||
not in a very readable way (see LITERATURE).
|
||||
|
||||
Every time an exception is thrown, the code needs to locate the FDE
|
||||
for the current function, and starts to look for exception regions
|
||||
from that FDE. This works in a two-level search:
|
||||
a) in a linear search, find the shared image (i.e. DLL) containing
|
||||
the PC
|
||||
b) using the FDE table for that shared object, locate the FDE using
|
||||
binary search (which requires the sorting). */
|
||||
|
||||
/* The first few fields of a CIE. The CIE_id field is 0 for a CIE,
|
||||
to distinguish it from a valid FDE. FDEs are aligned to an addressing
|
||||
unit boundary, but the fields within are unaligned. */
|
||||
struct dwarf_cie
|
||||
{
|
||||
uword length;
|
||||
sword CIE_id;
|
||||
ubyte version;
|
||||
unsigned char augmentation __flexarr;
|
||||
} __attribute__ ((packed, aligned (__alignof__ (void *))));
|
||||
|
||||
/* The first few fields of an FDE. */
|
||||
struct dwarf_fde
|
||||
{
|
||||
uword length;
|
||||
sword CIE_delta;
|
||||
unsigned char pc_begin __flexarr;
|
||||
} __attribute__ ((packed, aligned (__alignof__ (void *))));
|
||||
|
||||
typedef struct dwarf_fde fde;
|
||||
|
||||
/* Locate the CIE for a given FDE. */
|
||||
|
||||
static inline struct dwarf_cie *
|
||||
get_cie (struct dwarf_fde *f)
|
||||
{
|
||||
return (void *)&f->CIE_delta - f->CIE_delta;
|
||||
}
|
||||
|
||||
static inline fde *
|
||||
next_fde (fde *f)
|
||||
{
|
||||
return (fde *)((char *)f + f->length + sizeof (f->length));
|
||||
}
|
||||
|
||||
extern fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
|
1207
sysdeps/generic/unwind-dw2.c
Normal file
1207
sysdeps/generic/unwind-dw2.c
Normal file
File diff suppressed because it is too large
Load Diff
272
sysdeps/generic/unwind-pe.h
Normal file
272
sysdeps/generic/unwind-pe.h
Normal file
@ -0,0 +1,272 @@
|
||||
/* Exception handling and frame unwind runtime interface routines.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* @@@ Really this should be out of line, but this also causes link
|
||||
compatibility problems with the base ABI. This is slightly better
|
||||
than duplicating code, however. */
|
||||
|
||||
/* If using C++, references to abort have to be qualified with std::. */
|
||||
#if __cplusplus
|
||||
#define __gxx_abort std::abort
|
||||
#else
|
||||
#define __gxx_abort abort
|
||||
#endif
|
||||
|
||||
/* Pointer encodings, from dwarf2.h. */
|
||||
#define DW_EH_PE_absptr 0x00
|
||||
#define DW_EH_PE_omit 0xff
|
||||
|
||||
#define DW_EH_PE_uleb128 0x01
|
||||
#define DW_EH_PE_udata2 0x02
|
||||
#define DW_EH_PE_udata4 0x03
|
||||
#define DW_EH_PE_udata8 0x04
|
||||
#define DW_EH_PE_sleb128 0x09
|
||||
#define DW_EH_PE_sdata2 0x0A
|
||||
#define DW_EH_PE_sdata4 0x0B
|
||||
#define DW_EH_PE_sdata8 0x0C
|
||||
#define DW_EH_PE_signed 0x08
|
||||
|
||||
#define DW_EH_PE_pcrel 0x10
|
||||
#define DW_EH_PE_textrel 0x20
|
||||
#define DW_EH_PE_datarel 0x30
|
||||
#define DW_EH_PE_funcrel 0x40
|
||||
#define DW_EH_PE_aligned 0x50
|
||||
|
||||
#define DW_EH_PE_indirect 0x80
|
||||
|
||||
|
||||
/* Given an encoding, return the number of bytes the format occupies.
|
||||
This is only defined for fixed-size encodings, and so does not
|
||||
include leb128. */
|
||||
|
||||
#ifndef _LIBC
|
||||
static
|
||||
#endif
|
||||
unsigned int
|
||||
size_of_encoded_value (unsigned char encoding)
|
||||
#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
|
||||
;
|
||||
#else
|
||||
{
|
||||
if (encoding == DW_EH_PE_omit)
|
||||
return 0;
|
||||
|
||||
switch (encoding & 0x07)
|
||||
{
|
||||
case DW_EH_PE_absptr:
|
||||
return sizeof (void *);
|
||||
case DW_EH_PE_udata2:
|
||||
return 2;
|
||||
case DW_EH_PE_udata4:
|
||||
return 4;
|
||||
case DW_EH_PE_udata8:
|
||||
return 8;
|
||||
}
|
||||
__gxx_abort ();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NO_BASE_OF_ENCODED_VALUE
|
||||
|
||||
/* Given an encoding and an _Unwind_Context, return the base to which
|
||||
the encoding is relative. This base may then be passed to
|
||||
read_encoded_value_with_base for use when the _Unwind_Context is
|
||||
not available. */
|
||||
|
||||
static _Unwind_Ptr
|
||||
base_of_encoded_value (unsigned char encoding, struct _Unwind_Context *context)
|
||||
{
|
||||
if (encoding == DW_EH_PE_omit)
|
||||
return 0;
|
||||
|
||||
switch (encoding & 0x70)
|
||||
{
|
||||
case DW_EH_PE_absptr:
|
||||
case DW_EH_PE_pcrel:
|
||||
case DW_EH_PE_aligned:
|
||||
return 0;
|
||||
|
||||
case DW_EH_PE_textrel:
|
||||
return _Unwind_GetTextRelBase (context);
|
||||
case DW_EH_PE_datarel:
|
||||
return _Unwind_GetDataRelBase (context);
|
||||
case DW_EH_PE_funcrel:
|
||||
return _Unwind_GetRegionStart (context);
|
||||
}
|
||||
__gxx_abort ();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Load an encoded value from memory at P. The value is returned in VAL;
|
||||
The function returns P incremented past the value. BASE is as given
|
||||
by base_of_encoded_value for this encoding in the appropriate context. */
|
||||
|
||||
#ifndef _LIBC
|
||||
static
|
||||
#endif
|
||||
const unsigned char *
|
||||
read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
|
||||
const unsigned char *p, _Unwind_Ptr *val)
|
||||
#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
|
||||
;
|
||||
#else
|
||||
{
|
||||
union unaligned
|
||||
{
|
||||
void *ptr;
|
||||
unsigned u2 __attribute__ ((mode (HI)));
|
||||
unsigned u4 __attribute__ ((mode (SI)));
|
||||
unsigned u8 __attribute__ ((mode (DI)));
|
||||
signed s2 __attribute__ ((mode (HI)));
|
||||
signed s4 __attribute__ ((mode (SI)));
|
||||
signed s8 __attribute__ ((mode (DI)));
|
||||
} __attribute__((__packed__));
|
||||
|
||||
union unaligned *u = (union unaligned *) p;
|
||||
_Unwind_Ptr result;
|
||||
|
||||
if (encoding == DW_EH_PE_aligned)
|
||||
{
|
||||
_Unwind_Ptr a = (_Unwind_Ptr)p;
|
||||
a = (a + sizeof (void *) - 1) & - sizeof(void *);
|
||||
result = *(_Unwind_Ptr *) a;
|
||||
p = (const unsigned char *)(a + sizeof (void *));
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (encoding & 0x0f)
|
||||
{
|
||||
case DW_EH_PE_absptr:
|
||||
result = (_Unwind_Ptr) u->ptr;
|
||||
p += sizeof (void *);
|
||||
break;
|
||||
|
||||
case DW_EH_PE_uleb128:
|
||||
{
|
||||
unsigned int shift = 0;
|
||||
unsigned char byte;
|
||||
|
||||
result = 0;
|
||||
do
|
||||
{
|
||||
byte = *p++;
|
||||
result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
|
||||
shift += 7;
|
||||
}
|
||||
while (byte & 0x80);
|
||||
}
|
||||
break;
|
||||
|
||||
case DW_EH_PE_sleb128:
|
||||
{
|
||||
unsigned int shift = 0;
|
||||
unsigned char byte;
|
||||
|
||||
result = 0;
|
||||
do
|
||||
{
|
||||
byte = *p++;
|
||||
result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
|
||||
shift += 7;
|
||||
}
|
||||
while (byte & 0x80);
|
||||
|
||||
if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
|
||||
result |= -(1L << shift);
|
||||
}
|
||||
break;
|
||||
|
||||
case DW_EH_PE_udata2:
|
||||
result = u->u2;
|
||||
p += 2;
|
||||
break;
|
||||
case DW_EH_PE_udata4:
|
||||
result = u->u4;
|
||||
p += 4;
|
||||
break;
|
||||
case DW_EH_PE_udata8:
|
||||
result = u->u8;
|
||||
p += 8;
|
||||
break;
|
||||
|
||||
case DW_EH_PE_sdata2:
|
||||
result = u->s2;
|
||||
p += 2;
|
||||
break;
|
||||
case DW_EH_PE_sdata4:
|
||||
result = u->s4;
|
||||
p += 4;
|
||||
break;
|
||||
case DW_EH_PE_sdata8:
|
||||
result = u->s8;
|
||||
p += 8;
|
||||
break;
|
||||
|
||||
default:
|
||||
__gxx_abort ();
|
||||
}
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
result += ((encoding & 0x70) == DW_EH_PE_pcrel
|
||||
? (_Unwind_Ptr)u : base);
|
||||
if (encoding & DW_EH_PE_indirect)
|
||||
result = *(_Unwind_Ptr *)result;
|
||||
}
|
||||
}
|
||||
|
||||
*val = result;
|
||||
return p;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NO_BASE_OF_ENCODED_VALUE
|
||||
|
||||
/* Like read_encoded_value_with_base, but get the base from the context
|
||||
rather than providing it directly. */
|
||||
|
||||
static inline const unsigned char *
|
||||
read_encoded_value (struct _Unwind_Context *context, unsigned char encoding,
|
||||
const unsigned char *p, _Unwind_Ptr *val)
|
||||
{
|
||||
return read_encoded_value_with_base (encoding,
|
||||
base_of_encoded_value (encoding, context),
|
||||
p, val);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Read an unsigned leb128 value from P, store the value in VAL, return
|
||||
P incremented past the value. */
|
||||
|
||||
static inline const unsigned char *
|
||||
read_uleb128 (const unsigned char *p, _Unwind_Ptr *val)
|
||||
{
|
||||
return read_encoded_value_with_base (DW_EH_PE_uleb128, 0, p, val);
|
||||
}
|
||||
|
||||
/* Similar, but read a signed leb128 value. */
|
||||
|
||||
static inline const unsigned char *
|
||||
read_sleb128 (const unsigned char *p, _Unwind_Ptr *val)
|
||||
{
|
||||
return read_encoded_value_with_base (DW_EH_PE_sleb128, 0, p, val);
|
||||
}
|
191
sysdeps/generic/unwind.h
Normal file
191
sysdeps/generic/unwind.h
Normal file
@ -0,0 +1,191 @@
|
||||
/* Exception handling and frame unwind runtime interface routines.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This is derived from the C++ ABI for IA-64. Where we diverge
|
||||
for cross-architecture compatibility are noted with "@@@". */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Level 1: Base ABI */
|
||||
|
||||
/* @@@ The IA-64 ABI uses uint64 throughout. Most places this is
|
||||
inefficient for 32-bit and smaller machines. */
|
||||
typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
|
||||
typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
|
||||
typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
|
||||
|
||||
/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
|
||||
consumer of an exception. We'll go along with this for now even on
|
||||
32-bit machines. We'll need to provide some other option for
|
||||
16-bit machines and for machines with > 8 bits per byte. */
|
||||
typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));
|
||||
|
||||
/* The unwind interface uses reason codes in several contexts to
|
||||
identify the reasons for failures or other actions. */
|
||||
typedef enum
|
||||
{
|
||||
_URC_NO_REASON = 0,
|
||||
_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
|
||||
_URC_FATAL_PHASE2_ERROR = 2,
|
||||
_URC_FATAL_PHASE1_ERROR = 3,
|
||||
_URC_NORMAL_STOP = 4,
|
||||
_URC_END_OF_STACK = 5,
|
||||
_URC_HANDLER_FOUND = 6,
|
||||
_URC_INSTALL_CONTEXT = 7,
|
||||
_URC_CONTINUE_UNWIND = 8
|
||||
} _Unwind_Reason_Code;
|
||||
|
||||
|
||||
/* The unwind interface uses a pointer to an exception header object
|
||||
as its representation of an exception being thrown. In general, the
|
||||
full representation of an exception object is language- and
|
||||
implementation-specific, but it will be prefixed by a header
|
||||
understood by the unwind interface. */
|
||||
|
||||
struct _Unwind_Exception;
|
||||
|
||||
typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
|
||||
struct _Unwind_Exception *);
|
||||
|
||||
struct _Unwind_Exception
|
||||
{
|
||||
_Unwind_Exception_Class exception_class;
|
||||
_Unwind_Exception_Cleanup_Fn exception_cleanup;
|
||||
_Unwind_Word private_1;
|
||||
_Unwind_Word private_2;
|
||||
|
||||
/* @@@ The IA-64 ABI says that this structure must be double-word aligned.
|
||||
Taking that literally does not make much sense generically. Instead we
|
||||
provide the maximum alignment required by any type for the machine. */
|
||||
} __attribute__((__aligned__));
|
||||
|
||||
|
||||
/* The ACTIONS argument to the personality routine is a bitwise OR of one
|
||||
or more of the following constants. */
|
||||
typedef int _Unwind_Action;
|
||||
|
||||
#define _UA_SEARCH_PHASE 1
|
||||
#define _UA_CLEANUP_PHASE 2
|
||||
#define _UA_HANDLER_FRAME 4
|
||||
#define _UA_FORCE_UNWIND 8
|
||||
|
||||
/* This is an opaque type used to refer to a system-specific data
|
||||
structure used by the system unwinder. This context is created and
|
||||
destroyed by the system, and passed to the personality routine
|
||||
during unwinding. */
|
||||
struct _Unwind_Context;
|
||||
|
||||
/* Raise an exception, passing along the given exception object. */
|
||||
extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);
|
||||
|
||||
/* Raise an exception for forced unwinding. */
|
||||
|
||||
typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
|
||||
(int, _Unwind_Action, _Unwind_Exception_Class,
|
||||
struct _Unwind_Exception *, struct _Unwind_Context *, void *);
|
||||
|
||||
extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
|
||||
_Unwind_Stop_Fn,
|
||||
void *);
|
||||
|
||||
/* Helper to invoke the exception_cleanup routine. */
|
||||
extern void _Unwind_DeleteException (struct _Unwind_Exception *);
|
||||
|
||||
/* Resume propagation of an existing exception. This is used after
|
||||
e.g. executing cleanup code, and not to implement rethrowing. */
|
||||
extern void _Unwind_Resume (struct _Unwind_Exception *);
|
||||
|
||||
/* These functions are used for communicating information about the unwind
|
||||
context (i.e. the unwind descriptors and the user register state) between
|
||||
the unwind library and the personality routine and landing pad. Only
|
||||
selected registers maybe manipulated. */
|
||||
|
||||
extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int);
|
||||
extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word);
|
||||
|
||||
extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
|
||||
extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
|
||||
|
||||
extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
|
||||
|
||||
extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
|
||||
|
||||
|
||||
/* The personality routine is the function in the C++ (or other language)
|
||||
runtime library which serves as an interface between the system unwind
|
||||
library and language-specific exception handling semantics. It is
|
||||
specific to the code fragment described by an unwind info block, and
|
||||
it is always referenced via the pointer in the unwind info block, and
|
||||
hence it has no ABI-specified name.
|
||||
|
||||
Note that this implies that two different C++ implementations can
|
||||
use different names, and have different contents in the language
|
||||
specific data area. Moreover, that the language specific data
|
||||
area contains no version info because name of the function invoked
|
||||
provides more effective versioning by detecting at link time the
|
||||
lack of code to handle the different data format. */
|
||||
|
||||
typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
|
||||
(int, _Unwind_Action, _Unwind_Exception_Class,
|
||||
struct _Unwind_Exception *, struct _Unwind_Context *);
|
||||
|
||||
/* @@@ The following alternate entry points are for setjmp/longjmp
|
||||
based unwinding. */
|
||||
|
||||
struct SjLj_Function_Context;
|
||||
extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
|
||||
extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);
|
||||
|
||||
extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException
|
||||
(struct _Unwind_Exception *);
|
||||
extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind
|
||||
(struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
|
||||
extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *);
|
||||
|
||||
/* @@@ The following provide access to the base addresses for text
|
||||
and data-relative addressing in the LDSA. In order to stay link
|
||||
compatible with the standard ABI for IA-64, we inline these. */
|
||||
|
||||
#ifdef __ia64__
|
||||
#include <stdlib.h>
|
||||
|
||||
static inline _Unwind_Ptr
|
||||
_Unwind_GetDataRelBase (struct _Unwind_Context *_C)
|
||||
{
|
||||
/* The GP is stored in R1. */
|
||||
return _Unwind_GetGR (_C, 1);
|
||||
}
|
||||
|
||||
static inline _Unwind_Ptr
|
||||
_Unwind_GetTextRelBase (struct _Unwind_Context *_C)
|
||||
{
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
|
||||
extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
23
sysdeps/hppa/gccframe.h
Normal file
23
sysdeps/hppa/gccframe.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Definition of object in frame unwind info. hppa version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* Note: For hppa64 this is 61 */
|
||||
#define DWARF_FRAME_REGISTERS 89
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
28
sysdeps/i386/gccframe.h
Normal file
28
sysdeps/i386/gccframe.h
Normal file
@ -0,0 +1,28 @@
|
||||
/* Definition of object in frame unwind info. i386 version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define DWARF_FRAME_REGISTERS 17
|
||||
|
||||
#define CRT_GET_RFIB_DATA(BASE) \
|
||||
{ \
|
||||
register void *__ebx __asm__("ebx");\
|
||||
BASE = __ebx; \
|
||||
}
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
22
sysdeps/m68k/gccframe.h
Normal file
22
sysdeps/m68k/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. m68k version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 24
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
8
sysdeps/mach/hurd/configure
vendored
8
sysdeps/mach/hurd/configure
vendored
@ -9,3 +9,11 @@ inhibit_glue=yes
|
||||
if test "x$prefix" != x; then
|
||||
echo "configure: warning: --prefix= (empty) is required for GNU/Hurd to work normally" 1>&2
|
||||
fi
|
||||
|
||||
case "$machine" in
|
||||
i386*)
|
||||
if test -z "$oldest_abi" || test "$oldest_abi" < "2.2.5"; then
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
@ -11,3 +11,11 @@ inhibit_glue=yes
|
||||
if test "x$prefix" != x; then
|
||||
AC_MSG_WARN([--prefix= (empty) is required for GNU/Hurd to work normally])
|
||||
fi
|
||||
|
||||
case "$machine" in
|
||||
i386*)
|
||||
if test -z "$oldest_abi" || test "$oldest_abi" < "2.2.5"; then
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
7
sysdeps/mach/hurd/i386/Makefile
Normal file
7
sysdeps/mach/hurd/i386/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
ifeq ($(subdir),elf)
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
@ -2,7 +2,6 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
}
|
||||
}
|
||||
|
22
sysdeps/mips/gccframe.h
Normal file
22
sysdeps/mips/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. mips version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 76
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
22
sysdeps/powerpc/gccframe.h
Normal file
22
sysdeps/powerpc/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. powerpc version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define DWARF_FRAME_REGISTERS 77
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
22
sysdeps/s390/gccframe.h
Normal file
22
sysdeps/s390/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. s390 version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 34
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
22
sysdeps/sh/gccframe.h
Normal file
22
sysdeps/sh/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. sh version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define DWARF_FRAME_REGISTERS 49
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
22
sysdeps/sparc/gccframe.h
Normal file
22
sysdeps/sparc/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. sparc version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 101
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
@ -23,3 +23,11 @@ ifeq ($(subdir),signal)
|
||||
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
|
||||
rt_sigqueueinfo rt_sigaction rt_sigpending
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
@ -6,8 +6,7 @@ libc {
|
||||
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
|
||||
# b*
|
||||
bus_base; bus_base_sparse;
|
||||
|
@ -19,4 +19,10 @@ sysdep-dl-routines += dl-procinfo
|
||||
sysdep_routines += dl-procinfo
|
||||
# extra shared linker files to link only into dl-allobjs.so
|
||||
sysdep-rtld-routines += dl-procinfo
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
}
|
||||
GLIBC_2.1 {
|
||||
ioperm; iopl;
|
||||
|
27
sysdeps/unix/sysv/linux/configure
vendored
27
sysdeps/unix/sysv/linux/configure
vendored
@ -54,6 +54,11 @@ fi
|
||||
case "$machine" in
|
||||
alpha*)
|
||||
arch_minimum_kernel=2.1.100
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
;;
|
||||
i386*)
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
arch_minimum_kernel=2.0.10
|
||||
;;
|
||||
ia64*)
|
||||
arch_minimum_kernel=2.4.0
|
||||
@ -63,9 +68,19 @@ case "$machine" in
|
||||
;;
|
||||
mips*)
|
||||
arch_minimum_kernel=2.2.15
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
;;
|
||||
powerpc)
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
arch_minimum_kernel=2.0.10
|
||||
;;
|
||||
sh*)
|
||||
arch_minimum_kernel=2.3.99
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
;;
|
||||
sparc*)
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
arch_minimum_kernel=2.0.10
|
||||
;;
|
||||
x86_64*)
|
||||
arch_minimum_kernel=2.4.0
|
||||
@ -91,11 +106,11 @@ fi
|
||||
|
||||
if test -n "$minimum_kernel"; then
|
||||
echo $ac_n "checking for kernel header at least $minimum_kernel""... $ac_c" 1>&6
|
||||
echo "configure:95: checking for kernel header at least $minimum_kernel" >&5
|
||||
echo "configure:110: checking for kernel header at least $minimum_kernel" >&5
|
||||
decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
|
||||
abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 99 "configure"
|
||||
#line 114 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <linux/version.h>
|
||||
#if LINUX_VERSION_CODE < $decnum
|
||||
@ -128,6 +143,12 @@ EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
# The result of the above test for the use of the FDE code is invalid if
|
||||
# the user overrides the decision about the minimum ABI.
|
||||
if test "$oldest_abi" != default && test "2.2.4" \< "$oldest_abi"; then
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
fi
|
||||
|
||||
if test -n "$sysheaders"; then
|
||||
CPPFLAGS=$OLD_CPPFLAGS
|
||||
fi
|
||||
@ -219,7 +240,7 @@ if test $host = $build; then
|
||||
ac_prefix=$ac_default_prefix
|
||||
fi
|
||||
echo $ac_n "checking for symlinks in ${ac_prefix}/include""... $ac_c" 1>&6
|
||||
echo "configure:223: checking for symlinks in ${ac_prefix}/include" >&5
|
||||
echo "configure:244: checking for symlinks in ${ac_prefix}/include" >&5
|
||||
ac_message=
|
||||
if test -L ${ac_prefix}/include/net; then
|
||||
ac_message="$ac_message
|
||||
|
@ -41,6 +41,11 @@ fi
|
||||
case "$machine" in
|
||||
alpha*)
|
||||
arch_minimum_kernel=2.1.100
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
;;
|
||||
i386*)
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
arch_minimum_kernel=2.0.10
|
||||
;;
|
||||
ia64*)
|
||||
arch_minimum_kernel=2.4.0
|
||||
@ -50,9 +55,19 @@ case "$machine" in
|
||||
;;
|
||||
mips*)
|
||||
arch_minimum_kernel=2.2.15
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
;;
|
||||
powerpc)
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
arch_minimum_kernel=2.0.10
|
||||
;;
|
||||
sh*)
|
||||
arch_minimum_kernel=2.3.99
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
;;
|
||||
sparc*)
|
||||
libc_cv_gcc_unwind_find_fde=yes
|
||||
arch_minimum_kernel=2.0.10
|
||||
;;
|
||||
x86_64*)
|
||||
arch_minimum_kernel=2.4.0
|
||||
@ -96,6 +111,12 @@ eat flaming death
|
||||
fi
|
||||
fi
|
||||
|
||||
# The result of the above test for the use of the FDE code is invalid if
|
||||
# the user overrides the decision about the minimum ABI.
|
||||
if test "$oldest_abi" != default && test "2.2.4" \< "$oldest_abi"; then
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
fi
|
||||
|
||||
if test -n "$sysheaders"; then
|
||||
CPPFLAGS=$OLD_CPPFLAGS
|
||||
fi
|
||||
|
@ -12,6 +12,12 @@ sysdep-dl-routines += dl-procinfo
|
||||
sysdep_routines += dl-procinfo
|
||||
# extra shared linker files to link only into dl-allobjs.so
|
||||
sysdep-rtld-routines += dl-procinfo
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),resource)
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
|
||||
ioperm; iopl;
|
||||
|
||||
|
1
sysdeps/unix/sysv/linux/ia64/unwind-dw2-fde.c
Normal file
1
sysdeps/unix/sysv/linux/ia64/unwind-dw2-fde.c
Normal file
@ -0,0 +1 @@
|
||||
/* Linux/ia64 does not need unwind table registry. */
|
@ -10,6 +10,12 @@ endif
|
||||
ifeq ($(subdir),elf)
|
||||
sysdep-others += lddlibc4
|
||||
install-bin += lddlibc4
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),resource)
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
|
||||
# c*
|
||||
cacheflush;
|
||||
|
@ -9,3 +9,11 @@ sysdep_routines += cachectl cacheflush sysmips _test_and_set
|
||||
|
||||
sysdep_headers += sys/cachectl.h sys/sysmips.h sys/tas.h
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
|
||||
# Needed by gcc:
|
||||
_flush_cache;
|
||||
|
@ -6,3 +6,11 @@ endif
|
||||
ifeq ($(subdir),resource)
|
||||
sysdep_routines += oldgetrlimit64
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
}
|
||||
GLIBC_2.2 {
|
||||
# functions used in other libraries
|
||||
|
@ -6,3 +6,11 @@ endif
|
||||
ifeq ($(subdir),resource)
|
||||
sysdep_routines += oldgetrlimit64
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
}
|
||||
GLIBC_2.2 {
|
||||
# functions used in other libraries
|
||||
|
@ -42,3 +42,11 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscal
|
||||
mv -f $(@:.h=.d)-t2 $(@:.h=.d)
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
ifeq (yes,$(build-shared))
|
||||
# This is needed to support g++ v2 and v3.
|
||||
sysdep_routines += framestate
|
||||
shared-only-routines += framestate
|
||||
endif
|
||||
endif
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
}
|
||||
GLIBC_2.2 {
|
||||
# functions used in other libraries
|
||||
|
@ -2,8 +2,7 @@ libc {
|
||||
GLIBC_2.0 {
|
||||
# Exception handling support functions from libgcc
|
||||
__register_frame; __register_frame_table; __deregister_frame;
|
||||
__register_frame_info; __deregister_frame_info; __frame_state_for;
|
||||
__register_frame_info_table;
|
||||
__frame_state_for; __register_frame_info_table;
|
||||
}
|
||||
GLIBC_2.2.2 {
|
||||
# w*
|
||||
|
22
sysdeps/vax/gccframe.h
Normal file
22
sysdeps/vax/gccframe.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of object in frame unwind info. vax version.
|
||||
Copyright (C) 2001 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#define DWARF_FRAME_REGISTERS 16
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
Loading…
Reference in New Issue
Block a user