llvm-project/bolt/test/X86/linux-version.S
Franklin 6e8a1a45a7
[BOLT] Detect Linux kernel version if the binary is a Linux kernel (#119088)
This makes it easier to handle differences (e.g. of exception table
entry size) between versions of Linux kernel
2024-12-26 09:54:23 -08:00

54 lines
1.5 KiB
ArmAsm

# REQUIRES: system-linux
## Check that BOLT correctly detects the Linux kernel version
# RUN: %clang -DA -target x86_64-unknown-unknown \
# RUN: %cflags -nostdlib %s -o %t.exe \
# RUN: -Wl,--image-base=0xffffffff80000000,--no-dynamic-linker,--no-eh-frame-hdr
# RUN: llvm-bolt %t.exe -o %t.out 2>&1 | FileCheck --check-prefix=CHECK-A %s
# RUN: %clang -DB -target x86_64-unknown-unknown \
# RUN: %cflags -nostdlib %s -o %t.exe \
# RUN: -Wl,--image-base=0xffffffff80000000,--no-dynamic-linker,--no-eh-frame-hdr
# RUN: llvm-bolt %t.exe -o %t.out 2>&1 | FileCheck --check-prefix=CHECK-B %s
# RUN: %clang -DC -target x86_64-unknown-unknown \
# RUN: %cflags -nostdlib %s -o %t.exe \
# RUN: -Wl,--image-base=0xffffffff80000000,--no-dynamic-linker,--no-eh-frame-hdr
# RUN: llvm-bolt %t.exe -o %t.out 2>&1 | FileCheck --check-prefix=CHECK-C %s
.text
.globl foo
.type foo, %function
foo:
ret
.size foo, .-foo
## Linux kernel version
.rodata
.align 16
.globl linux_banner
.type linux_banner, @object
linux_banner:
#ifdef A
.string "Linux version 6.6.61\n"
#endif
# CHECK-A: BOLT-INFO: Linux kernel version is 6.6.61
#ifdef B
.string "Linux version 6.6.50-rc4\n"
#endif
# CHECK-B: BOLT-INFO: Linux kernel version is 6.6.50
#ifdef C
.string "Linux version 6.6\n"
#endif
# CHECK-C: BOLT-INFO: Linux kernel version is 6.6
.size linux_banner, . - linux_banner
## Fake Linux Kernel sections.
.section __ksymtab,"a",@progbits
.section __ksymtab_gpl,"a",@progbits