klibc-bot for Bill Wendling
2020-Jul-25 20:57 UTC
[klibc] [klibc:master] Kbuild: support clang's lld
Commit-ID: eaca2447991709cddfd8c42f3fa4a2e890d2cce8 Gitweb: http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=eaca2447991709cddfd8c42f3fa4a2e890d2cce8 Author: Bill Wendling <morbo at google.com> AuthorDate: Sun, 29 Mar 2020 04:38:31 -0700 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Sat, 25 Jul 2020 20:45:34 +0100 [klibc] Kbuild: support clang's lld Clang's lld prefers the use of "-image-base" instead of "-Ttext-segment". Signed-off-by: Stanislav Fomichev <sdf at google.com> Signed-off-by: Bill Wendling <morbo at google.com> Signed-off-by: Ben Hutchings <ben at decadent.org.uk> --- Makefile | 3 +++ usr/klibc/arch/i386/MCONFIG | 2 +- usr/klibc/arch/mips64/MCONFIG | 5 +++-- usr/klibc/arch/ppc/MCONFIG | 2 +- usr/klibc/arch/ppc64/MCONFIG | 2 +- usr/klibc/arch/riscv64/MCONFIG | 2 +- usr/klibc/arch/sparc64/MCONFIG | 2 +- usr/klibc/arch/x86_64/MCONFIG | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index c99b962f..c8325154 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,9 @@ export NM := $(KLIBCROSS)nm export OBJCOPY := $(KLIBCROSS)objcopy export OBJDUMP := $(KLIBCROSS)objdump +LLD := $(shell $(LD) --version 2>&1 | grep LLD) +export LD_IMAGE_BASE_OPT=$(if $(LLD),--image-base,-Ttext-segment) + NOSTDINC_FLAGS := -nostdlib -nostdinc -isystem $(shell $(CC) -print-file-name=include) ARCH := $(shell uname -m | sed -e s/i.86/i386/ \ diff --git a/usr/klibc/arch/i386/MCONFIG b/usr/klibc/arch/i386/MCONFIG index c7d3fccd..e6f50dde 100644 --- a/usr/klibc/arch/i386/MCONFIG +++ b/usr/klibc/arch/i386/MCONFIG @@ -30,7 +30,7 @@ KLIBCBITSIZE = 32 # This address needs to be reachable using normal inter-module # calls, and work on the memory models for this architecture # 96 MB - normal binaries start at 128 MB -KLIBCSHAREDFLAGS = -Ttext-segment 0x06000000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x06000000 # Kernel uses dedicated page or vDSO for signal return since 2.5.55 KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/mips64/MCONFIG b/usr/klibc/arch/mips64/MCONFIG index 94b825a6..6dcb143e 100644 --- a/usr/klibc/arch/mips64/MCONFIG +++ b/usr/klibc/arch/mips64/MCONFIG @@ -19,8 +19,9 @@ KLIBCBITSIZE = 64 # 256M aligned region. Since we can't put ourselves below the normal # load address, use the very top of the 256M region (minus 2MB) # -# Use -Ttext-segment so that the special .MIPS* sections are moved as well. -KLIBCSHAREDFLAGS = -Ttext-segment 0x12FE00000 +# Use -Ttext-segment/--image_base so that the special .MIPS* sections +# are moved as well. +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x12FE00000 # Kernel uses vDSO for signal return since 2.6.34 KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/ppc/MCONFIG b/usr/klibc/arch/ppc/MCONFIG index d8a0c108..db4806ab 100644 --- a/usr/klibc/arch/ppc/MCONFIG +++ b/usr/klibc/arch/ppc/MCONFIG @@ -20,7 +20,7 @@ KLIBCBITSIZE = 32 # calls, and work on the memory models for this architecture # 256-16 MB - normal binaries start at 256 MB, and jumps are limited # to +/- 16 MB -KLIBCSHAREDFLAGS = -Ttext-segment 0x0f800000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x0f800000 # The asm include files live in asm-powerpc KLIBCASMARCH = powerpc diff --git a/usr/klibc/arch/ppc64/MCONFIG b/usr/klibc/arch/ppc64/MCONFIG index 530a07a0..43265601 100644 --- a/usr/klibc/arch/ppc64/MCONFIG +++ b/usr/klibc/arch/ppc64/MCONFIG @@ -18,7 +18,7 @@ KLIBCBITSIZE = 64 # calls, and work on the memory models for this architecture # 256-16 MB - normal binaries start at 256 MB, and jumps are limited # to +/- 16 MB -KLIBCSHAREDFLAGS = -Ttext-segment 0x0f000000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x0f000000 # The asm include files live in asm-powerpc KLIBCASMARCH = powerpc diff --git a/usr/klibc/arch/riscv64/MCONFIG b/usr/klibc/arch/riscv64/MCONFIG index 35df1f5f..9bc7bd24 100644 --- a/usr/klibc/arch/riscv64/MCONFIG +++ b/usr/klibc/arch/riscv64/MCONFIG @@ -17,7 +17,7 @@ endif KLIBCBITSIZE = 64 # Normal binaries start at 64 KB, so start the libary at 2 MB. -KLIBCSHAREDFLAGS =-Ttext-segment 0x00200000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x00200000 # Kernel has never used stack trampolines KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/sparc64/MCONFIG b/usr/klibc/arch/sparc64/MCONFIG index 6f5dfbe9..81ad959e 100644 --- a/usr/klibc/arch/sparc64/MCONFIG +++ b/usr/klibc/arch/sparc64/MCONFIG @@ -18,7 +18,7 @@ KLIBCLDFLAGS = -m elf64_sparc # calls, and work on the memory models for this architecture # Normal binaries start at 1 MB; the linker wants 1 MB alignment, # and call instructions have a 30-bit signed offset, << 2. -KLIBCSHAREDFLAGS = -Ttext-segment 0x80000000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x80000000 # Kernel has never used stack trampolines KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/x86_64/MCONFIG b/usr/klibc/arch/x86_64/MCONFIG index c2947c6a..307b48fb 100644 --- a/usr/klibc/arch/x86_64/MCONFIG +++ b/usr/klibc/arch/x86_64/MCONFIG @@ -37,7 +37,7 @@ KLIBCLDFLAGS = -m elf_x86_64 # The old default was max-page-size=0x100000, but that also results # in a broken layout with binutils 2.30. Since there's no # architectural page size betwen 4 KB and 2MB, set it to 4 KB. -KLIBCSHAREDFLAGS = -Ttext-segment 0x00200000 -z max-page-size=0x1000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x00200000 -z max-page-size=0x1000 # Kernel has never used stack trampolines KLIBCEXECSTACK := n