crt1.o: provide symbol definition of __progname
authorJohn Marino <draco@marino.st>
Fri, 14 Oct 2011 23:38:11 +0000 (01:38 +0200)
committerJohn Marino <draco@marino.st>
Sat, 15 Oct 2011 09:27:32 +0000 (11:27 +0200)
When the linker version script requests "local: *", the linker chokes on
it because the weak __progname crt1.o symbol comes back undefined.

This is a duplicate definition to the ones provided by csu, but harmless
since the linker resolves it.

Also cleaned up some files involving libc_private.h that should have been
updated in previous changesets.

lib/csu/i386/Makefile.csu
lib/csu/i386/crt1_c.c
lib/libc/gen/getlogin.c
lib/libc/gen/setprogname.c
lib/libc/include/libc_private.h

index a36a188..62f6e91 100644 (file)
@@ -7,7 +7,8 @@ CLEANFILES+=    crt1.o crti.o crtn.o gcrt1.o Scrt1.o \
                crt1_c.o crt1_s.o gcrtl_c.o Scrt1_c.o
 WARNS?=                2
 
-CFLAGS+=       -I${CSUDIR}/../common
+CFLAGS+=       -I${CSUDIR}/../common \
+               -I${CSUDIR}/../../libc/include
 
 .PATH:         ${CSUDIR} ${CSUDIR}/../common
 
index f2462d7..a78ad5c 100644 (file)
 #include <machine/tls.h>
 #include <stddef.h>
 #include <stdlib.h>
+
+#include "libc_private.h"
 #include "crtbrand.c"
 
+extern int _DYNAMIC;
+#pragma weak _DYNAMIC
+
 typedef void (*fptr)(void);
 
 extern void _fini(void);
@@ -47,22 +52,21 @@ extern int eprol;
 extern int etext;
 #endif
 
-extern int _DYNAMIC;
-#pragma weak _DYNAMIC
-
 char **environ;
-char *__progname = "";
+const char *__progname = "";
+
 void _start1(fptr, int, char *[]) __dead2;
 
+/* The entry function, C part. */
 void
 _start1(fptr cleanup, int argc, char *argv[])
 {
     char **env;
+    const char *s;
 
     env = argv + argc + 1;
     environ = env;
-    if(argc > 0 && argv[0] != NULL) {
-       char *s;
+    if (argc > 0 && argv[0] != NULL) {
        __progname = argv[0];
        for (s = __progname; *s != '\0'; s++)
            if (*s == '/')
index 77f99a6..04726e6 100644 (file)
@@ -31,7 +31,6 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libc/gen/getlogin.c,v 1.4.2.1 2001/03/05 09:06:50 obrien Exp $
- * $DragonFly: src/lib/libc/gen/getlogin.c,v 1.4 2005/04/26 06:08:42 joerg Exp $
  *
  * @(#)getlogin.c      8.1 (Berkeley) 6/4/93
  */
@@ -47,7 +46,7 @@
 #include <pthread.h>
 #include "un-namespace.h"
 
-#include <libc_private.h>
+#include "libc_private.h"
 
 #define        THREAD_LOCK()   if (__isthreaded) _pthread_mutex_lock(&logname_mutex)
 #define        THREAD_UNLOCK() if (__isthreaded) _pthread_mutex_unlock(&logname_mutex)
index 5779b66..7fa8933 100644 (file)
@@ -1,12 +1,11 @@
 /*
  * $FreeBSD: src/lib/libc/gen/setprogname.c,v 1.1.2.4 2002/02/11 01:18:35 dd Exp $
- * $DragonFly: src/lib/libc/gen/setprogname.c,v 1.2 2003/06/17 04:26:42 dillon Exp $
  */
 
 #include <stdlib.h>
 #include <string.h>
 
-extern const char *__progname;
+#include "libc_private.h"
 
 void
 setprogname(const char *progname)
index f9c18b8..dcceee1 100644 (file)
@@ -80,7 +80,7 @@ int _yp_check(char **);
  * This is a pointer in the C run-time startup code. It is used
  * by getprogname() and setprogname().
  */
-extern const char *__progname;
+const char *__progname;
 
 /*
  * Function to clean up streams, called from abort() and exit().