blob: 6657728aa42f346e06cc0f4f3f7013c11ce5e668 [file] [log] [blame] [edit]
# Check that BOLT marks segment containing .bolt_reserved as executable
# RUN: split-file %s %t
# RUN: %clang %cflags %t/src.c -Wl,--script=%t/ld.script -Wl,-q -o %t.exe
# Confirm the segment is not executable
# RUN: llvm-readelf -We %t.exe | FileCheck %s --check-prefix=CHECK-SEG-BEFORE
# Capture section VMA and offset
# CHECK-SEG-BEFORE: Section Headers:
# CHECK-SEG-BEFORE: .bolt.reserved PROGBITS [[#ADDR:]] [[#OFF:]]
# Config segment flags
# CHECK-SEG-BEFORE: Program Headers:
# CHECK-SEG-BEFORE: LOAD 0x{{0*}}[[#OFF]] 0x{{0*}}[[#ADDR]] {{.*}} R 0x200000
# RUN: llvm-bolt %t.exe -o %t.bolt
# Confirm the segment is now marked as executable
# RUN: llvm-readelf -We %t.bolt | FileCheck %s --check-prefix=CHECK-SEG-AFTER
# CHECK-SEG-AFTER: .bolt.reserved PROGBITS [[#ADDR:]] [[#OFF:]]
# CHECK-SEG-AFTER: LOAD 0x{{0*}}[[#OFF]] 0x{{0*}}[[#ADDR]] {{.*}} R E 0x200000
#--- src.c
int main() { return 0; }
#--- ld.script
SECTIONS {
.bolt.reserved : ALIGN(2M) {
__bolt_reserved_start = .;
. += 2M;
__bolt_reserved_end = .;
}
} INSERT AFTER .text;