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