+2002-09-02 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/powerpc/elf/libc-start.c [! SHARED]: Call
+ __pthread_initialize_minimal and __libc_check_standard_fds to
+ match the generic version.
+
+ * sysdeps/powerpc/Makefile (CFLAGS-pt-initfini.s): New variable.
+
+ * sysdeps/unix/sysv/linux/shmat.c (shmat): Add a cast to avoid a
+ warning when INLINE_SYSCALL macro uses the __syscall_ipc function.
+
+ * locale/localeconv.c (__localeconv): Cast -1 to char to avoid
+ warnings on platorms where char is unsigned.
+
2002-09-02 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.2.93.
extern int __libc_multiple_libcs;
extern void *__libc_stack_end;
+#ifndef SHARED
+# include <tls.h>
+extern void __pthread_initialize_minimal (void)
+# if !(USE_TLS - 0)
+ __attribute__ ((weak))
+# endif
+ ;
+#endif
+
struct startup_info
{
void *__unbounded sda_base;
/* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
verify that the static extern __cache_line_size is defined by checking
- for not NULL. If it is defined then assign the cache block size
+ for not NULL. If it is defined then assign the cache block size
value to __cache_line_size. */
static inline void
__aux_init_cache (ElfW(auxv_t) *av)
while (*temp != NULL)
++temp;
auxvec = (ElfW(auxv_t) *)++temp;
-
+
# ifndef SHARED
_dl_aux_init ((ElfW(auxv_t) *) auxvec);
}
INIT_ARGV_and_ENVIRON;
-
+
/* Initialize the __cache_line_size variable from the aux vector. */
__aux_init_cache((ElfW(auxv_t) *) auxvec);
stack, for backtraces. This variable should be thread-specific. */
__libc_stack_end = stack_on_entry + 4;
+#ifndef SHARED
+ /* Initialize the thread library at least a bit since the libgcc
+ functions are using thread functions if these are available and
+ we need to setup errno. If there is no thread library and we
+ handle TLS the function is defined in the libc to initialized the
+ TLS handling. */
+# if !(USE_TLS - 0)
+ if (__pthread_initialize_minimal)
+# endif
+ __pthread_initialize_minimal ();
+
+ /* Some security at this point. Prevent starting a SUID binary where
+ the standard file descriptors are not opened. We have to do this
+ only for statically linked applications since otherwise the dynamic
+ loader did the work already. */
+ if (__builtin_expect (__libc_enable_secure, 0))
+ __libc_check_standard_fds ();
+#endif
+
/* Register the destructor of the dynamic linker if there is any. */
if (rtld_fini != NULL)
__cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
length = shmds.shm_segsz;
#endif
- result = (void *__unbounded) INLINE_SYSCALL (ipc, 5, IPCOP_shmat, shmid, shmflg,
+ result = (void *__unbounded) INLINE_SYSCALL (ipc, 5, IPCOP_shmat,
+ shmid, shmflg,
(long int) __ptrvalue (&raddr),
- __ptrvalue (shmaddr));
+ __ptrvalue ((void *) shmaddr));
if ((unsigned long) result <= -(unsigned long) SHMLBA)
result = raddr;