diff --git a/Makefile b/Makefile index ffc4b8e565..7aceadf4aa 100644 --- a/Makefile +++ b/Makefile @@ -79,20 +79,19 @@ libs: \ $(BUILD)/$(PROFILE)/libc.so \ $(BUILD)/$(PROFILE)/crt0.o \ $(BUILD)/$(PROFILE)/crti.o \ - $(BUILD)/$(PROFILE)/crtn.o \ - $(BUILD)/$(PROFILE)/ld.so + $(BUILD)/$(PROFILE)/crtn.o install-libs: headers libs mkdir -pv "$(DESTDIR)/lib" cp -v "$(BUILD)/$(PROFILE)/libc.a" "$(DESTDIR)/lib" cp -v "$(BUILD)/$(PROFILE)/libc.so" "$(DESTDIR)/lib" ln -vnfs libc.so "$(DESTDIR)/lib/libc.so.6" + ln -vnfs libc.so "$(DESTDIR)/lib/$(LD_SONAME)" cp -v "$(BUILD)/$(PROFILE)/crt0.o" "$(DESTDIR)/lib" ln -vnfs crt0.o "$(DESTDIR)/lib/crt1.o" ln -vnfs crt0.o "$(DESTDIR)/lib/Scrt1.o" cp -v "$(BUILD)/$(PROFILE)/crti.o" "$(DESTDIR)/lib" cp -v "$(BUILD)/$(PROFILE)/crtn.o" "$(DESTDIR)/lib" - cp -v "$(BUILD)/$(PROFILE)/ld.so" "$(DESTDIR)/$(LD_SO_PATH)" ifeq ($(USE_RUST_LIBM),) cp -v "$(BUILD)/openlibm/libopenlibm.a" "$(DESTDIR)/lib/libm.a" else @@ -135,10 +134,16 @@ test-once: sysroot/$(TARGET) $(MAKE) -C tests run-once TESTBIN=$(TESTBIN) -$(BUILD)/$(PROFILE)/libc.so: $(BUILD)/$(PROFILE)/libc.a +$(BUILD)/$(PROFILE)/libc.so: $(BUILD)/$(PROFILE)/ld_so.o $(BUILD)/$(PROFILE)/libc.a + # Specifying a dynamic list makes all non-local `STV_DEFAULT` + # definitions non-preemptible, except for the symbols listed in + # `dynlst.txt`. So, the symbols defined in `dynlst.txt` may be + # interposed by other definitions at runtime (either from the + # executable or some shared library). $(CC) -nostdlib \ -shared \ -Wl,--gc-sections \ + -Wl,--dynamic-list=dynlst.txt \ -Wl,-z,pack-relative-relocs \ -Wl,--sort-common \ -Wl,--whole-archive $^ -Wl,--no-whole-archive \ @@ -146,14 +151,6 @@ $(BUILD)/$(PROFILE)/libc.so: $(BUILD)/$(PROFILE)/libc.a $(LINKFLAGS) \ -o $@ -$(BUILD)/$(PROFILE)/ld.so: $(BUILD)/$(PROFILE)/ld_so.o $(BUILD)/$(PROFILE)/libc.a - # Specifying a dynamic list makes all non-local `STV_DEFAULT` - # definitions non-preemptible, except for the symbols listed in - # `dynlst.txt`. So, the symbols defined in `dynlst.txt` may be - # interposed by other definitions at runtime (either from the - # executable or some shared library). - $(LD) --shared --whole-archive --dynamic-list=dynlst.txt $^ -o $@ - $(BUILD)/$(PROFILE)/libc.a: $(BUILD)/$(PROFILE)/librelibc.a $(BUILD)/openlibm/libopenlibm.a echo "create $@" > "$@.mri" for lib in $^; do\ diff --git a/config.mk b/config.mk index f3b4b025bc..2a36dc7226 100644 --- a/config.mk +++ b/config.mk @@ -9,7 +9,7 @@ ifeq ($(TARGET),aarch64-unknown-linux-gnu) export NM=aarch64-linux-gnu-nm export OBJCOPY=aarch64-linux-gnu-objcopy export CPPFLAGS= - LD_SO_PATH=lib/ld.so.1 + LD_SONAME=ld.so.1 endif ifeq ($(TARGET),aarch64-unknown-linux-relibc) @@ -19,7 +19,7 @@ ifeq ($(TARGET),aarch64-unknown-linux-relibc) export NM=aarch64-linux-relibc-nm export OBJCOPY=aarch64-linux-relibc-objcopy export CPPFLAGS= - LD_SO_PATH=lib/ld.so.1 + LD_SONAME=ld.so.1 endif @@ -30,7 +30,7 @@ ifeq ($(TARGET),aarch64-unknown-redox) export NM=aarch64-unknown-redox-nm export OBJCOPY=aarch64-unknown-redox-objcopy export CPPFLAGS= - LD_SO_PATH=lib/ld.so.1 + LD_SONAME=ld.so.1 endif ifeq ($(TARGET),i586-unknown-redox) @@ -40,7 +40,7 @@ ifeq ($(TARGET),i586-unknown-redox) export NM=i586-unknown-redox-nm export OBJCOPY=i586-unknown-redox-objcopy export CPPFLAGS= - LD_SO_PATH=lib/libc.so.1 + LD_SONAME=ld.so.1 endif ifeq ($(TARGET),i686-unknown-redox) @@ -50,7 +50,7 @@ ifeq ($(TARGET),i686-unknown-redox) export NM=i686-unknown-redox-nm export OBJCOPY=i686-unknown-redox-objcopy export CPPFLAGS= - LD_SO_PATH=lib/libc.so.1 + LD_SONAME=ld.so.1 endif ifeq ($(TARGET),x86_64-unknown-linux-gnu) @@ -60,7 +60,7 @@ ifeq ($(TARGET),x86_64-unknown-linux-gnu) export NM=x86_64-linux-gnu-nm export OBJCOPY=objcopy export CPPFLAGS= - LD_SO_PATH=lib/ld64.so.1 + LD_SONAME=ld64.so.1 endif ifeq ($(TARGET),x86_64-unknown-linux-relibc) @@ -70,7 +70,7 @@ ifeq ($(TARGET),x86_64-unknown-linux-relibc) export NM=x86_64-linux-relibc-nm export OBJCOPY=x86_64-linux-relibc-objcopy export CPPFLAGS= - LD_SO_PATH=lib/ld64.so.1 + LD_SONAME=ld64.so.1 endif ifeq ($(TARGET),x86_64-unknown-redox) @@ -80,7 +80,7 @@ ifeq ($(TARGET),x86_64-unknown-redox) export NM=x86_64-unknown-redox-nm export OBJCOPY=x86_64-unknown-redox-objcopy export CPPFLAGS= - LD_SO_PATH=lib/ld64.so.1 + LD_SONAME=ld64.so.1 endif ifeq ($(TARGET),riscv64gc-unknown-redox) @@ -90,5 +90,5 @@ ifeq ($(TARGET),riscv64gc-unknown-redox) export NM=riscv64-unknown-redox-nm export OBJCOPY=riscv64-unknown-redox-objcopy export CPPFLAGS=-march=rv64gc -mabi=lp64d - LD_SO_PATH=lib/ld.so.1 + LD_SONAME=ld.so.1 endif diff --git a/tests/Makefile b/tests/Makefile index 265c149c1f..9709a28a0c 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -113,7 +113,7 @@ STATIC_FLAGS+=\ ifeq ($(IS_REDOX),0) DYNAMIC_FLAGS+=\ - -Wl,-dynamic-linker=$(SYSROOT_TARGET)/$(LD_SO_PATH) \ + -Wl,-dynamic-linker=$(SYSROOT_TARGET)/lib/$(LD_SONAME) \ -Wl,-rpath=$(SYSROOT_TARGET)/lib:\$$ORIGIN \ -L $(SYSROOT)/lib \ -lc \