mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
* configure.in: If init_array/fini_array support is not available,
bail out. * config.h.in: Remove trace of optional init_array/fini_array support. * config.make.in: Likewise. * csu/elf-init.c: Likewise. * dlfcn/dlfcn.c: Likewise. * elf/soinit.c: Likewise. * sysdeps/ia64/elf/initfinit.c: Likewise.
This commit is contained in:
parent
f06d38b39f
commit
ce33ee7caa
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
2005-11-05 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* configure.in: If init_array/fini_array support is not available,
|
||||||
|
bail out.
|
||||||
|
* config.h.in: Remove trace of optional init_array/fini_array support.
|
||||||
|
* config.make.in: Likewise.
|
||||||
|
* csu/elf-init.c: Likewise.
|
||||||
|
* dlfcn/dlfcn.c: Likewise.
|
||||||
|
* elf/soinit.c: Likewise.
|
||||||
|
* sysdeps/ia64/elf/initfinit.c: Likewise.
|
||||||
|
|
||||||
2005-11-04 Roland McGrath <roland@redhat.com>
|
2005-11-04 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* sysdeps/i386/configure.in (libc_mtune_example): Variable removed.
|
* sysdeps/i386/configure.in (libc_mtune_example): Variable removed.
|
||||||
|
@ -158,10 +158,6 @@
|
|||||||
/* Define if binutils support TLS handling. */
|
/* Define if binutils support TLS handling. */
|
||||||
#undef HAVE_TLS_SUPPORT
|
#undef HAVE_TLS_SUPPORT
|
||||||
|
|
||||||
/* Define if the linker supports .preinit_array/.init_array/.fini_array
|
|
||||||
sections. */
|
|
||||||
#undef HAVE_INITFINI_ARRAY
|
|
||||||
|
|
||||||
/* Define if the compiler's exception support is based on libunwind. */
|
/* Define if the compiler's exception support is based on libunwind. */
|
||||||
#undef HAVE_CC_WITH_LIBUNWIND
|
#undef HAVE_CC_WITH_LIBUNWIND
|
||||||
|
|
||||||
|
@ -53,7 +53,6 @@ with-fp = @with_fp@
|
|||||||
with-cvs = @with_cvs@
|
with-cvs = @with_cvs@
|
||||||
old-glibc-headers = @old_glibc_headers@
|
old-glibc-headers = @old_glibc_headers@
|
||||||
unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
|
unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
|
||||||
have-initfini-array = @libc_cv_initfinit_array@
|
|
||||||
have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
|
have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
|
||||||
enable-check-abi = @enable_check_abi@
|
enable-check-abi = @enable_check_abi@
|
||||||
have-forced-unwind = @libc_cv_forced_unwind@
|
have-forced-unwind = @libc_cv_forced_unwind@
|
||||||
|
25
configure
vendored
25
configure
vendored
@ -313,7 +313,7 @@ ac_includes_default="\
|
|||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif"
|
#endif"
|
||||||
|
|
||||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_cc_with_libunwind libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_z_relro libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie fno_unit_at_a_time libc_cv_ssp libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
|
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_cc_with_libunwind libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_z_relro libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie fno_unit_at_a_time libc_cv_ssp libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
|
||||||
ac_subst_files=''
|
ac_subst_files=''
|
||||||
|
|
||||||
# Initialize some variables set by options.
|
# Initialize some variables set by options.
|
||||||
@ -5387,7 +5387,7 @@ _ACEOF
|
|||||||
|
|
||||||
echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
|
echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
|
||||||
echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
|
echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
|
||||||
if test "${libc_cv_initfinit_array+set}" = set; then
|
if test "${libc_cv_initfini_array+set}" = set; then
|
||||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
else
|
else
|
||||||
cat > conftest.c <<EOF
|
cat > conftest.c <<EOF
|
||||||
@ -5405,23 +5405,21 @@ EOF
|
|||||||
(exit $ac_status); }; }
|
(exit $ac_status); }; }
|
||||||
then
|
then
|
||||||
if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
|
if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
|
||||||
libc_cv_initfinit_array=yes
|
libc_cv_initfini_array=yes
|
||||||
else
|
else
|
||||||
libc_cv_initfinit_array=no
|
libc_cv_initfini_array=no
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
libc_cv_initfinit_array=no
|
libc_cv_initfini_array=no
|
||||||
fi
|
fi
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
fi
|
fi
|
||||||
echo "$as_me:$LINENO: result: $libc_cv_initfinit_array" >&5
|
echo "$as_me:$LINENO: result: $libc_cv_initfini_array" >&5
|
||||||
echo "${ECHO_T}$libc_cv_initfinit_array" >&6
|
echo "${ECHO_T}$libc_cv_initfini_array" >&6
|
||||||
|
if test $libc_cv_initfini_array != yes; then
|
||||||
if test $libc_cv_initfinit_array = yes; then
|
{ { echo "$as_me:$LINENO: error: Need linker with .init_array/.fini_array support." >&5
|
||||||
cat >>confdefs.h <<\_ACEOF
|
echo "$as_me: error: Need linker with .init_array/.fini_array support." >&2;}
|
||||||
#define HAVE_INITFINI_ARRAY 1
|
{ (exit 1); exit 1; }; }
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$as_me:$LINENO: checking for libunwind-support in compiler" >&5
|
echo "$as_me:$LINENO: checking for libunwind-support in compiler" >&5
|
||||||
@ -8454,7 +8452,6 @@ s,@INSTALL_INFO@,$INSTALL_INFO,;t t
|
|||||||
s,@BISON@,$BISON,;t t
|
s,@BISON@,$BISON,;t t
|
||||||
s,@VERSIONING@,$VERSIONING,;t t
|
s,@VERSIONING@,$VERSIONING,;t t
|
||||||
s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t
|
s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t
|
||||||
s,@libc_cv_initfinit_array@,$libc_cv_initfinit_array,;t t
|
|
||||||
s,@libc_cv_cc_with_libunwind@,$libc_cv_cc_with_libunwind,;t t
|
s,@libc_cv_cc_with_libunwind@,$libc_cv_cc_with_libunwind,;t t
|
||||||
s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t
|
s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t
|
||||||
s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
|
s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
|
||||||
|
13
configure.in
13
configure.in
@ -1257,7 +1257,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
|
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
|
||||||
libc_cv_initfinit_array, [dnl
|
libc_cv_initfini_array, [dnl
|
||||||
cat > conftest.c <<EOF
|
cat > conftest.c <<EOF
|
||||||
int _start (void) { return 0; }
|
int _start (void) { return 0; }
|
||||||
int __start (void) { return 0; }
|
int __start (void) { return 0; }
|
||||||
@ -1268,17 +1268,16 @@ EOF
|
|||||||
-static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
|
-static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
|
||||||
then
|
then
|
||||||
if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
|
if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
|
||||||
libc_cv_initfinit_array=yes
|
libc_cv_initfini_array=yes
|
||||||
else
|
else
|
||||||
libc_cv_initfinit_array=no
|
libc_cv_initfini_array=no
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
libc_cv_initfinit_array=no
|
libc_cv_initfini_array=no
|
||||||
fi
|
fi
|
||||||
rm -f conftest*])
|
rm -f conftest*])
|
||||||
AC_SUBST(libc_cv_initfinit_array)
|
if test $libc_cv_initfini_array != yes; then
|
||||||
if test $libc_cv_initfinit_array = yes; then
|
AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
|
||||||
AC_DEFINE(HAVE_INITFINI_ARRAY)
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CACHE_CHECK(for libunwind-support in compiler,
|
AC_CACHE_CHECK(for libunwind-support in compiler,
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
/* These magic symbols are provided by the linker. */
|
/* These magic symbols are provided by the linker. */
|
||||||
extern void (*__preinit_array_start []) (int, char **, char **)
|
extern void (*__preinit_array_start []) (int, char **, char **)
|
||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
@ -48,7 +48,7 @@ extern void (*__init_array_end []) (int, char **, char **)
|
|||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
extern void (*__fini_array_start []) (void) attribute_hidden;
|
extern void (*__fini_array_start []) (void) attribute_hidden;
|
||||||
extern void (*__fini_array_end []) (void) attribute_hidden;
|
extern void (*__fini_array_end []) (void) attribute_hidden;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* These function symbols are provided for the .init/.fini section entry
|
/* These function symbols are provided for the .init/.fini section entry
|
||||||
points automagically by the linker. */
|
points automagically by the linker. */
|
||||||
@ -63,11 +63,10 @@ extern void _fini (void);
|
|||||||
void
|
void
|
||||||
__libc_csu_init (int argc, char **argv, char **envp)
|
__libc_csu_init (int argc, char **argv, char **envp)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
/* For dynamically linked executables the preinit array is executed by
|
/* For dynamically linked executables the preinit array is executed by
|
||||||
the dynamic linker (before initializing any shared object. */
|
the dynamic linker (before initializing any shared object. */
|
||||||
|
|
||||||
# ifndef LIBC_NONSHARED
|
#ifndef LIBC_NONSHARED
|
||||||
/* For static executables, preinit happens rights before init. */
|
/* For static executables, preinit happens rights before init. */
|
||||||
{
|
{
|
||||||
const size_t size = __preinit_array_end - __preinit_array_start;
|
const size_t size = __preinit_array_end - __preinit_array_start;
|
||||||
@ -75,19 +74,13 @@ __libc_csu_init (int argc, char **argv, char **envp)
|
|||||||
for (i = 0; i < size; i++)
|
for (i = 0; i < size; i++)
|
||||||
(*__preinit_array_start [i]) (argc, argv, envp);
|
(*__preinit_array_start [i]) (argc, argv, envp);
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_init ();
|
_init ();
|
||||||
|
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
const size_t size = __init_array_end - __init_array_start;
|
||||||
{
|
for (size_t i = 0; i < size; i++)
|
||||||
const size_t size = __init_array_end - __init_array_start;
|
|
||||||
size_t i;
|
|
||||||
for (i = 0; i < size; i++)
|
|
||||||
(*__init_array_start [i]) (argc, argv, envp);
|
(*__init_array_start [i]) (argc, argv, envp);
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function should not be used anymore. We run the executable's
|
/* This function should not be used anymore. We run the executable's
|
||||||
@ -97,11 +90,9 @@ void
|
|||||||
__libc_csu_fini (void)
|
__libc_csu_fini (void)
|
||||||
{
|
{
|
||||||
#ifndef LIBC_NONSHARED
|
#ifndef LIBC_NONSHARED
|
||||||
# ifdef HAVE_INITFINI_ARRAY
|
|
||||||
size_t i = __fini_array_end - __fini_array_start;
|
size_t i = __fini_array_end - __fini_array_start;
|
||||||
while (i-- > 0)
|
while (i-- > 0)
|
||||||
(*__fini_array_start [i]) ();
|
(*__fini_array_start [i]) ();
|
||||||
# endif
|
|
||||||
|
|
||||||
_fini ();
|
_fini ();
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
int __dlfcn_argc attribute_hidden;
|
int __dlfcn_argc attribute_hidden;
|
||||||
char **__dlfcn_argv attribute_hidden;
|
char **__dlfcn_argv attribute_hidden;
|
||||||
|
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
static void
|
static void
|
||||||
init (int argc, char *argv[])
|
init (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -33,7 +33,7 @@ init (int argc, char *argv[])
|
|||||||
|
|
||||||
static void (*const init_array []) (int argc, char *argv[])
|
static void (*const init_array []) (int argc, char *argv[])
|
||||||
__attribute__ ((section (".init_array"), aligned (sizeof (void *))))
|
__attribute__ ((section (".init_array"), aligned (sizeof (void *))))
|
||||||
__attribute_used__ = { init };
|
__attribute_used__ =
|
||||||
#else
|
{
|
||||||
# error "Need linker with .init_array support."
|
init
|
||||||
#endif
|
};
|
||||||
|
@ -78,14 +78,8 @@ __libc_global_ctors (void)
|
|||||||
|
|
||||||
/* This function becomes the DT_FINI termination function
|
/* This function becomes the DT_FINI termination function
|
||||||
for the C library. */
|
for the C library. */
|
||||||
#ifndef HAVE_INITFINI_ARRAY
|
|
||||||
void _fini (void) __attribute__ ((section (".fini"))); /* Just for kicks. */
|
|
||||||
void
|
|
||||||
_fini (void)
|
|
||||||
#else
|
|
||||||
void
|
void
|
||||||
__libc_fini (void)
|
__libc_fini (void)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
/* Call destructor functions. */
|
/* Call destructor functions. */
|
||||||
run_hooks (__DTOR_LIST__);
|
run_hooks (__DTOR_LIST__);
|
||||||
@ -101,7 +95,6 @@ __libc_fini (void)
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
void (*_fini_ptr) (void) __attribute__ ((section (".fini_array")))
|
void (*_fini_ptr) (void) __attribute__ ((section (".fini_array")))
|
||||||
= &__libc_fini;
|
= &__libc_fini;
|
||||||
#endif
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2005-11-05 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Remove trace of
|
||||||
|
optional init_array/fini_array support.
|
||||||
|
|
||||||
2005-10-24 Roland McGrath <roland@redhat.com>
|
2005-10-24 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Remove unnecessary
|
* sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Remove unnecessary
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Special .init and .fini section support for ia64. NPTL version.
|
/* Special .init and .fini section support for ia64. NPTL version.
|
||||||
Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
Copyright (C) 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it
|
The GNU C Library is free software; you can redistribute it
|
||||||
@ -38,7 +38,6 @@
|
|||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
|
|
||||||
__asm__ ("\n\
|
__asm__ ("\n\
|
||||||
#include \"defs.h\"\n\
|
#include \"defs.h\"\n\
|
||||||
@ -49,95 +48,3 @@ __asm__ ("\n\
|
|||||||
.xdata8 \".init_array\",@fptr(__pthread_initialize_minimal_internal)\n\
|
.xdata8 \".init_array\",@fptr(__pthread_initialize_minimal_internal)\n\
|
||||||
/*@_init_PROLOG_ENDS*/\n\
|
/*@_init_PROLOG_ENDS*/\n\
|
||||||
");
|
");
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
__asm__ ("\n\
|
|
||||||
\n\
|
|
||||||
#include \"defs.h\"\n\
|
|
||||||
\n\
|
|
||||||
/*@HEADER_ENDS*/\n\
|
|
||||||
\n\
|
|
||||||
/*@_init_PROLOG_BEGINS*/\n\
|
|
||||||
.section .init\n\
|
|
||||||
.align 16\n\
|
|
||||||
.global _init#\n\
|
|
||||||
.proc _init#\n\
|
|
||||||
_init:\n\
|
|
||||||
.prologue\n\
|
|
||||||
.save ar.pfs, r34\n\
|
|
||||||
alloc r34 = ar.pfs, 0, 3, 0, 0\n\
|
|
||||||
.vframe r32\n\
|
|
||||||
mov r32 = r12\n\
|
|
||||||
.save rp, r33\n\
|
|
||||||
mov r33 = b0\n\
|
|
||||||
.body\n\
|
|
||||||
adds r12 = -16, r12\n\
|
|
||||||
;;\n\
|
|
||||||
st8 [r12] = gp, -16\n\
|
|
||||||
br.call.sptk.many b0 = __pthread_initialize_minimal_internal# ;;\n\
|
|
||||||
;;\n\
|
|
||||||
adds r12 = 16, r12\n\
|
|
||||||
;;\n\
|
|
||||||
ld8 gp = [r12]\n\
|
|
||||||
;;\n\
|
|
||||||
.endp _init#\n\
|
|
||||||
\n\
|
|
||||||
/*@_init_PROLOG_ENDS*/\n\
|
|
||||||
\n\
|
|
||||||
/*@_init_EPILOG_BEGINS*/\n\
|
|
||||||
.section .init\n\
|
|
||||||
.proc _init#\n\
|
|
||||||
.prologue\n\
|
|
||||||
.save ar.pfs, r34\n\
|
|
||||||
.vframe r32\n\
|
|
||||||
.save rp, r33\n\
|
|
||||||
.body\n\
|
|
||||||
mov r12 = r32\n\
|
|
||||||
mov ar.pfs = r34\n\
|
|
||||||
mov b0 = r33\n\
|
|
||||||
br.ret.sptk.many b0\n\
|
|
||||||
.endp _init#\n\
|
|
||||||
/*@_init_EPILOG_ENDS*/\n\
|
|
||||||
\n\
|
|
||||||
/*@_fini_PROLOG_BEGINS*/\n\
|
|
||||||
.section .fini\n\
|
|
||||||
.align 16\n\
|
|
||||||
.global _fini#\n\
|
|
||||||
.proc _fini#\n\
|
|
||||||
_fini:\n\
|
|
||||||
.prologue\n\
|
|
||||||
.save ar.pfs, r34\n\
|
|
||||||
alloc r34 = ar.pfs, 0, 3, 0, 0\n\
|
|
||||||
.vframe r32\n\
|
|
||||||
mov r32 = r12\n\
|
|
||||||
.save rp, r33\n\
|
|
||||||
mov r33 = b0\n\
|
|
||||||
.body\n\
|
|
||||||
adds r12 = -16, r12\n\
|
|
||||||
;;\n\
|
|
||||||
.endp _fini#\n\
|
|
||||||
\n\
|
|
||||||
/*@_fini_PROLOG_ENDS*/\n\
|
|
||||||
\n\
|
|
||||||
/*@_fini_EPILOG_BEGINS*/\n\
|
|
||||||
.section .fini\n\
|
|
||||||
.proc _fini#\n\
|
|
||||||
.prologue\n\
|
|
||||||
.save ar.pfs, r34\n\
|
|
||||||
.vframe r32\n\
|
|
||||||
.save rp, r33\n\
|
|
||||||
.body\n\
|
|
||||||
mov r12 = r32\n\
|
|
||||||
mov ar.pfs = r34\n\
|
|
||||||
mov b0 = r33\n\
|
|
||||||
br.ret.sptk.many b0\n\
|
|
||||||
.endp _fini#\n\
|
|
||||||
\n\
|
|
||||||
/*@_fini_EPILOG_ENDS*/\n\
|
|
||||||
\n\
|
|
||||||
/*@TRAILER_BEGINS*/\n\
|
|
||||||
.weak __gmon_start__#\n\
|
|
||||||
");
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Special .init and .fini section support for ia64.
|
/* Special .init and .fini section support for ia64.
|
||||||
Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
|
Copyright (C) 2000, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -51,7 +51,6 @@ __asm__ ("\n\n"
|
|||||||
"\n"
|
"\n"
|
||||||
"/*@_init_PROLOG_BEGINS*/\n");
|
"/*@_init_PROLOG_BEGINS*/\n");
|
||||||
|
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
|
|
||||||
/* If we have working .init_array support, we want to keep the .init
|
/* If we have working .init_array support, we want to keep the .init
|
||||||
section empty (apart from the mandatory prologue/epilogue. This
|
section empty (apart from the mandatory prologue/epilogue. This
|
||||||
@ -75,7 +74,6 @@ gmon_initializer (void)
|
|||||||
__asm__ (".section .init_array, \"aw\"\n"
|
__asm__ (".section .init_array, \"aw\"\n"
|
||||||
"\tdata8 @fptr(gmon_initializer)\n");
|
"\tdata8 @fptr(gmon_initializer)\n");
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
__asm__ (".section .init\n"
|
__asm__ (".section .init\n"
|
||||||
" .global _init#\n"
|
" .global _init#\n"
|
||||||
@ -90,27 +88,7 @@ __asm__ (".section .init\n"
|
|||||||
" mov r33 = b0\n"
|
" mov r33 = b0\n"
|
||||||
" .body\n"
|
" .body\n"
|
||||||
" adds r12 = -16, r12\n"
|
" adds r12 = -16, r12\n"
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
|
||||||
" ;;\n" /* see gmon_initializer() above */
|
" ;;\n" /* see gmon_initializer() above */
|
||||||
#else
|
|
||||||
" .weak __gmon_start__#\n"
|
|
||||||
" addl r14 = @ltoff(@fptr(__gmon_start__#)), gp\n"
|
|
||||||
" ;;\n"
|
|
||||||
" ld8 r15 = [r14]\n"
|
|
||||||
" ;;\n"
|
|
||||||
" cmp.eq p6, p7 = 0, r15\n"
|
|
||||||
" (p6) br.cond.dptk .L5\n"
|
|
||||||
"\n"
|
|
||||||
"/* we could use r35 to save gp, but we use the stack since that's what\n"
|
|
||||||
" * all the other init routines will do --davidm 00/04/05 */\n"
|
|
||||||
" st8 [r12] = gp, -16\n"
|
|
||||||
" br.call.sptk.many b0 = __gmon_start__# ;;\n"
|
|
||||||
" adds r12 = 16, r12\n"
|
|
||||||
" ;;\n"
|
|
||||||
" ld8 gp = [r12]\n"
|
|
||||||
" ;;\n"
|
|
||||||
".L5:\n"
|
|
||||||
#endif
|
|
||||||
" .endp _init#\n"
|
" .endp _init#\n"
|
||||||
"\n"
|
"\n"
|
||||||
"/*@_init_PROLOG_ENDS*/\n"
|
"/*@_init_PROLOG_ENDS*/\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user