xref: /llvm-project/bolt/test/runtime/bolt-reserved.cpp (revision 003b48e0cbbb69a9a1ca9ff1a6d3bda30d0c6121)
1ff0c5ccbSMaksim Panchenko // REQUIRES: system-linux
2ff0c5ccbSMaksim Panchenko 
3ff0c5ccbSMaksim Panchenko /*
4ff0c5ccbSMaksim Panchenko  * Check that llvm-bolt uses reserved space in a binary for allocating
5ff0c5ccbSMaksim Panchenko  * new sections.
6ff0c5ccbSMaksim Panchenko  */
7ff0c5ccbSMaksim Panchenko 
8*003b48e0SRaul Tambre // RUN: %clangxx %s -o %t.exe -Wl,-q
9ff0c5ccbSMaksim Panchenko // RUN: llvm-bolt %t.exe -o %t.bolt.exe 2>&1 | FileCheck %s
10ff0c5ccbSMaksim Panchenko // RUN: %t.bolt.exe
11ff0c5ccbSMaksim Panchenko 
12ff0c5ccbSMaksim Panchenko // CHECK: BOLT-INFO: using reserved space
13ff0c5ccbSMaksim Panchenko 
14ff0c5ccbSMaksim Panchenko /*
15ff0c5ccbSMaksim Panchenko  * Check that llvm-bolt detects a condition when the reserved space is
16ff0c5ccbSMaksim Panchenko  * not enough for allocating new sections.
17ff0c5ccbSMaksim Panchenko  */
18ff0c5ccbSMaksim Panchenko 
19*003b48e0SRaul Tambre // RUN: %clangxx %s -o %t.tiny.exe -Wl,--no-eh-frame-hdr -Wl,-q -DTINY
20c8864bceSMaksim Panchenko // RUN: not llvm-bolt %t.tiny.exe -o %t.tiny.bolt.exe 2>&1 | \
21ff0c5ccbSMaksim Panchenko // RUN:   FileCheck %s --check-prefix=CHECK-TINY
22ff0c5ccbSMaksim Panchenko 
23ff0c5ccbSMaksim Panchenko // CHECK-TINY: BOLT-ERROR: reserved space (1 byte) is smaller than required
24ff0c5ccbSMaksim Panchenko 
25ff0c5ccbSMaksim Panchenko #ifdef TINY
26ff0c5ccbSMaksim Panchenko #define RSIZE "1"
27ff0c5ccbSMaksim Panchenko #else
28ff0c5ccbSMaksim Panchenko #define RSIZE "8192 * 1024"
29ff0c5ccbSMaksim Panchenko #endif
30ff0c5ccbSMaksim Panchenko 
31ff0c5ccbSMaksim Panchenko asm(".pushsection .text \n\
32ff0c5ccbSMaksim Panchenko        .globl __bolt_reserved_start \n\
33ff0c5ccbSMaksim Panchenko        .type __bolt_reserved_start, @object \n\
34ff0c5ccbSMaksim Panchenko        __bolt_reserved_start: \n\
35ff0c5ccbSMaksim Panchenko        .space " RSIZE " \n\
36ff0c5ccbSMaksim Panchenko        .globl __bolt_reserved_end \n\
37ff0c5ccbSMaksim Panchenko        __bolt_reserved_end: \n\
38ff0c5ccbSMaksim Panchenko      .popsection");
39ff0c5ccbSMaksim Panchenko 
40ff0c5ccbSMaksim Panchenko int main() { return 0; }
41