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:
Aster Boese 2025-12-04 14:53:48 -05:00 committed by The Friendly Merge Bot
parent 71c7ef6132
commit bbbb3e052f
No known key found for this signature in database
4 changed files with 161 additions and 18 deletions

View file

@ -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
"

View file

@ -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'

View file

@ -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

View 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