about summary refs log tree commit diff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2018-09-12 00:08:09 -0400
committerRich Felker <dalias@aerifal.cx>2018-09-12 14:34:37 -0400
commit5ce3737931bb411a8d167356d4d0287b53b0cbdc (patch)
tree726fc5dde9cc462316faa715158c38f0da72292d /src/internal
parent0676c3a34c7bf12b33f8f5efb92476f4ffc7f20e (diff)
downloadmusl-5ce3737931bb411a8d167356d4d0287b53b0cbdc.tar.gz
musl-5ce3737931bb411a8d167356d4d0287b53b0cbdc.tar.xz
musl-5ce3737931bb411a8d167356d4d0287b53b0cbdc.zip
reduce spurious inclusion of libc.h
libc.h was intended to be a header for access to global libc state and
related interfaces, but ended up included all over the place because
it was the way to get the weak_alias macro. most of the inclusions
removed here are places where weak_alias was needed. a few were
recently introduced for hidden. some go all the way back to when
libc.h defined CANCELPT_BEGIN and _END, and all (wrongly implemented)
cancellation points had to include it.

remaining spurious users are mostly callers of the LOCK/UNLOCK macros
and files that use the LFS64 macro to define the awful *64 aliases.

in a few places, new inclusion of libc.h is added because several
internal headers no longer implicitly include libc.h.

declarations for __lockfile and __unlockfile are moved from libc.h to
stdio_impl.h so that the latter does not need libc.h. putting them in
libc.h made no sense at all, since the macros in stdio_impl.h are
needed to use them correctly anyway.
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/dynlink.h2
-rw-r--r--src/internal/fdpic_crt.h2
-rw-r--r--src/internal/libc.h2
-rw-r--r--src/internal/malloc_impl.h1
-rw-r--r--src/internal/sh/__shcall.c2
-rw-r--r--src/internal/stdio_impl.h4
-rw-r--r--src/internal/syscall.h2
7 files changed, 7 insertions, 8 deletions
diff --git a/src/internal/dynlink.h b/src/internal/dynlink.h
index 90b6e481..cbe0a6fe 100644
--- a/src/internal/dynlink.h
+++ b/src/internal/dynlink.h
@@ -5,7 +5,7 @@
 #include <elf.h>
 #include <stdint.h>
 #include <stddef.h>
-#include "libc.h"
+#include <stdarg.h>
 
 #if UINTPTR_MAX == 0xffffffff
 typedef Elf32_Ehdr Ehdr;
diff --git a/src/internal/fdpic_crt.h b/src/internal/fdpic_crt.h
index 3c3f077d..7e9632bb 100644
--- a/src/internal/fdpic_crt.h
+++ b/src/internal/fdpic_crt.h
@@ -1,5 +1,5 @@
 #include <stdint.h>
-#include "libc.h"
+#include <features.h>
 
 hidden void *__fdpic_fixup(void *map, uintptr_t *a, uintptr_t *z)
 {
diff --git a/src/internal/libc.h b/src/internal/libc.h
index 155a299e..83ad3983 100644
--- a/src/internal/libc.h
+++ b/src/internal/libc.h
@@ -53,8 +53,6 @@ extern hidden const char __libc_version[];
 /* Designed to avoid any overhead in non-threaded processes */
 hidden void __lock(volatile int *);
 hidden void __unlock(volatile int *);
-hidden int __lockfile(FILE *);
-hidden void __unlockfile(FILE *);
 #define LOCK(x) __lock(x)
 #define UNLOCK(x) __unlock(x)
 
diff --git a/src/internal/malloc_impl.h b/src/internal/malloc_impl.h
index b6eacd87..59785a7f 100644
--- a/src/internal/malloc_impl.h
+++ b/src/internal/malloc_impl.h
@@ -1,7 +1,6 @@
 #ifndef MALLOC_IMPL_H
 #define MALLOC_IMPL_H
 
-#include "libc.h"
 #include <sys/mman.h>
 
 hidden void *__expand_heap(size_t *);
diff --git a/src/internal/sh/__shcall.c b/src/internal/sh/__shcall.c
index 23655904..4e073e8f 100644
--- a/src/internal/sh/__shcall.c
+++ b/src/internal/sh/__shcall.c
@@ -1,4 +1,4 @@
-#include "libc.h"
+#include <features.h>
 
 hidden int __shcall(void *arg, int (*func)(void *))
 {
diff --git a/src/internal/stdio_impl.h b/src/internal/stdio_impl.h
index 92f7be6c..4afb7ea2 100644
--- a/src/internal/stdio_impl.h
+++ b/src/internal/stdio_impl.h
@@ -3,7 +3,6 @@
 
 #include <stdio.h>
 #include "syscall.h"
-#include "libc.h"
 
 #define UNGET 8
 
@@ -54,6 +53,9 @@ extern hidden FILE *volatile __stdin_used;
 extern hidden FILE *volatile __stdout_used;
 extern hidden FILE *volatile __stderr_used;
 
+hidden int __lockfile(FILE *);
+hidden void __unlockfile(FILE *);
+
 hidden size_t __stdio_read(FILE *, unsigned char *, size_t);
 hidden size_t __stdio_write(FILE *, const unsigned char *, size_t);
 hidden size_t __stdout_write(FILE *, const unsigned char *, size_t);
diff --git a/src/internal/syscall.h b/src/internal/syscall.h
index 3cb0a772..da70ce92 100644
--- a/src/internal/syscall.h
+++ b/src/internal/syscall.h
@@ -1,8 +1,8 @@
 #ifndef _INTERNAL_SYSCALL_H
 #define _INTERNAL_SYSCALL_H
 
+#include <features.h>
 #include <sys/syscall.h>
-#include "libc.h"
 #include "syscall_arch.h"
 
 #ifndef SYSCALL_RLIM_INFINITY