fix issues from public functions defined without declaration visible
authorRich Felker <dalias@aerifal.cx>
Thu, 6 Sep 2018 15:15:15 +0000 (11:15 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 12 Sep 2018 18:34:20 +0000 (14:34 -0400)
policy is that all public functions which have a public declaration
should be defined in a context where that public declaration is
visible, to avoid preventable type mismatches.

an audit performed using GCC's -Wmissing-declarations turned up the
violations corrected here. in some cases the public header had not
been included; in others, a feature test macro needed to make the
declaration visible had been omitted.

in the case of gethostent and getnetent, the omission seems to have
been intentional, as a hack to admit a single stub definition for both
functions. this kind of hack is no longer acceptable; it's UB and
would not fly with LTO or advanced toolchains. the hack is undone to
make exposure of the declarations possible.

src/legacy/utmpx.c
src/linux/brk.c
src/linux/clone.c
src/linux/sbrk.c
src/misc/getentropy.c
src/misc/issetugid.c
src/misc/syscall.c
src/network/ent.c
src/stdio/ext2.c
src/stdio/fwide.c
src/thread/pthread_setattr_default_np.c

index e2843c94af41271e482732fa31a4f9e8d6c363d5..fa69f3871a127b98ba7948872f29b4db0fe6acac 100644 (file)
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
 #include <utmpx.h>
 #include <stddef.h>
 #include <errno.h>
index ffdbbd52977579367c14ee1762f8c7318c78dd29..a6173e07f30d8cf6078fb5da5086a8fe332c2eaf 100644 (file)
@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <errno.h>
 #include "syscall.h"
 
index b9e5594530474c069a8559c009d2d5f5086b8908..8c1af7d3dc83e76a10cf7393aa6cbb5dc26111cf 100644 (file)
@@ -1,5 +1,7 @@
+#define _GNU_SOURCE
 #include <stdarg.h>
 #include <unistd.h>
+#include <sched.h>
 #include "pthread_impl.h"
 #include "syscall.h"
 
index 1e82d643771e4ad251253990264b0a5e42cfac3a..bb866305844413e7ccc790480e73c6820dc7de13 100644 (file)
@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <stdint.h>
 #include <errno.h>
 #include "syscall.h"
index 4c61ae261ea329295dd22e89a599733b190741ae..d2f282ce87f04a4320a91197b138fc55501984c9 100644 (file)
@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <sys/random.h>
 #include <pthread.h>
 #include <errno.h>
index 6ffd9300dd95aa707276c6e76d8e7c7ea2118262..ddc2ca0e02bdd245bb977c9eaff9a0adaa091b40 100644 (file)
@@ -1,3 +1,4 @@
+#define _BSD_SOURCE
 #include <unistd.h>
 #include "libc.h"
 
index 9d435a978579d6121f9c6b9eadbbc3a0a92fe778..6f3ef65639aa0da024f5d9d14b905ae688b0b6c7 100644 (file)
@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include "syscall.h"
 #include <stdarg.h>
 
index ececdc4866b0d8c8e56eb8d1996c7f8d9a04838d..5abea63787ebb68076bef2fa03b3cbf6f85cefc1 100644 (file)
@@ -1,10 +1,16 @@
+#include <netdb.h>
 #include "libc.h"
 
 void sethostent(int x)
 {
 }
 
-void *gethostent()
+struct hostent *gethostent()
+{
+       return 0;
+}
+
+struct netent *getnetent()
 {
        return 0;
 }
@@ -14,5 +20,4 @@ void endhostent(void)
 }
 
 weak_alias(sethostent, setnetent);
-weak_alias(gethostent, getnetent);
 weak_alias(endhostent, endnetent);
index f359be9af7622dbcadc42b2372839136970732a9..afd8b34e6ea6446db9a239f7ed0cdb4c4c6ba3a8 100644 (file)
@@ -1,4 +1,5 @@
 #include "stdio_impl.h"
+#include <stdio_ext.h>
 
 size_t __freadahead(FILE *f)
 {
index 8410b1530780d894e5afc2c9e9769011e75b0ac2..8bab634ae0b50ad4245d38b52c00c8e1762c6ab5 100644 (file)
@@ -1,3 +1,4 @@
+#include <wchar.h>
 #include "stdio_impl.h"
 #include "locale_impl.h"
 
index ffd2712b05602445068ec3edb9d9a2b9fc82c6cd..88503e343a4f21faf8cc5da8eab63426a6f3dad4 100644 (file)
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
 #include "pthread_impl.h"
 #include <string.h>