diff options
author | Richard Braun <rbraun@sceen.net> | 2018-04-09 20:32:54 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2018-04-09 20:32:54 +0200 |
commit | 25b89e773603f7c479b731f82d2d8189e0455fcd (patch) | |
tree | 64620d392b8210514bb712c9ed2b15b24bdd7429 | |
parent | 2e2f5a495e8204c85e929e0f4088bae55fb81989 (diff) |
Make linking with libgcc a per-architecture option
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | arch/x86/Makefile | 9 |
2 files changed, 10 insertions, 1 deletions
@@ -272,7 +272,7 @@ XBUILD_CFLAGS += -Wno-unneeded-internal-declaration XBUILD_CFLAGS += $(call xbuild_check_cc_option,-fno-PIE) XBUILD_CFLAGS += $(call xbuild_check_cc_option,-Qunused-arguments) -XBUILD_LDFLAGS += -static -nostdlib -lgcc +XBUILD_LDFLAGS += -static -nostdlib # Disable the build ID feature of the linker XBUILD_LDFLAGS += -Wl,--build-id=none diff --git a/arch/x86/Makefile b/arch/x86/Makefile index f0640f7..9866d93 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -20,11 +20,20 @@ XBUILD_LDFLAGS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 ifeq ($(CONFIG_X86_32),y) biarch := $(call cc-option,-m32) + XBUILD_CPPFLAGS += -m32 + + XBUILD_LDFLAGS += -lgcc else biarch := -m64 + XBUILD_CPPFLAGS += -m64 + # XXX The kernel isn't linked with libgcc on amd64, because libgcc + # uses red zones. But since there are actually very few functions + # provided by libgcc on amd64, it was decided to just not link with + # it. If it turns out that libgcc is really needed some day, the + # kernel can somewhat easily be changed to support red zones. XBUILD_CFLAGS += -mno-red-zone XBUILD_CFLAGS += -mcmodel=kernel endif |