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