linux-samsung-a50: build with LLVM
Signed-off-by: Aster Boese <asterboese@mailbox.org> Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7485>
This commit is contained in:
parent
71c7ef6132
commit
bbbb3e052f
4 changed files with 161 additions and 18 deletions
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
pkgname=linux-samsung-a50
|
||||
pkgver=4.14.194
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="Samsung Galaxy A50 kernel fork"
|
||||
arch="aarch64"
|
||||
_carch="arm64"
|
||||
|
|
@ -15,10 +15,10 @@ makedepends="
|
|||
bash
|
||||
bc
|
||||
bison
|
||||
clang
|
||||
devicepkg-dev
|
||||
findutils
|
||||
flex
|
||||
gcc6
|
||||
linux-headers
|
||||
lld
|
||||
llvm
|
||||
|
|
@ -45,16 +45,12 @@ source="
|
|||
various_firmware_paths.patch
|
||||
dtbinst_remove_target.patch
|
||||
no_trailingspaces.patch
|
||||
arm64-vdso-fix-vdso_offset_sigtramp-undeclared.patch
|
||||
memcpy-STB_GLOBAL.patch
|
||||
"
|
||||
builddir="$srcdir/$_kernel_repo-$_kernel_repo_commit"
|
||||
_outdir="out"
|
||||
|
||||
if [ "${CC:0:5}" != "gcc6-" ]; then
|
||||
CC="gcc6-$CC"
|
||||
HOSTCC="gcc6-gcc"
|
||||
CROSS_COMPILE="gcc6-$CROSS_COMPILE"
|
||||
fi
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
REPLACE_GCCH=0 . downstreamkernel_prepare
|
||||
|
|
@ -70,7 +66,20 @@ build() {
|
|||
cp drivers/misc/tzdev/startup_old.tzar $_outdir/drivers/misc/tzdev/startup_old.tzar
|
||||
|
||||
unset LDFLAGS
|
||||
make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \
|
||||
make O="$_outdir" ARCH="$_carch" \
|
||||
CC=clang \
|
||||
LD=ld.lld \
|
||||
AR=llvm-ar \
|
||||
NM=llvm-nm \
|
||||
STRIP=llvm-strip \
|
||||
OBJCOPY=llvm-objcopy \
|
||||
OBJDUMP=llvm-objdump \
|
||||
READELF=llvm-readelf \
|
||||
HOSTCC=clang \
|
||||
HOSTCXX=clang++ \
|
||||
HOSTAR=llvm-ar \
|
||||
HOSTLD=ld.lld \
|
||||
LLVM=1 LLVM_IAS=1 \
|
||||
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
|
||||
}
|
||||
|
||||
|
|
@ -80,8 +89,21 @@ package() {
|
|||
|
||||
# Modules
|
||||
unset LDFLAGS
|
||||
make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \
|
||||
make O="$_outdir" ARCH="$_carch" \
|
||||
KBUILD_BUILD_VERSION="$((pkgrel + 1))-postmarketOS" \
|
||||
CC=clang \
|
||||
LD=ld.lld \
|
||||
AR=llvm-ar \
|
||||
NM=llvm-nm \
|
||||
STRIP=llvm-strip \
|
||||
OBJCOPY=llvm-objcopy \
|
||||
OBJDUMP=llvm-objdump \
|
||||
READELF=llvm-readelf \
|
||||
HOSTCC=clang \
|
||||
HOSTCXX=clang++ \
|
||||
HOSTAR=llvm-ar \
|
||||
HOSTLD=ld.lld \
|
||||
LLVM=1 LLVM_IAS=1 \
|
||||
INSTALL_MOD_PATH="$pkgdir" \
|
||||
INSTALL_MOD_STRIP=1 \
|
||||
MODLIB="$pkgdir/lib/modules/4.14.194" \
|
||||
|
|
@ -92,7 +114,7 @@ package() {
|
|||
|
||||
sha512sums="
|
||||
a8937404ae7547c7a4b623f77f44a08390749c0d527c783bb7f99758dbfc204b7fe95df1d7b5c3f52bd0febf84fc8fcb28196574436cbd131d476ea707ffdf22 linux-samsung-a50-7f72a8b689677562f028d78b2e91bd79277a0aba.tar.gz
|
||||
aad95fc57648cab5d27635abedddfcf7e783d7c557ca9c50b384997f6a3ccc6ef8ec7a147cce48d72fcbf7650d12a34814cce49bb9302d52f3d4545f43880a3d config-samsung-a50.aarch64
|
||||
3e56ab2d917429a25207b19e440b11e47798871fa650a1e311b381fe6dcc814960d509c78c39c620bd63aa10b2435c8fca539a441510ec9e0d29bbdba8becc98 config-samsung-a50.aarch64
|
||||
182be3c596b9cc267ac108d7cf03fc8c328ccc6b36770800e4dcedea8d1bb65e3f5eacf590c2948f58b1418cc60a1670ba77dde8c259e428d158c31b6e1dbaf5 fix-check-lxdialog.patch
|
||||
c3024ec5bab940c2792d9dd2d6407c6a099ad1c301de3bea087f166e2d0102d653efd7fe21fd74abbeb289cab89090eb8cbd9abf325dcb8327ae75820358b87c lz4_missing_label.patch
|
||||
dd5cbce4ffca5c919b9819bec8ff9d4902e3fb024780d12467c498f933fd9bc4af638ab1eaaf53269e491e1a4576bb34cda980a2e70252aed1b831264aa48e01 disable_optimization_flags.patch
|
||||
|
|
@ -101,4 +123,6 @@ a3b72366255eeb3a339646b56857171c8f9a20b020ce2fe0837ee0fd32e07a866d0329624cf6d604
|
|||
5ae731527b5f9fddeb1f5fa853ded918dc323414453d0600d9c27b42b76a55a47c471344115cb0628195c13815f776e73705bf51c20197c011fbda36a619bcd9 various_firmware_paths.patch
|
||||
00ea85c43059d24b6930781ef2e9d1b62ad73416d771445135650d41c4e045528b5237a896de451a68ceeace89223700392e67772efaa723c3e0b11e95e431dc dtbinst_remove_target.patch
|
||||
3143ad3241632d287916216cc0c712307a7efc54f92a2bc57f70948e3e3a102b3140e91030aaff055abd8201309725690c26120551afe6acbe2e9019a0b95939 no_trailingspaces.patch
|
||||
db2cd9cbd8447d4bb5387ac34aef7414867a6322f9d3c435be432cfe4b6af535384c042254c934a7aad28b97592593905b26c124692fa207bd1e7b6457ba0a09 arm64-vdso-fix-vdso_offset_sigtramp-undeclared.patch
|
||||
6828faf0212198d78e58312669ff306236a95d0e3c3e2b9d81d171b6bb54b72979bb9867cecf584781647fe8ee1011ab080317783bc2ddd6e35ccd07029e3686 memcpy-STB_GLOBAL.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
From 49c7fba8bfd5017a400b6395dc7874636215dfe3 Mon Sep 17 00:00:00 2001
|
||||
From: Tiandoufayale <45908670+tiandoufayale@users.noreply.github.com>
|
||||
Date: Sat, 24 Feb 2024 15:08:34 +0800
|
||||
Subject: [PATCH] arm64:vdso: fix vdso_offset_sigtramp' undeclared
|
||||
|
||||
---
|
||||
arch/arm64/include/asm/vdso.h | 3 +++
|
||||
arch/arm64/kernel/vdso/gen_vdso_offsets.sh | 2 +-
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/include/asm/vdso.h b/arch/arm64/include/asm/vdso.h
|
||||
index 839ce0031..61e04da2f 100644
|
||||
--- a/arch/arm64/include/asm/vdso.h
|
||||
+++ b/arch/arm64/include/asm/vdso.h
|
||||
@@ -29,6 +29,9 @@
|
||||
|
||||
#include <generated/vdso-offsets.h>
|
||||
|
||||
+
|
||||
+#define vdso_offset_sigtramp
|
||||
+
|
||||
#define VDSO_SYMBOL(base, name) \
|
||||
({ \
|
||||
(void *)(vdso_offset_##name - VDSO_LBASE + (unsigned long)(base)); \
|
||||
diff --git a/arch/arm64/kernel/vdso/gen_vdso_offsets.sh b/arch/arm64/kernel/vdso/gen_vdso_offsets.sh
|
||||
index 0664acaf6..d7ff1fe19 100644
|
||||
--- a/arch/arm64/kernel/vdso/gen_vdso_offsets.sh
|
||||
+++ b/arch/arm64/kernel/vdso/gen_vdso_offsets.sh
|
||||
@@ -13,4 +13,4 @@
|
||||
|
||||
LC_ALL=C
|
||||
sed -n -e 's/^00*/0/' -e \
|
||||
-'s/^\([0-9a-fA-F]*\) . VDSO_\([a-zA-Z0-9_]*\)$/\#define vdso_offset_\2\t0x\1/p'
|
||||
+'s/^\([0-9a-fA-F]*\) . VDSO_\([a-zA-Z0-9_]*\)$/\#define vdso_offset_\2 0x\1/p'
|
||||
|
|
@ -295,17 +295,16 @@ CONFIG_CC_STACKPROTECTOR_NONE=y
|
|||
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
|
||||
# CONFIG_CC_STACKPROTECTOR_STRONG is not set
|
||||
CONFIG_THIN_ARCHIVES=y
|
||||
# CONFIG_LD_BFD is not set
|
||||
# CONFIG_LD_GOLD is not set
|
||||
CONFIG_LD_LLD=y
|
||||
CONFIG_LTO=y
|
||||
# CONFIG_LTO is not set
|
||||
CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
|
||||
CONFIG_ARCH_SUPPORTS_THINLTO=y
|
||||
CONFIG_THINLTO=y
|
||||
CONFIG_ARCH_SUPPORTS_LTO_GCC=y
|
||||
# CONFIG_LTO_NONE is not set
|
||||
CONFIG_LTO_CLANG=y
|
||||
# CONFIG_CFI_CLANG is not set
|
||||
CONFIG_LLVM_POLLY=y
|
||||
CONFIG_LTO_NONE=y
|
||||
# CONFIG_LTO_CLANG is not set
|
||||
# CONFIG_LLVM_POLLY is not set
|
||||
# CONFIG_GCC_GRAPHITE is not set
|
||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
|
|
@ -700,6 +699,7 @@ CONFIG_ARM64_MODULE_CMODEL_LARGE=y
|
|||
CONFIG_ARM64_MODULE_PLTS=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
CONFIG_RANDOMIZE_MODULE_REGION_FULL=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
|
|
@ -2064,7 +2064,7 @@ CONFIG_INPUT_MATRIXKMAP=y
|
|||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_INPUT_EVDEV=m
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
CONFIG_INPUT_KEYRESET=y
|
||||
# CONFIG_INPUT_TOUCHSCREEN_TCLMV2 is not set
|
||||
|
|
|
|||
85
device/downstream/linux-samsung-a50/memcpy-STB_GLOBAL.patch
Normal file
85
device/downstream/linux-samsung-a50/memcpy-STB_GLOBAL.patch
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
From: Fangrui Song <maskray@google.com>
|
||||
|
||||
mainline inclusion
|
||||
from mainline-5.11-rc1
|
||||
commit 735e8d93dc2b107f7891a9c2b1c4cfbea1fcbbbc
|
||||
category: feature
|
||||
feature: ARM KASAN support
|
||||
issue: #I3ZXZF
|
||||
CVE: NA
|
||||
|
||||
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i...
|
||||
|
||||
Modified by Aster Boese <asterboese@mailbox.org>
|
||||
Changed to ARM64
|
||||
|
||||
-------------------------------------------------
|
||||
Commit d6d51a96c7d6 ("ARM: 9014/2: Replace string mem* functions for
|
||||
KASan") add .weak directives to memcpy/memmove/memset to avoid collision
|
||||
with KASAN interceptors.
|
||||
|
||||
This does not work with LLVM's integrated assembler (the assembly snippet
|
||||
`.weak memcpy ... .globl memcpy` produces a STB_GLOBAL memcpy while GNU as
|
||||
produces a STB_WEAK memcpy). LLVM 12 (since https://reviews.llvm.org/D90108)
|
||||
will error on such an overridden symbol binding.
|
||||
|
||||
Use the appropriate WEAK macro instead.
|
||||
|
||||
Link: https://github.com/ClangBuiltLinux/linux/issues/1190
|
||||
Reviewed-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
|
||||
Signed-off-by: Chen Jun <chenjun102@huawei.com>
|
||||
Signed-off-by: Yu Changchun <yuchangchun1@huawei.com>
|
||||
|
||||
---
|
||||
arch/arm64/lib/memcpy.S | 3 +--
|
||||
arch/arm64/lib/memmove.S | 3 +--
|
||||
arch/arm64/lib/memset.S | 3 +--
|
||||
3 files changed, 3 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/lib/memcpy.S b/arch/arm64/lib/memcpy.S
|
||||
index 676139377..dfedd4ab1 100644
|
||||
--- a/arch/arm64/lib/memcpy.S
|
||||
+++ b/arch/arm64/lib/memcpy.S
|
||||
@@ -68,9 +68,8 @@
|
||||
stp \ptr, \regB, [\regC], \val
|
||||
.endm
|
||||
|
||||
- .weak memcpy
|
||||
ENTRY(__memcpy)
|
||||
-ENTRY(memcpy)
|
||||
+WEAK(memcpy)
|
||||
#include "copy_template.S"
|
||||
ret
|
||||
ENDPIPROC(memcpy)
|
||||
diff --git a/arch/arm64/lib/memmove.S b/arch/arm64/lib/memmove.S
|
||||
index f5ac945d2..d2dadccb6 100644
|
||||
--- a/arch/arm64/lib/memmove.S
|
||||
+++ b/arch/arm64/lib/memmove.S
|
||||
@@ -57,9 +57,8 @@ C_h .req x12
|
||||
D_l .req x13
|
||||
D_h .req x14
|
||||
|
||||
- .weak memmove
|
||||
ENTRY(__memmove)
|
||||
-ENTRY(memmove)
|
||||
+WEAK(memmove)
|
||||
prfm pldl1strm, [src, #L1_CACHE_BYTES]
|
||||
cmp dstin, src
|
||||
b.lo __memcpy
|
||||
diff --git a/arch/arm64/lib/memset.S b/arch/arm64/lib/memset.S
|
||||
index f2670a9f2..316263c47 100644
|
||||
--- a/arch/arm64/lib/memset.S
|
||||
+++ b/arch/arm64/lib/memset.S
|
||||
@@ -54,9 +54,8 @@ dst .req x8
|
||||
tmp3w .req w9
|
||||
tmp3 .req x9
|
||||
|
||||
- .weak memset
|
||||
ENTRY(__memset)
|
||||
-ENTRY(memset)
|
||||
+WEAK(memset)
|
||||
mov dst, dstin /* Preserve return value. */
|
||||
and A_lw, val, #255
|
||||
orr A_lw, A_lw, A_lw, lsl #8
|
||||
--
|
||||
2.52.0
|
||||
Loading…
Add table
Add a link
Reference in a new issue