From 83e719743196f2ae6238f1a355c57fe794fd1e2c Mon Sep 17 00:00:00 2001 From: Aster Boese Date: Tue, 3 Mar 2026 19:55:19 -0500 Subject: [PATCH] linux-realme-x3: sync kconfig and build with LLVM Syncs the linux-realme-x3 kernel config with kconfigcheck.toml and builds the kernel with LLVM to follow policy. See https://postmarketos.org/edge/2025/11/11/kernels-llvm/ Signed-off-by: Aster Boese Part-of: --- device/testing/linux-realme-x3/APKBUILD | 23 +++- .../linux-realme-x3/config-realme-x3.aarch64 | 112 ++++++++++++++---- .../disable-builtin-wcslen.patch | 28 +++++ 3 files changed, 134 insertions(+), 29 deletions(-) create mode 100644 device/testing/linux-realme-x3/disable-builtin-wcslen.patch diff --git a/device/testing/linux-realme-x3/APKBUILD b/device/testing/linux-realme-x3/APKBUILD index f3542015e..f50eeafef 100644 --- a/device/testing/linux-realme-x3/APKBUILD +++ b/device/testing/linux-realme-x3/APKBUILD @@ -2,7 +2,7 @@ maintainer="Patriot-06 " pkgname=linux-realme-x3 pkgver=6.12_rc7 -pkgrel=1 +pkgrel=2 pkgdesc="Mainline Kernel fork for Realme X3" arch="aarch64" _carch="arm64" @@ -13,7 +13,19 @@ options="!strip !check !tracedeps pmb:cross-native pmb:kconfigcheck-nftables " -makedepends="bash bc bison findutils flex installkernel openssl-dev perl zstd python3" +makedepends=" + bison + clang + findutils + flex + lld + llvm + openssl-dev + perl + postmarketos-installkernel + python3 + zstd + " # Source _repository="linux" @@ -22,6 +34,7 @@ _config="config-$_flavor.$arch" source=" $pkgname-$_commit.tar.gz::https://github.com/sm8150-linux-mainline/$_repository/archive/$_commit.tar.gz $_config + disable-builtin-wcslen.patch " builddir="$srcdir/$_repository-$_commit" _outdir="out" @@ -33,7 +46,7 @@ prepare() { build() { unset LDFLAGS - make ARCH="$_carch" CC="${CC:-gcc}" \ + make ARCH="$_carch" LLVM=1 \ KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor" } @@ -45,6 +58,7 @@ package() { make modules_install dtbs_install \ ARCH="$_carch" \ + LLVM=1 \ INSTALL_PATH="$pkgdir"/boot/ \ INSTALL_MOD_PATH="$pkgdir" \ INSTALL_MOD_STRIP=1 \ @@ -59,5 +73,6 @@ package() { sha512sums=" 0adb5b750da3cad2b95654e57f887691d8e2d63f79e350d9640fc3a6012c4b631b342934b119fc24fb3eb954ac6e3545c050b83c5db433f7bcdcd3fb54c6eadb linux-realme-x3-91911e069acbb9d38e5dcc633d454f7b1ff9bc4b.tar.gz -6013af04162f50bef2f455caba979d59ff8bcd3182d61862a353d9af7f864eae322f51d67a85e998d88530cab103e5869d1471767bff4bedc5836729b7933cd7 config-realme-x3.aarch64 +a8abea661d686a3a27b1294749dc151194a4c5ec469e481fdc10519323baa972da59e3701195214b35d262a583164fee1926738f7ca5d4709bcd767623c4c462 config-realme-x3.aarch64 +1b15a999007ea399814bd8be23bc3d3ab9c8602e145f8b016f0c84a613d5c48f7b319124ef11514927277b670ba4beeb43d375836f8bf1bb97dcc4479c54338d disable-builtin-wcslen.patch " diff --git a/device/testing/linux-realme-x3/config-realme-x3.aarch64 b/device/testing/linux-realme-x3/config-realme-x3.aarch64 index f7202f3af..d4b89615e 100644 --- a/device/testing/linux-realme-x3/config-realme-x3.aarch64 +++ b/device/testing/linux-realme-x3/config-realme-x3.aarch64 @@ -2,19 +2,22 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.12.0-rc7 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-alpine-linux-musl-gcc (Alpine 14.2.0) 14.2.0" -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=140200 -CONFIG_CLANG_VERSION=0 -CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=24200 -CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=24200 -CONFIG_LLD_VERSION=0 +CONFIG_CC_VERSION_TEXT="Alpine clang version 22.1.2" +CONFIG_GCC_VERSION=0 +CONFIG_CC_IS_CLANG=y +CONFIG_CLANG_VERSION=220102 +CONFIG_AS_IS_LLVM=y +CONFIG_AS_VERSION=220102 +CONFIG_LD_VERSION=0 +CONFIG_LD_IS_LLD=y +CONFIG_LLD_VERSION=220102 CONFIG_RUSTC_VERSION=0 CONFIG_RUSTC_LLVM_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_PAHOLE_VERSION=0 @@ -100,6 +103,7 @@ CONFIG_BPF_JIT=y CONFIG_BPF_JIT_DEFAULT_ON=y CONFIG_BPF_UNPRIV_DEFAULT_OFF=y # CONFIG_BPF_PRELOAD is not set +CONFIG_BPF_LSM=y # end of BPF subsystem CONFIG_PREEMPT_BUILD=y @@ -163,11 +167,9 @@ CONFIG_GENERIC_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CC_HAS_INT128=y -CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough" CONFIG_GCC10_NO_ARRAY_BOUNDS=y -CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_GCC_NO_STRINGOP_OVERFLOW=y -CONFIG_CC_NO_STRINGOP_OVERFLOW=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_NUMA_BALANCING=y CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y @@ -266,6 +268,7 @@ CONFIG_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y # # Kexec and crash features @@ -282,7 +285,7 @@ CONFIG_CRASH_DUMP=y CONFIG_ARM64=y CONFIG_RUSTC_SUPPORTS_ARM64=y -CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_64BIT=y CONFIG_MMU=y CONFIG_ARM64_CONT_PTE_SHIFT=4 @@ -459,6 +462,8 @@ CONFIG_RODATA_FULL_DEFAULT_ENABLED=y CONFIG_ARM64_TAGGED_ADDR_ABI=y CONFIG_COMPAT=y CONFIG_KUSER_HELPERS=y +CONFIG_COMPAT_VDSO=y +CONFIG_THUMB2_COMPAT_VDSO=y # CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set # CONFIG_ARMV8_DEPRECATED is not set @@ -507,6 +512,7 @@ CONFIG_ARM64_TLB_RANGE=y # CONFIG_AS_HAS_ARMV8_5=y CONFIG_ARM64_BTI=y +CONFIG_ARM64_BTI_KERNEL=y CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y CONFIG_ARM64_E0PD=y CONFIG_ARM64_AS_HAS_MTE=y @@ -711,10 +717,12 @@ CONFIG_ARCH_HAS_DMA_OPS=y CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y CONFIG_HOTPLUG_CORE_SYNC=y CONFIG_HOTPLUG_CORE_SYNC_DEAD=y -# CONFIG_KPROBES is not set +CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_UPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y @@ -765,8 +773,13 @@ CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y # CONFIG_SHADOW_CALL_STACK is not set CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_HAS_LTO_CLANG=y CONFIG_LTO_NONE=y +# CONFIG_LTO_CLANG_FULL is not set +# CONFIG_LTO_CLANG_THIN is not set CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +# CONFIG_CFI_CLANG is not set +CONFIG_HAVE_CFI_ICALL_NORMALIZE_INTEGERS_CLANG=y CONFIG_HAVE_CONTEXT_TRACKING_USER=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -812,6 +825,7 @@ CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y CONFIG_ARCH_USE_MEMREMAP_PROT=y # CONFIG_LOCK_EVENT_COUNTS is not set CONFIG_ARCH_HAS_RELR=y +CONFIG_RELR=y CONFIG_ARCH_HAS_MEM_ENCRYPT=y CONFIG_HAVE_PREEMPT_DYNAMIC=y CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y @@ -830,11 +844,8 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # end of GCOV-based kernel profiling CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set CONFIG_FUNCTION_ALIGNMENT_4B=y CONFIG_FUNCTION_ALIGNMENT=4 -CONFIG_CC_HAS_MIN_FUNCTION_ALIGNMENT=y CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT=y # end of General architecture-dependent options @@ -848,7 +859,12 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULE_COMPRESS=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +CONFIG_MODULE_COMPRESS_ZSTD=y +CONFIG_MODULE_COMPRESS_ALL=y +CONFIG_MODULE_DECOMPRESS=y # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set @@ -1524,6 +1540,7 @@ CONFIG_NET_FLOW_LIMIT=y # Network testing # # CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set # end of Network testing # end of Networking options @@ -1614,6 +1631,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 CONFIG_RFKILL=m @@ -2657,12 +2675,14 @@ CONFIG_ATH10K_DEBUG=y CONFIG_ATH10K_DEBUGFS=y CONFIG_ATH10K_LEDS=y CONFIG_ATH10K_SPECTRAL=y +# CONFIG_ATH10K_TRACING is not set CONFIG_WCN36XX=m # CONFIG_WCN36XX_DEBUGFS is not set CONFIG_ATH11K=m CONFIG_ATH11K_AHB=m CONFIG_ATH11K_PCI=m # CONFIG_ATH11K_DEBUG is not set +# CONFIG_ATH11K_TRACING is not set # CONFIG_ATH12K is not set CONFIG_WLAN_VENDOR_ATMEL=y # CONFIG_AT76C50X_USB is not set @@ -2793,7 +2813,7 @@ CONFIG_INPUT_VIVALDIFMAP=y # # CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_JOYDEV=y -CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_EVBUG is not set # @@ -3075,7 +3095,7 @@ CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_N_GSM is not set # CONFIG_NOZOMI is not set -CONFIG_NULL_TTY=y +CONFIG_NULL_TTY=m CONFIG_HVC_DRIVER=y CONFIG_HVC_IRQ=y CONFIG_HVC_XEN=y @@ -6587,6 +6607,7 @@ CONFIG_QCOM_OCMEM=y CONFIG_QCOM_PD_MAPPER=m CONFIG_QCOM_PDR_HELPERS=y CONFIG_QCOM_PDR_MSG=y +# CONFIG_QCOM_PMIC_PDCHARGER_ULOG is not set CONFIG_QCOM_PMIC_GLINK=m CONFIG_QCOM_QMI_HELPERS=y # CONFIG_QCOM_RAMP_CTRL is not set @@ -7444,6 +7465,7 @@ CONFIG_STM=m # CONFIG_STM_DUMMY is not set # CONFIG_STM_SOURCE_CONSOLE is not set # CONFIG_STM_SOURCE_HEARTBEAT is not set +# CONFIG_STM_SOURCE_FTRACE is not set # CONFIG_INTEL_TH is not set # CONFIG_HISI_PTT is not set # end of HW tracing support @@ -7851,7 +7873,6 @@ CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y # CONFIG_INIT_STACK_NONE is not set # CONFIG_INIT_STACK_ALL_PATTERN is not set CONFIG_INIT_STACK_ALL_ZERO=y -# CONFIG_GCC_PLUGIN_STACKLEAK is not set # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y @@ -7865,9 +7886,9 @@ CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_BUG_ON_DATA_CORRUPTION is not set # end of Hardening of kernel data structures +CONFIG_CC_HAS_RANDSTRUCT=y CONFIG_RANDSTRUCT_NONE=y # CONFIG_RANDSTRUCT_FULL is not set -# CONFIG_RANDSTRUCT_PERFORMANCE is not set # end of Kernel hardening options # end of Security options @@ -8156,6 +8177,7 @@ CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y CONFIG_ARCH_USE_SYM_ANNOTATIONS=y CONFIG_INDIRECT_PIO=y +# CONFIG_TRACE_MMIO_ACCESS is not set # # Crypto library routines @@ -8285,6 +8307,7 @@ CONFIG_OID_REGISTRY=y CONFIG_UCS2_STRING=y CONFIG_HAVE_GENERIC_VDSO=y CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_COMPAT_VDSO=y CONFIG_GENERIC_VDSO_TIME_NS=y CONFIG_VDSO_GETRANDOM=y CONFIG_FONT_SUPPORT=y @@ -8344,9 +8367,7 @@ CONFIG_DEBUG_INFO_COMPRESSED_NONE=y # CONFIG_GDB_SCRIPTS is not set CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set # CONFIG_HEADERS_INSTALL is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_FRAME_POINTER=y @@ -8389,6 +8410,7 @@ CONFIG_SLUB_DEBUG=y # CONFIG_PAGE_OWNER is not set # CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_PAGE_REF is not set # CONFIG_DEBUG_RODATA_TEST is not set CONFIG_ARCH_HAS_DEBUG_WX=y # CONFIG_DEBUG_WX is not set @@ -8500,7 +8522,9 @@ CONFIG_RCU_TRACE=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set # CONFIG_LATENCYTOP is not set +# CONFIG_DEBUG_CGROUP_REF is not set CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y @@ -8510,8 +8534,45 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_OSNOISE_TRACER is not set +# CONFIG_TIMERLAT_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_KPROBE_EVENTS=y +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +# CONFIG_SYNTH_EVENTS is not set +# CONFIG_USER_EVENTS is not set +# CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACE_EVENT_INJECT is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_KPROBE_EVENT_GEN_TEST is not set +# CONFIG_RV is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y @@ -8547,6 +8608,7 @@ CONFIG_CORESIGHT_CTI=m # # CONFIG_KUNIT is not set # CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FUNCTION_ERROR_INJECTION is not set # CONFIG_FAULT_INJECTION is not set CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y diff --git a/device/testing/linux-realme-x3/disable-builtin-wcslen.patch b/device/testing/linux-realme-x3/disable-builtin-wcslen.patch new file mode 100644 index 000000000..cc3139470 --- /dev/null +++ b/device/testing/linux-realme-x3/disable-builtin-wcslen.patch @@ -0,0 +1,28 @@ +From 823246468ced0ba06f060c13c4b0db09a44512b9 Mon Sep 17 00:00:00 2001 +From: Aster Boese +Date: Tue, 3 Mar 2026 19:21:26 -0500 +Subject: [PATCH] disable-builtin-wcslen + +Backport 0af2f6be1b4281385b618cb86ad946eded089ac8 + +--- + Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/Makefile b/Makefile +index 79192a302..322ea1e7e 100644 +--- a/Makefile ++++ b/Makefile +@@ -1005,6 +1005,9 @@ ifdef CONFIG_CC_IS_GCC + KBUILD_CFLAGS += -fconserve-stack + endif + ++# Ensure compilers do not transform certain loops into calls to wcslen() ++KBUILD_CFLAGS += -fno-builtin-wcslen ++ + # change __FILE__ to the relative path from the srctree + KBUILD_CPPFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) + +-- +2.53.0 +