* 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.
This commit is contained in:
Roland McGrath 2002-09-03 02:45:12 +00:00
parent a37a5055dc
commit a2c396f8a9
4 changed files with 53 additions and 5 deletions

View File

@ -1,3 +1,17 @@
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> 2002-09-02 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.2.93. * version.h (VERSION): Bump to 2.2.93.

View File

@ -46,6 +46,11 @@ shared-only-routines += divdi3 libgcc-compat
endif endif
endif endif
ifeq ($(subdir):$(elf),linuxthreads:yes)
# See CFLAGS-initfini.s above; this is the same code.
CFLAGS-pt-initfini.s = -g0 -fpic -O1
endif
ifeq ($(subdir),string) ifeq ($(subdir),string)
CFLAGS-memcmp.c += -Wno-uninitialized CFLAGS-memcmp.c += -Wno-uninitialized
endif endif

View File

@ -33,6 +33,15 @@ weak_extern (__cache_line_size)
extern int __libc_multiple_libcs; extern int __libc_multiple_libcs;
extern void *__libc_stack_end; 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 struct startup_info
{ {
void *__unbounded sda_base; void *__unbounded sda_base;
@ -121,6 +130,25 @@ BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
stack, for backtraces. This variable should be thread-specific. */ stack, for backtraces. This variable should be thread-specific. */
__libc_stack_end = stack_on_entry + 4; __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. */ /* Register the destructor of the dynamic linker if there is any. */
if (rtld_fini != NULL) if (rtld_fini != NULL)
__cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL); __cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);

View File

@ -48,9 +48,10 @@ shmat (shmid, shmaddr, shmflg)
length = shmds.shm_segsz; length = shmds.shm_segsz;
#endif #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), (long int) __ptrvalue (&raddr),
__ptrvalue (shmaddr)); __ptrvalue ((void *) shmaddr));
if ((unsigned long) result <= -(unsigned long) SHMLBA) if ((unsigned long) result <= -(unsigned long) SHMLBA)
result = raddr; result = raddr;