xref: /llvm-project/bolt/test/X86/linux-version.S (revision 6e8a1a45a783c13e4cd19bfd20b7a56cab6f7d81)
1*6e8a1a45SFranklin# REQUIRES: system-linux
2*6e8a1a45SFranklin
3*6e8a1a45SFranklin## Check that BOLT correctly detects the Linux kernel version
4*6e8a1a45SFranklin
5*6e8a1a45SFranklin# RUN: %clang -DA -target x86_64-unknown-unknown \
6*6e8a1a45SFranklin# RUN:   %cflags -nostdlib %s -o %t.exe \
7*6e8a1a45SFranklin# RUN:   -Wl,--image-base=0xffffffff80000000,--no-dynamic-linker,--no-eh-frame-hdr
8*6e8a1a45SFranklin# RUN: llvm-bolt %t.exe -o %t.out 2>&1 | FileCheck --check-prefix=CHECK-A %s
9*6e8a1a45SFranklin
10*6e8a1a45SFranklin# RUN: %clang -DB -target x86_64-unknown-unknown \
11*6e8a1a45SFranklin# RUN:   %cflags -nostdlib %s -o %t.exe \
12*6e8a1a45SFranklin# RUN:   -Wl,--image-base=0xffffffff80000000,--no-dynamic-linker,--no-eh-frame-hdr
13*6e8a1a45SFranklin# RUN: llvm-bolt %t.exe -o %t.out 2>&1 | FileCheck --check-prefix=CHECK-B %s
14*6e8a1a45SFranklin
15*6e8a1a45SFranklin# RUN: %clang -DC -target x86_64-unknown-unknown \
16*6e8a1a45SFranklin# RUN:   %cflags -nostdlib %s -o %t.exe \
17*6e8a1a45SFranklin# RUN:   -Wl,--image-base=0xffffffff80000000,--no-dynamic-linker,--no-eh-frame-hdr
18*6e8a1a45SFranklin# RUN: llvm-bolt %t.exe -o %t.out 2>&1 | FileCheck --check-prefix=CHECK-C %s
19*6e8a1a45SFranklin
20*6e8a1a45SFranklin  .text
21*6e8a1a45SFranklin  .globl foo
22*6e8a1a45SFranklin  .type foo, %function
23*6e8a1a45SFranklinfoo:
24*6e8a1a45SFranklin  ret
25*6e8a1a45SFranklin  .size foo, .-foo
26*6e8a1a45SFranklin
27*6e8a1a45SFranklin## Linux kernel version
28*6e8a1a45SFranklin  .rodata
29*6e8a1a45SFranklin  .align 16
30*6e8a1a45SFranklin  .globl linux_banner
31*6e8a1a45SFranklin  .type  linux_banner, @object
32*6e8a1a45SFranklinlinux_banner:
33*6e8a1a45SFranklin
34*6e8a1a45SFranklin#ifdef A
35*6e8a1a45SFranklin  .string  "Linux version 6.6.61\n"
36*6e8a1a45SFranklin#endif
37*6e8a1a45SFranklin# CHECK-A: BOLT-INFO: Linux kernel version is 6.6.61
38*6e8a1a45SFranklin
39*6e8a1a45SFranklin#ifdef B
40*6e8a1a45SFranklin  .string  "Linux version 6.6.50-rc4\n"
41*6e8a1a45SFranklin#endif
42*6e8a1a45SFranklin# CHECK-B: BOLT-INFO: Linux kernel version is 6.6.50
43*6e8a1a45SFranklin
44*6e8a1a45SFranklin#ifdef C
45*6e8a1a45SFranklin  .string  "Linux version 6.6\n"
46*6e8a1a45SFranklin#endif
47*6e8a1a45SFranklin# CHECK-C: BOLT-INFO: Linux kernel version is 6.6
48*6e8a1a45SFranklin
49*6e8a1a45SFranklin  .size  linux_banner, . - linux_banner
50*6e8a1a45SFranklin
51*6e8a1a45SFranklin## Fake Linux Kernel sections.
52*6e8a1a45SFranklin  .section __ksymtab,"a",@progbits
53*6e8a1a45SFranklin  .section __ksymtab_gpl,"a",@progbits
54