Browse Source

fix shared library build with llvm-19 (#526)

pull/530/head
YAMAMOTO Takashi 2 months ago
committed by GitHub
parent
commit
3f812abfb2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 18
      Makefile
  2. 7
      libc-top-half/musl/src/signal/psignal.c
  3. 3
      linker-provided-symbols.txt

18
Makefile

@ -617,9 +617,21 @@ PIC_OBJS = \
# link that using `--whole-archive` rather than pass the object files directly
# to CC. This is a workaround for a Windows command line size limitation. See
# the `%.a` rule below for details.
$(SYSROOT_LIB)/%.so: $(OBJDIR)/%.so.a $(BUILTINS_LIB)
$(CC) --target=$(TARGET_TRIPLE) -nodefaultlibs -shared --sysroot=$(SYSROOT) \
-o $@ -Wl,--whole-archive $< -Wl,--no-whole-archive $(BUILTINS_LIB)
# Note: libc.so is special because it shouldn't link to libc.so.
# Note: --allow-undefined-file=linker-provided-symbols.txt is
# a workaround for https://github.com/llvm/llvm-project/issues/103592
$(SYSROOT_LIB)/libc.so: $(OBJDIR)/libc.so.a $(BUILTINS_LIB)
$(CC) $(EXTRA_CFLAGS) --target=${TARGET_TRIPLE} -nodefaultlibs \
-shared --sysroot=$(SYSROOT) \
-o $@ -Wl,--whole-archive $< -Wl,--no-whole-archive $(BUILTINS_LIB) \
-Wl,--allow-undefined-file=linker-provided-symbols.txt
$(SYSROOT_LIB)/%.so: $(OBJDIR)/%.so.a $(SYSROOT_LIB)/libc.so
$(CC) $(EXTRA_CFLAGS) --target=${TARGET_TRIPLE} \
-shared --sysroot=$(SYSROOT) \
-o $@ -Wl,--whole-archive $< -Wl,--no-whole-archive \
-Wl,--allow-undefined-file=linker-provided-symbols.txt
$(OBJDIR)/libc.so.a: $(LIBC_SO_OBJS) $(MUSL_PRINTSCAN_LONG_DOUBLE_SO_OBJS)

7
libc-top-half/musl/src/signal/psignal.c

@ -3,6 +3,13 @@
#include <signal.h>
#include <errno.h>
#ifndef __wasilibc_unmodified_upstream
/* undef the macro to use the standard stderr instead of __stderr_FILE
* (the libc internal symbol) as this lives in a separate library,
* libwasi-emulated-signal.so. */
#undef stderr
#endif
void psignal(int sig, const char *msg)
{
FILE *f = stderr;

3
linker-provided-symbols.txt

@ -0,0 +1,3 @@
__heap_base
__heap_end
__c_longjmp
Loading…
Cancel
Save