2004-02-19  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/generic/libc-start.c [LIBC_START_DISABLE_INLINE] (STATIC):
	Define as static.
	* sysdeps/powerpc/elf/libc-start.c: Define LIBC_START_DISABLE_INLINE
	because gcc does not allow inline of functions that call setjmp.

2004-02-19  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/powerpc/powerpc64/Makefile: Use -finline-limit.

2004-02-19  Jakub Jelinek  <jakub@redhat.com>

	* elf/rtld.c (_dl_argv): If DL_ARGV_NOT_RELRO defined, don't
	use attribute_relro for _dl_argv.
	* sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
	* sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
	* sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
	* sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Define.

	vfork instead of fork.
This commit is contained in:
Ulrich Drepper 2004-02-20 06:07:55 +00:00
parent 64d2a3790d
commit 11986c680d
11 changed files with 57 additions and 7 deletions

View File

@ -1,7 +1,27 @@
2004-02-19 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/generic/libc-start.c [LIBC_START_DISABLE_INLINE] (STATIC):
Define as static.
* sysdeps/powerpc/elf/libc-start.c: Define LIBC_START_DISABLE_INLINE
because gcc does not allow inline of functions that call setjmp.
2004-02-19 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/Makefile: Use -finline-limit.
2004-02-19 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (_dl_argv): If DL_ARGV_NOT_RELRO defined, don't
use attribute_relro for _dl_argv.
* sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
* sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
* sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
* sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
2004-02-19 Ulrich Drepper <drepper@redhat.com>
* libio/iopopen.c (_IO_new_proc_open): It's not kosher to use
cfork instead of fork.
vfork instead of fork.
* libio/oldiopopen.c (_IO_old_proc_open): Likewise.
* sysdeps/unix/clock_settime.c (clock_settime): Fix typo which

View File

@ -68,7 +68,11 @@ enum mode { normal, list, verify, trace };
static void process_envvars (enum mode *modep);
int _dl_argc attribute_relro attribute_hidden;
#ifdef DL_ARGV_NOT_RELRO
char **_dl_argv = NULL;
#else
char **_dl_argv attribute_relro = NULL;
#endif
INTDEF(_dl_argv)
/* Nonzero if we were run directly. */

View File

@ -1,3 +1,8 @@
2004-02-19 Andreas Schwab <schwab@suse.de>
* sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
Fix last change.
2004-02-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S

View File

@ -73,7 +73,7 @@ pthread_barrier_wait (barrier)
unsigned int init_count = ibarrier->init_count;
/* If this was the last woken thread, unlock. */
if (atomic_exchange_and_add (ibarrier->left, 1) == init_count - 1)
if (atomic_exchange_and_add (&ibarrier->left, 1) == init_count - 1)
/* We are done. */
lll_unlock (ibarrier->lock);

View File

@ -293,6 +293,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
strong_alias (_dl_runtime_resolve, _dl_runtime_profile);
#endif
/* _dl_argv cannot be attribute_relro, because _dl_start_user below
might write into it after _dl_start returns. */
#define DL_ARGV_NOT_RELRO 1
/* Initial entry point code for the dynamic linker.
The C function `_dl_start' is the real entry point;
its return value is the user program's entry point. */

View File

@ -44,7 +44,11 @@ extern void __pthread_initialize_minimal (void)
#ifdef LIBC_START_MAIN
# define STATIC static inline __attribute__ ((always_inline))
# ifdef LIBC_START_DISABLE_INLINE
# define STATIC static
# else
# define STATIC static inline __attribute__ ((always_inline))
# endif
#else
# define STATIC
# define LIBC_START_MAIN BP_SYM (__libc_start_main)

View File

@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. IA-64 version.
Copyright (C) 1995-1997, 2000-2002, 2003 Free Software Foundation, Inc.
Copyright (C) 1995-1997, 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
@ -272,6 +272,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
#define DL_STACK_END(cookie) \
((void *) (((long) (cookie)) - 16))
/* _dl_argv cannot be attribute_relro, because _dl_start_user below
might write into it after _dl_start returns. */
#define DL_ARGV_NOT_RELRO 1
/* Initial entry point code for the dynamic linker.
The C function `_dl_start' is the real entry point;
its return value is the user program's entry point. */

View File

@ -49,6 +49,7 @@ __aux_init_cache (ElfW(auxv_t) *av)
/* The main work is done in the generic function. */
#define LIBC_START_MAIN generic_start_main
#define LIBC_START_DISABLE_INLINE
#define LIBC_START_MAIN_AUXVEC_ARG
#define MAIN_AUXVEC_ARG
#define INIT_MAIN_ARGS

View File

@ -20,5 +20,5 @@ endif
ifeq ($(subdir),elf)
# help gcc inline asm code from dl-machine.h
+cflags += --param max-inline-insns=2000
+cflags += -finline-limit=2000
endif

View File

@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. SPARC version.
Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
Copyright (C) 1996-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
@ -253,6 +253,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
#define DL_STACK_END(cookie) \
((void *) (((long) (cookie)) - (22 - 6) * 4))
/* _dl_argv cannot be attribute_relro, because _dl_start_user below
might write into it after _dl_start returns. */
#define DL_ARGV_NOT_RELRO 1
/* Initial entry point code for the dynamic linker.
The C function `_dl_start' is the real entry point;
its return value is the user program's entry point. */

View File

@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. Sparc64 version.
Copyright (C) 1997,1998,1999,2000,2001,2002, 2003
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -671,6 +671,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
#define DL_STACK_END(cookie) \
((void *) (((long) (cookie)) - (22 - 6) * 8 - STACK_BIAS))
/* _dl_argv cannot be attribute_relro, because _dl_start_user below
might write into it after _dl_start returns. */
#define DL_ARGV_NOT_RELRO 1
/* Initial entry point code for the dynamic linker.
The C function `_dl_start' is the real entry point;
its return value is the user program's entry point. */