Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 28 May 2003 19:56:24 +0000 (19:56 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 28 May 2003 19:56:24 +0000 (19:56 +0000)
2003-05-28  Ulrich Drepper  <drepper@redhat.com>

* include/libc-symbols.h: Define hidden attribute for real also if
LIBC_NONSHARED is defined.  Patch by Jakub Jelinek.

* csu/Makefile: Add rules to build Scrt1.o.
* sysdeps/i386/elf/start.S: Make code compilable with SHARED.

ChangeLog
csu/Makefile
include/libc-symbols.h
nptl/Banner
sysdeps/i386/elf/start.S

index 74fdd21..13679e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2003-05-28  Ulrich Drepper  <drepper@redhat.com>
+
+       * include/libc-symbols.h: Define hidden attribute for real also if
+       LIBC_NONSHARED is defined.  Patch by Jakub Jelinek.
+
+       * csu/Makefile: Add rules to build Scrt1.o.
+       * sysdeps/i386/elf/start.S: Make code compilable with SHARED.
+
 2003-05-27  Jakub Jelinek  <jakub@redhat.com>
 
        * stdio-common/vfprintf.c (process_arg, process_string_arg): Use
 2003-05-27  Jakub Jelinek  <jakub@redhat.com>
 
        * stdio-common/vfprintf.c (process_arg, process_string_arg): Use
index 0920f97..3adb093 100644 (file)
@@ -31,11 +31,12 @@ routines = init-first libc-start $(libc-init) sysdep version check_fds \
 aux     = errno
 elide-routines.os = libc-tls
 static-only-routines = elf-init
 aux     = errno
 elide-routines.os = libc-tls
 static-only-routines = elf-init
-csu-dummies = $(filter-out $(start-installed-name),crt1.o Mcrt1.o)
+csu-dummies = $(filter-out $(start-installed-name),crt1.o Scrt1.o Mcrt1.o)
 extra-objs = start.o gmon-start.o \
             $(start-installed-name) g$(start-installed-name) $(csu-dummies)
 omit-deps = $(patsubst %.o,%,$(start-installed-name) g$(start-installed-name) \
 extra-objs = start.o gmon-start.o \
             $(start-installed-name) g$(start-installed-name) $(csu-dummies)
 omit-deps = $(patsubst %.o,%,$(start-installed-name) g$(start-installed-name) \
-                             b$(start-installed-name) $(csu-dummies))
+                            b$(start-installed-name) $(csu-dummies) \
+                            S$(start-installed-name))
 install-lib = $(start-installed-name) g$(start-installed-name) $(csu-dummies)
 distribute = initfini.c gmon-start.c start.c defs.awk munch.awk \
             abi-note.S init.c munch-tmpl.c not-cancel.h
 install-lib = $(start-installed-name) g$(start-installed-name) $(csu-dummies)
 distribute = initfini.c gmon-start.c start.c defs.awk munch.awk \
             abi-note.S init.c munch-tmpl.c not-cancel.h
@@ -49,6 +50,11 @@ all: # Make this the default target; it will be defined in Rules.
 
 include ../Makeconfig
 
 
 include ../Makeconfig
 
+ifeq (yes,$(build-shared))
+extra-objs += S$(start-installed-name)
+install-lib += S$(start-installed-name)
+endif
+
 ifeq (yes,$(build-bounded))
 extra-objs += b$(start-installed-name)
 install-lib += b$(start-installed-name)
 ifeq (yes,$(build-bounded))
 extra-objs += b$(start-installed-name)
 install-lib += b$(start-installed-name)
@@ -149,6 +155,9 @@ ifeq (yes,$(elf))
 $(objpfx)$(start-installed-name): $(objpfx)start.o $(objpfx)abi-note.o \
                                  $(objpfx)init.o
        $(link-relocatable)
 $(objpfx)$(start-installed-name): $(objpfx)start.o $(objpfx)abi-note.o \
                                  $(objpfx)init.o
        $(link-relocatable)
+$(objpfx)S$(start-installed-name): $(objpfx)start.os $(objpfx)abi-note.o \
+                                 $(objpfx)init.o
+       $(link-relocatable)
 $(objpfx)b$(start-installed-name): $(objpfx)start.ob $(objpfx)abi-note.ob \
                                  $(objpfx)init.ob
        $(link-relocatable)
 $(objpfx)b$(start-installed-name): $(objpfx)start.ob $(objpfx)abi-note.ob \
                                  $(objpfx)init.ob
        $(link-relocatable)
@@ -158,6 +167,9 @@ else
 $(objpfx)$(start-installed-name): $(objpfx)start.o
        rm -f $@
        ln $< $@
 $(objpfx)$(start-installed-name): $(objpfx)start.o
        rm -f $@
        ln $< $@
+$(objpfx)S$(start-installed-name): $(objpfx)start.os
+       rm -f $@
+       ln $< $@
 $(objpfx)b$(start-installed-name): $(objpfx)start.ob
        rm -f $@
        ln $< $@
 $(objpfx)b$(start-installed-name): $(objpfx)start.ob
        rm -f $@
        ln $< $@
@@ -174,7 +186,8 @@ $(addprefix $(objpfx),$(sort g$(start-installed-name) \
 
 # These extra files are sometimes expected by system standard linking
 # procedures, but we have nothing for them to do.  So compile empty files.
 
 # These extra files are sometimes expected by system standard linking
 # procedures, but we have nothing for them to do.  So compile empty files.
-$(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))):\
+$(addprefix $(objpfx),$(filter-out $(start-installed-name)\
+                                  S$(start-installed-name),$(csu-dummies))):\
   $(before-compile)
        $(COMPILE.c) -o $@ -x c /dev/null
 
   $(before-compile)
        $(COMPILE.c) -o $@ -x c /dev/null
 
index 58aff18..169f4d3 100644 (file)
   strong_alias(real, name)
 #endif
 
   strong_alias(real, name)
 #endif
 
-#if defined HAVE_VISIBILITY_ATTRIBUTE && defined SHARED
+#if defined HAVE_VISIBILITY_ATTRIBUTE \
+    && (defined SHARED || defined LIBC_NONSHARED)
 # define attribute_hidden __attribute__ ((visibility ("hidden")))
 #else
 # define attribute_hidden
 # define attribute_hidden __attribute__ ((visibility ("hidden")))
 #else
 # define attribute_hidden
index 9c6edf7..415c8db 100644 (file)
@@ -1 +1 @@
-NPTL 0.40 by Ulrich Drepper
+NPTL 0.41 by Ulrich Drepper
index 355cba2..8a4fc36 100644 (file)
@@ -1,5 +1,5 @@
 /* Startup code compliant to the ELF i386 ABI.
 /* Startup code compliant to the ELF i386 ABI.
-   Copyright (C) 1995,1996,1997,1998,2000,2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998,2000,2001,2002,2003 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
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -67,6 +67,27 @@ _start:
        pushl %edx              /* Push address of the shared library
                                   termination function.  */
 
        pushl %edx              /* Push address of the shared library
                                   termination function.  */
 
+#ifdef SHARED
+       /* Load PIC register.  */
+       call 1f
+       addl $_GLOBAL_OFFSET_TABLE_, %ebx
+
+       /* Push address of our own entry points to .fini and .init.  */
+       leal __libc_csu_fini@GOTOFF(%ebx), %eax
+       pushl %eax
+       leal __libc_csu_init@GOTOFF(%ebx), %eax
+       pushl %eax
+
+       pushl %ecx              /* Push second argument: argv.  */
+       pushl %esi              /* Push first argument: argc.  */
+
+       leal BP_SYM (main)@GOTOFF(%ebx), %eax
+       pushl %eax
+
+       /* Call the user's main function, and exit with its value.
+          But let the libc call main.    */
+       call BP_SYM (__libc_start_main)@PLT
+#else
        /* Push address of our own entry points to .fini and .init.  */
        pushl $__libc_csu_fini
        pushl $__libc_csu_init
        /* Push address of our own entry points to .fini and .init.  */
        pushl $__libc_csu_fini
        pushl $__libc_csu_init
@@ -79,9 +100,15 @@ _start:
        /* Call the user's main function, and exit with its value.
           But let the libc call main.    */
        call BP_SYM (__libc_start_main)
        /* Call the user's main function, and exit with its value.
           But let the libc call main.    */
        call BP_SYM (__libc_start_main)
+#endif
 
        hlt                     /* Crash if somehow `exit' does return.  */
 
 
        hlt                     /* Crash if somehow `exit' does return.  */
 
+#ifdef SHARED
+1:     movl    (%esp), %ebx
+       ret
+#endif
+
 /* To fulfill the System V/i386 ABI we need this symbol.  Yuck, it's so
    meaningless since we don't support machines < 80386.  */
        .section .rodata
 /* To fulfill the System V/i386 ABI we need this symbol.  Yuck, it's so
    meaningless since we don't support machines < 80386.  */
        .section .rodata