+2004-01-13 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/dl-machine.h: Include <tls.h>.
+
+ * elf/rtld.c (_dl_start_final): Initialze __libc_stack_end here.
+ * sysdeps/generic/dl-sysdep.c: Define __libc_stack_end with
+ rtld_hidden_def and move into .data.rel.ro section.
+ * sysdeps/generic/ldsodefs.h: Declare __libc_stack_end with
+ rtld_hidden_proto.
+ * sysdeps/generic/libc-start.c: Only initialize __libc_stack_end here
+ if !SHARED.
+
2004-01-13 Richard Henderson <rth@redhat.com>
* sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Fix typo.
2004-01-13 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/dl-execstack.c
+ (_dl_make_stack_executable): Move common code in front. Use
+ __builtin_expect.
+
* sysdeps/unix/sysv/linux/dl-execstack.c: Change interface. Add
challenge for caller.
* sysdeps/generic/ldsodefs.h: Change declaration and type of hook
HP_TIMING_NOW (GL(dl_cpuclock_offset));
#endif
+ /* Initialize the stack end variable. */
+ __libc_stack_end = __builtin_frame_address (0);
+
/* Call the OS-dependent function to set up life so we can do things like
file access. It will call `dl_main' (below) to do all the real work
of the dynamic linker, and then unwind our frame and run the user
/* Operating system support for run-time dynamic linker. Generic Unix version.
- Copyright (C) 1995-1998, 2000-2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998, 2000-2003, 2004 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
int __libc_multiple_libcs = 0; /* Defining this here avoids the inclusion
of init-first. */
/* This variable contains the lowest stack address ever used. */
-void *__libc_stack_end;
+void *__libc_stack_end __attribute__ ((section (".data.rel.ro")));
+rtld_hidden_def(__libc_stack_end)
static ElfW(auxv_t) *_dl_auxv;
#ifndef DL_FIND_ARG_COMPONENTS
extern int _dl_make_stack_executable (void **stack_endp) internal_function;
rtld_hidden_proto (_dl_make_stack_executable)
+/* Variable pointing to the end of the stack (or close to it). This value
+ must be constant over the runtime of the application. Some programs
+ might use the variable which results in copy relocations on some
+ platforms. But this does not matter, ld.so can always use the local
+ copy. */
+extern void *__libc_stack_end;
+rtld_hidden_proto (__libc_stack_end)
+
/* Parameters passed to the dynamic linker. */
extern int _dl_argc attribute_hidden;
extern char **_dl_argv;
-/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2003, 2004 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
INIT_ARGV_and_ENVIRON;
- /* Store the lowest stack address. */
+#ifndef SHARED
+ /* Store the lowest stack address. This is done in ld.so if this is
+ the code for the DSO. */
__libc_stack_end = stack_end;
-#ifndef SHARED
# ifdef HAVE_AUX_VECTOR
/* First process the auxiliary vector since we need to find the
program header to locate an eventually present PT_TLS entry. */