mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-28 15:28:30 +00:00
Fix link order in cosmopolitan.a
It turned out that the linker was doing the wrong with the amalgamation library concerning weak stubs. A regression test has been added and new binaries have been uploaded to https://justine.lol/cosmopolitan/ Ideally this should be fixed by building a tool that turns multiple .a files into a single .a file with deduplication. As a workaround for now the cosmopolitan.a build is restructured to not include LIBC_STUBS which meant technical debt needed to be paid off where non-stub interfaces were moved to LIBC_INTRIN and LIBC_NEXGEN32E. Thank @PerfectProductions in #31 for the report!
This commit is contained in:
parent
04f1d89f84
commit
9f68d6eee9
121 changed files with 302 additions and 381 deletions
|
@ -11,7 +11,6 @@ TOOL_BUILD_BINS = $(TOOL_BUILD_COMS) $(TOOL_BUILD_COMS:%=%.dbg)
|
|||
TOOL_BUILD_CALCULATOR = o/$(MODE)/tool/build/calculator.com
|
||||
|
||||
TOOL_BUILD_OBJS = \
|
||||
$(TOOL_BUILD_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_BUILD_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_BUILD_COMS = \
|
||||
|
@ -51,13 +50,13 @@ TOOL_BUILD_DIRECTDEPS = \
|
|||
LIBC_TINYMATH \
|
||||
LIBC_UNICODE \
|
||||
LIBC_X \
|
||||
TOOL_BUILD_LIB \
|
||||
THIRD_PARTY_COMPILER_RT \
|
||||
THIRD_PARTY_GDTOA \
|
||||
THIRD_PARTY_GETOPT \
|
||||
THIRD_PARTY_STB \
|
||||
THIRD_PARTY_XED \
|
||||
THIRD_PARTY_ZLIB \
|
||||
THIRD_PARTY_STB
|
||||
TOOL_BUILD_LIB
|
||||
|
||||
TOOL_BUILD_DEPS := \
|
||||
$(call uniq,$(foreach x,$(TOOL_BUILD_DIRECTDEPS),$($(x))))
|
||||
|
|
|
@ -20,15 +20,15 @@ TOOL_BUILD_EMUBIN_SRCS = $(filter %.c,$(TOOL_BUILD_EMUBIN_FILES))
|
|||
TOOL_BUILD_EMUBIN_HDRS = $(filter %.h,$(TOOL_BUILD_EMUBIN_FILES))
|
||||
|
||||
TOOL_BUILD_EMUBIN_OBJS = \
|
||||
$(TOOL_BUILD_EMUBIN_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_BUILD_EMUBIN_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_BUILD_EMUBIN_CHECKS = \
|
||||
$(TOOL_BUILD_EMUBIN_HDRS:%=o/$(MODE)/%.ok)
|
||||
|
||||
TOOL_BUILD_EMUBIN_DIRECTDEPS = \
|
||||
LIBC_STUBS \
|
||||
LIBC_INTRIN \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_STUBS \
|
||||
LIBC_TINYMATH
|
||||
|
||||
TOOL_BUILD_EMUBIN_DEPS := \
|
||||
|
|
|
@ -20,7 +20,6 @@ TOOL_BUILD_LIB_A_SRCS = \
|
|||
$(TOOL_BUILD_LIB_A_SRCS_C)
|
||||
|
||||
TOOL_BUILD_LIB_A_OBJS = \
|
||||
$(TOOL_BUILD_LIB_A_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_BUILD_LIB_A_SRCS_S:%.S=o/$(MODE)/%.o) \
|
||||
$(TOOL_BUILD_LIB_A_SRCS_C:%.c=o/$(MODE)/%.o)
|
||||
|
||||
|
|
|
@ -235,6 +235,8 @@ void GetOpts(struct Package *pkg, struct Packages *deps, int argc,
|
|||
case 'd':
|
||||
AddDependency(deps, optarg);
|
||||
break;
|
||||
case 'h':
|
||||
exit(0);
|
||||
default:
|
||||
fprintf(stderr, "%s: %s [%s %s] [%s %s] %s\n", "Usage",
|
||||
program_invocation_name, "-o", "OUTPACKAGE", "-d", "DEPPACKAGE",
|
||||
|
|
|
@ -11,7 +11,6 @@ TOOL_CALC_SRCS = $(filter %.c,$(TOOL_CALC_FILES))
|
|||
TOOL_CALC_HDRS = $(filter %.h,$(TOOL_CALC_FILES))
|
||||
|
||||
TOOL_CALC_OBJS = \
|
||||
$(TOOL_CALC_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_CALC_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_CALC_COMS = \
|
||||
|
@ -28,6 +27,7 @@ TOOL_CALC_DIRECTDEPS = \
|
|||
LIBC_BITS \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
|
|
|
@ -8,7 +8,6 @@ TOOL_DECODE_HDRS = $(filter %.h,$(TOOL_DECODE_FILES))
|
|||
TOOL_DECODE_SRCS = $(filter %.c,$(TOOL_DECODE_FILES))
|
||||
|
||||
TOOL_DECODE_OBJS = \
|
||||
$(TOOL_DECODE_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_DECODE_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_DECODE_COMS = \
|
||||
|
@ -25,6 +24,7 @@ TOOL_DECODE_DIRECTDEPS = \
|
|||
LIBC_CALLS \
|
||||
LIBC_ELF \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
|
@ -41,8 +41,8 @@ TOOL_DECODE_DIRECTDEPS = \
|
|||
LIBC_X \
|
||||
THIRD_PARTY_GDTOA \
|
||||
THIRD_PARTY_GETOPT \
|
||||
TOOL_DECODE_LIB \
|
||||
THIRD_PARTY_XED
|
||||
THIRD_PARTY_XED \
|
||||
TOOL_DECODE_LIB
|
||||
|
||||
TOOL_DECODE_DEPS := \
|
||||
$(call uniq,$(foreach x,$(TOOL_DECODE_DIRECTDEPS),$($(x))))
|
||||
|
|
|
@ -17,18 +17,18 @@ TOOL_DECODE_LIB_A_SRCS = \
|
|||
$(TOOL_DECODE_LIB_A_SRCS_C)
|
||||
|
||||
TOOL_DECODE_LIB_A_OBJS = \
|
||||
$(TOOL_DECODE_LIB_A_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_DECODE_LIB_A_SRCS_S:%.S=o/$(MODE)/%.o) \
|
||||
$(TOOL_DECODE_LIB_A_SRCS_C:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_DECODE_LIB_A_DIRECTDEPS = \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STUBS \
|
||||
LIBC_STR \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_STUBS \
|
||||
LIBC_SYSV \
|
||||
LIBC_UNICODE
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ PKGS += TOOL_HASH
|
|||
TOOL_HASH_SRCS := $(wildcard tool/hash/*.c)
|
||||
|
||||
TOOL_HASH_OBJS = \
|
||||
$(TOOL_HASH_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_HASH_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_HASH_COMS = \
|
||||
|
@ -18,11 +17,12 @@ TOOL_HASH_BINS = \
|
|||
|
||||
TOOL_HASH_DIRECTDEPS = \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_STUBS \
|
||||
LIBC_STDIO
|
||||
LIBC_STUBS
|
||||
|
||||
TOOL_HASH_DEPS := \
|
||||
$(call uniq,$(foreach x,$(TOOL_HASH_DIRECTDEPS),$($(x))))
|
||||
|
|
|
@ -8,7 +8,6 @@ TOOL_NET_SRCS = $(filter %.c,$(TOOL_NET_FILES))
|
|||
TOOL_NET_HDRS = $(filter %.h,$(TOOL_NET_FILES))
|
||||
|
||||
TOOL_NET_OBJS = \
|
||||
$(TOOL_NET_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_NET_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_NET_COMS = \
|
||||
|
@ -19,12 +18,14 @@ TOOL_NET_BINS = \
|
|||
$(TOOL_NET_COMS:%=%.dbg)
|
||||
|
||||
TOOL_NET_DIRECTDEPS = \
|
||||
APE_LIB \
|
||||
LIBC_ALG \
|
||||
LIBC_BITS \
|
||||
LIBC_CALLS \
|
||||
LIBC_CALLS_HEFTY \
|
||||
LIBC_DNS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_LOG_ASAN \
|
||||
LIBC_MEM \
|
||||
|
|
|
@ -20,7 +20,6 @@ TOOL_VIZ_LIB_A_SRCS = \
|
|||
$(TOOL_VIZ_LIB_A_SRCS_C)
|
||||
|
||||
TOOL_VIZ_LIB_A_OBJS = \
|
||||
$(TOOL_VIZ_LIB_A_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_VIZ_LIB_A_SRCS_S:%.S=o/$(MODE)/%.o) \
|
||||
$(TOOL_VIZ_LIB_A_SRCS_C:%.c=o/$(MODE)/%.o)
|
||||
|
||||
|
@ -46,8 +45,8 @@ TOOL_VIZ_LIB_A_DIRECTDEPS = \
|
|||
LIBC_TINYMATH \
|
||||
LIBC_UNICODE \
|
||||
LIBC_X \
|
||||
THIRD_PARTY_GDTOA \
|
||||
THIRD_PARTY_DLMALLOC
|
||||
THIRD_PARTY_DLMALLOC \
|
||||
THIRD_PARTY_GDTOA
|
||||
|
||||
TOOL_VIZ_LIB_A_DEPS := \
|
||||
$(call uniq,$(foreach x,$(TOOL_VIZ_LIB_A_DIRECTDEPS),$($(x))))
|
||||
|
|
|
@ -6,7 +6,6 @@ PKGS += TOOL_VIZ
|
|||
TOOL_VIZ_SRCS := $(wildcard tool/viz/*.c)
|
||||
|
||||
TOOL_VIZ_OBJS = \
|
||||
$(TOOL_VIZ_SRCS:%=o/$(MODE)/%.zip.o) \
|
||||
$(TOOL_VIZ_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TOOL_VIZ_COMS = \
|
||||
|
@ -26,6 +25,7 @@ TOOL_VIZ_DIRECTDEPS = \
|
|||
LIBC_CALLS_HEFTY \
|
||||
LIBC_DNS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
|
@ -52,9 +52,9 @@ TOOL_VIZ_DIRECTDEPS = \
|
|||
THIRD_PARTY_GETOPT \
|
||||
THIRD_PARTY_STB \
|
||||
THIRD_PARTY_XED \
|
||||
THIRD_PARTY_ZLIB \
|
||||
TOOL_DECODE_LIB \
|
||||
TOOL_VIZ_LIB \
|
||||
THIRD_PARTY_ZLIB
|
||||
TOOL_VIZ_LIB
|
||||
|
||||
TOOL_VIZ_DEPS := \
|
||||
$(call uniq,$(foreach x,$(TOOL_VIZ_DIRECTDEPS),$($(x))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue