feat: use PIC code model for shared libraries, fix shared library bugs
This commit is contained in:
@@ -11,6 +11,8 @@ NM := $(TOOLCHAIN_PREFIX)nm
|
||||
STRIP := $(TOOLCHAIN_PREFIX)strip
|
||||
|
||||
# Compiler flags: freestanding, no stdlib
|
||||
# Build as PIE so library code remains valid when loaded into a slot-specific
|
||||
# base address by the kernel loader.
|
||||
override CXXFLAGS := \
|
||||
-std=gnu++20 \
|
||||
-g -O2 -pipe \
|
||||
@@ -20,7 +22,7 @@ override CXXFLAGS := \
|
||||
-ffreestanding \
|
||||
-fno-stack-protector \
|
||||
-fno-stack-check \
|
||||
-fno-PIC \
|
||||
-fPIE \
|
||||
-fno-rtti \
|
||||
-fno-exceptions \
|
||||
-ffunction-sections \
|
||||
@@ -55,7 +57,7 @@ LIBSRC := src/libmath.cpp
|
||||
|
||||
all: $(OUTDIR)/$(LIBNAME).lib $(OUTDIR)/$(LIBNAME).lib.sym
|
||||
|
||||
$(OUTDIR)/$(LIBNAME).lib: $(LIBSRC)
|
||||
$(OUTDIR)/$(LIBNAME).lib: $(LIBSRC) Makefile
|
||||
@mkdir -p $(OUTDIR)
|
||||
$(CXX) $(CXXFLAGS) -c $(LIBSRC) -o src/libmath.o
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) src/libmath.o -o $@
|
||||
|
||||
Reference in New Issue
Block a user