فهرست منبع

fix issues from public functions defined without declaration visible

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.
Rich Felker 6 سال پیش
والد
کامیت
c221d3e586
11فایلهای تغییر یافته به همراه22 افزوده شده و 2 حذف شده
  1. 1 0
      src/legacy/utmpx.c
  2. 2 0
      src/linux/brk.c
  3. 2 0
      src/linux/clone.c
  4. 2 0
      src/linux/sbrk.c
  5. 2 0
      src/misc/getentropy.c
  6. 1 0
      src/misc/issetugid.c
  7. 2 0
      src/misc/syscall.c
  8. 7 2
      src/network/ent.c
  9. 1 0
      src/stdio/ext2.c
  10. 1 0
      src/stdio/fwide.c
  11. 1 0
      src/thread/pthread_setattr_default_np.c

+ 1 - 0
src/legacy/utmpx.c

@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
 #include <utmpx.h>
 #include <stddef.h>
 #include <errno.h>

+ 2 - 0
src/linux/brk.c

@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <errno.h>
 #include "syscall.h"
 

+ 2 - 0
src/linux/clone.c

@@ -1,5 +1,7 @@
+#define _GNU_SOURCE
 #include <stdarg.h>
 #include <unistd.h>
+#include <sched.h>
 #include "pthread_impl.h"
 #include "syscall.h"
 

+ 2 - 0
src/linux/sbrk.c

@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <stdint.h>
 #include <errno.h>
 #include "syscall.h"

+ 2 - 0
src/misc/getentropy.c

@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <sys/random.h>
 #include <pthread.h>
 #include <errno.h>

+ 1 - 0
src/misc/issetugid.c

@@ -1,3 +1,4 @@
+#define _BSD_SOURCE
 #include <unistd.h>
 #include "libc.h"
 

+ 2 - 0
src/misc/syscall.c

@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+#include <unistd.h>
 #include "syscall.h"
 #include <stdarg.h>
 

+ 7 - 2
src/network/ent.c

@@ -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);

+ 1 - 0
src/stdio/ext2.c

@@ -1,4 +1,5 @@
 #include "stdio_impl.h"
+#include <stdio_ext.h>
 
 size_t __freadahead(FILE *f)
 {

+ 1 - 0
src/stdio/fwide.c

@@ -1,3 +1,4 @@
+#include <wchar.h>
 #include "stdio_impl.h"
 #include "locale_impl.h"
 

+ 1 - 0
src/thread/pthread_setattr_default_np.c

@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
 #include "pthread_impl.h"
 #include <string.h>