about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile18
-rw-r--r--crt/rcrt1.c2
-rw-r--r--ldso/dlstart.c (renamed from src/ldso/dlstart.c)4
-rw-r--r--ldso/dynlink.c (renamed from src/ldso/dynlink.c)2
-rw-r--r--src/ldso/tlsdesc.c4
5 files changed, 11 insertions, 19 deletions
diff --git a/Makefile b/Makefile
index 3a60cfc0..7c2cd77b 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,8 @@ BASE_OBJS = $(patsubst $(srcdir)/%,%.o,$(basename $(BASE_SRCS)))
 ARCH_SRCS = $(wildcard $(srcdir)/src/*/$(ARCH)/*.[csS])
 ARCH_OBJS = $(patsubst $(srcdir)/%,%.o,$(basename $(ARCH_SRCS)))
 REPLACED_OBJS = $(sort $(subst /$(ARCH)/,/,$(ARCH_OBJS)))
+LDSO_SRCS = $(sort $(wildcard $(srcdir)/ldso/*.c))
+LDSO_OBJS = $(patsubst $(srcdir)/%,obj/%.lo,$(basename $(LDSO_SRCS)))
 OBJS = $(addprefix obj/, $(filter-out $(REPLACED_OBJS), $(sort $(BASE_OBJS) $(ARCH_OBJS))))
 LOBJS = $(OBJS:.o=.lo)
 GENH = obj/include/bits/alltypes.h
@@ -72,7 +74,7 @@ endif
 
 all: $(ALL_LIBS) $(ALL_TOOLS)
 
-OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(OBJS) $(GENH) $(GENH_INT))) $(addprefix obj/, crt crt/$(ARCH) include))
+OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(OBJS) $(LDSO_OBJS) $(GENH) $(GENH_INT))) $(addprefix obj/, crt crt/$(ARCH) include))
 
 $(ALL_LIBS) $(ALL_TOOLS) $(CRT_LIBS:lib/%=obj/crt/%) $(OBJS) $(LOBJS) $(GENH) $(GENH_INT): | $(OBJ_DIRS)
 
@@ -95,11 +97,11 @@ obj/src/internal/version.h: $(wildcard $(srcdir)/VERSION $(srcdir)/.git)
 
 obj/src/internal/version.o obj/src/internal/version.lo: obj/src/internal/version.h
 
-obj/crt/rcrt1.o obj/src/ldso/dlstart.lo obj/src/ldso/dynlink.lo: $(srcdir)/src/internal/dynlink.h $(srcdir)/arch/$(ARCH)/reloc.h
+obj/crt/rcrt1.o obj/ldso/dlstart.lo obj/ldso/dynlink.lo: $(srcdir)/src/internal/dynlink.h $(srcdir)/arch/$(ARCH)/reloc.h
 
-obj/crt/crt1.o obj/crt/scrt1.o obj/crt/rcrt1.o obj/src/ldso/dlstart.lo: $(srcdir)/arch/$(ARCH)/crt_arch.h
+obj/crt/crt1.o obj/crt/scrt1.o obj/crt/rcrt1.o obj/ldso/dlstart.lo: $(srcdir)/arch/$(ARCH)/crt_arch.h
 
-obj/crt/rcrt1.o: $(srcdir)/src/ldso/dlstart.c
+obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart.c
 
 obj/crt/Scrt1.o obj/crt/rcrt1.o: CFLAGS_ALL += -fPIC
 
@@ -117,12 +119,12 @@ NOSSP_SRCS = $(wildcard crt/*.c) \
 	src/env/__libc_start_main.c src/env/__init_tls.c \
 	src/thread/__set_thread_area.c src/env/__stack_chk_fail.c \
 	src/string/memset.c src/string/memcpy.c \
-	src/ldso/dlstart.c src/ldso/dynlink.c
+	ldso/dlstart.c ldso/dynlink.c
 $(NOSSP_SRCS:%.c=obj/%.o) $(NOSSP_SRCS:%.c=obj/%.lo): CFLAGS_ALL += $(CFLAGS_NOSSP)
 
 $(CRT_LIBS:lib/%=obj/crt/%): CFLAGS_ALL += -DCRT
 
-$(LOBJS): CFLAGS_ALL += -fPIC -DSHARED
+$(LOBJS) $(LDSO_OBJS): CFLAGS_ALL += -fPIC
 
 CC_CMD = $(CC) $(CFLAGS_ALL) -c -o $@ $<
 
@@ -151,10 +153,10 @@ obj/%.lo: $(srcdir)/%.S
 obj/%.lo: $(srcdir)/%.c $(GENH) $(IMPH)
 	$(CC_CMD)
 
-lib/libc.so: $(LOBJS)
+lib/libc.so: $(LOBJS) $(LDSO_OBJS)
 	$(CC) $(CFLAGS_ALL) $(LDFLAGS_ALL) -nostdlib -shared \
 	-Wl,-e,_dlstart -Wl,-Bsymbolic-functions \
-	-o $@ $(LOBJS) $(LIBCC)
+	-o $@ $(LOBJS) $(LDSO_OBJS) $(LIBCC)
 
 lib/libc.a: $(OBJS)
 	rm -f $@
diff --git a/crt/rcrt1.c b/crt/rcrt1.c
index 9be117fd..e763d0ab 100644
--- a/crt/rcrt1.c
+++ b/crt/rcrt1.c
@@ -1,7 +1,7 @@
 #define SHARED
 #define START "_start"
 #define _dlstart_c _start_c
-#include "../src/ldso/dlstart.c"
+#include "../ldso/dlstart.c"
 
 int main();
 void _init() __attribute__((weak));
diff --git a/src/ldso/dlstart.c b/ldso/dlstart.c
index 46f50114..4482d525 100644
--- a/src/ldso/dlstart.c
+++ b/ldso/dlstart.c
@@ -1,8 +1,6 @@
 #include <stddef.h>
 #include "dynlink.h"
 
-#ifdef SHARED
-
 #ifndef START
 #define START "_dlstart"
 #endif
@@ -146,5 +144,3 @@ void _dlstart_c(size_t *sp, size_t *dynv)
 	GETFUNCSYM(&dls2, __dls2, base+dyn[DT_PLTGOT]);
 	dls2((void *)base, sp);
 }
-
-#endif
diff --git a/src/ldso/dynlink.c b/ldso/dynlink.c
index e328679b..26a60b4c 100644
--- a/src/ldso/dynlink.c
+++ b/ldso/dynlink.c
@@ -1,4 +1,3 @@
-#ifdef SHARED
 #define _GNU_SOURCE
 #include <stdio.h>
 #include <stdlib.h>
@@ -1930,4 +1929,3 @@ static void error(const char *fmt, ...)
 	__dl_vseterr(fmt, ap);
 	va_end(ap);
 }
-#endif
diff --git a/src/ldso/tlsdesc.c b/src/ldso/tlsdesc.c
index 4bc654fa..a2985cb6 100644
--- a/src/ldso/tlsdesc.c
+++ b/src/ldso/tlsdesc.c
@@ -1,5 +1,3 @@
-#ifdef SHARED
-
 #include <stddef.h>
 #include "libc.h"
 
@@ -12,5 +10,3 @@ ptrdiff_t __tlsdesc_static()
 }
 
 weak_alias(__tlsdesc_static, __tlsdesc_dynamic);
-
-#endif