libc: Raise WARNS to 1 and fix warnings.
authorSascha Wildner <saw@online.de>
Mon, 23 Sep 2013 18:33:02 +0000 (20:33 +0200)
committerSascha Wildner <saw@online.de>
Mon, 23 Sep 2013 18:33:40 +0000 (20:33 +0200)
* Raise the priorities of our constructor functions from 0 to 101 because
  0-100 are reserved priorities. This results in no change in object code
  (as per comparison using hexdump(1)).

* Provide a prototype for _pthread_init_early().

* Be less strict in the exclusion of gdtoa's files to also match the files
  outside contrib/ (in lib/libc/gdtoa/). Do the same for libc_rtld.

* Also fix an ignored attribute warning due to __thread being defined
  empty in libc_rtld.

Note that the most important aspect of this commit is that it causes libc
to no longer be built with -w (suppress all warnings). This was the result
of a hack we have to ignore warnings for gdtoa (which resides in contrib/).
But in conjunction with WARNS being 0 it led to -w being set for _all_
files of libc.

Removing -w causes all the warnings which are enabled by default (even
without any -W options) to trigger again, in addition the few -W options
that WARNS=1 actually sets.

Thanks to aggelos for useful clues.

lib/libc/Makefile
lib/libc/Makefile.inc
lib/libc/gen/_pthread_stubs.c
lib/libc/stdlib/dmalloc.c
lib/libc/stdlib/nmalloc.c
lib/libc_rtld/Makefile

index ec34b8b..c4ad1ce 100644 (file)
@@ -38,4 +38,4 @@ libkern.${MACHINE_ARCH}:: ${KMSRCS}
 .include <bsd.lib.mk>
 
 # Disable warnings in contributed sources.
-CWARNFLAGS:=   ${.IMPSRC:Ngdtoa_*.c:C/^.+$/${CWARNFLAGS}/:C/^$/-w/}
+CWARNFLAGS:=   ${.IMPSRC:N*dtoa*.c:C/^.+$/${CWARNFLAGS}/:C/^$/-w/}
index a7fd9bb..714fb6d 100644 (file)
@@ -10,7 +10,7 @@ MDASM=
 MIASM=
 NOASM=
 
-WARNS=0
+WARNS=1
 
 .include "${.CURDIR}/../libc/${MACHINE_ARCH}/Makefile.inc"
 
index d4e32a0..90a3444 100644 (file)
@@ -232,7 +232,8 @@ stub_exit(void)
  * If libpthread is loaded, make sure it is initialised before
  * other libraries call pthread functions
  */
-void _pthread_init(void) __constructor(0);
+void _pthread_init(void) __constructor(101);
+void _pthread_init_early(void);
 void
 _pthread_init(void)
 {
index 32a51e8..c2bf977 100644 (file)
@@ -322,7 +322,7 @@ static void *_vmem_alloc(int ri, size_t slab_size);
 static void _vmem_free(void *ptr, size_t slab_size);
 static void _mpanic(const char *ctl, ...) __printflike(1, 2);
 #ifndef STANDALONE_DEBUG
-static void malloc_init(void) __constructor(0);
+static void malloc_init(void) __constructor(101);
 #else
 static void malloc_init(void) __constructor(101);
 #endif
index 7c79013..e2ea54b 100644 (file)
@@ -297,9 +297,16 @@ typedef struct thr_mags {
        int             init;
 } thr_mags;
 
-/* With this attribute set, do not require a function call for accessing
- * this variable when the code is compiled -fPIC */
-#define TLS_ATTRIBUTE __attribute__ ((tls_model ("initial-exec")));
+/*
+ * With this attribute set, do not require a function call for accessing
+ * this variable when the code is compiled -fPIC. Empty for libc_rtld
+ * (like __thread).
+ */
+#ifdef __LIBC_RTLD
+#define TLS_ATTRIBUTE
+#else
+#define TLS_ATTRIBUTE __attribute__ ((tls_model ("initial-exec")))
+#endif
 
 static int mtmagazine_free_live;
 static __thread thr_mags thread_mags TLS_ATTRIBUTE;
@@ -345,7 +352,7 @@ static void mtmagazine_destructor(void *);
 static slzone_t zone_alloc(int flags);
 static void zone_free(void *z);
 static void _mpanic(const char *ctl, ...) __printflike(1, 2);
-static void malloc_init(void) __constructor(0);
+static void malloc_init(void) __constructor(101);
 #if defined(INVARIANTS)
 static void chunk_mark_allocated(slzone_t z, void *chunk);
 static void chunk_mark_free(slzone_t z, void *chunk);
index 5071540..8426038 100644 (file)
@@ -10,6 +10,7 @@ CFLAGS+=-I${.CURDIR}/../../include
 CFLAGS+=-I${.CURDIR}/../libc/${MACHINE_ARCH}
 CFLAGS+=-I${.OBJDIR}
 CFLAGS+=-D__thread=
+CFLAGS+=-D__LIBC_RTLD
 
 PRECIOUSLIB=   yes
 
@@ -37,3 +38,6 @@ HIDDEN_SYSCALLS= aio_suspend.o accept.o bind.o close.o connect.o dup.o dup2.o \
 .PATH:  ${.CURDIR}/../libc/resolv
 
 .include <bsd.lib.mk>
+
+# Disable warnings in contributed sources.
+CWARNFLAGS:=   ${.IMPSRC:N*dtoa*.c:C/^.+$/${CWARNFLAGS}/:C/^$/-w/}