# REQUIRES: x86 # RUN: rm -rf %t && split-file %s %t && cd %t # RUN: llvm-mc -filetype=obj -triple=x86_64 randomdata.s -o randomdata.o # RUN: ld.lld randomdata.o -o randomdata # RUN: llvm-readelf -S -l randomdata | FileCheck %s --check-prefix=RANDOMDATA # RUN: llvm-mc -filetype=obj -triple=x86_64 /dev/null -o wxneeded.o # RUN: ld.lld -z wxneeded wxneeded.o -o wxneeded # RUN: llvm-readelf -l wxneeded | FileCheck %s --check-prefix=WXNEEDED # RUN: ld.lld -T lds randomdata.o -o out # RUN: llvm-readelf -S -l out | FileCheck %s --check-prefixes=RANDOMDATA,CHECK # RANDOMDATA: Name Type Address Off Size ES Flg Lk Inf Al # RANDOMDATA: .openbsd.randomdata PROGBITS [[ADDR:[0-9a-f]+]] [[O:[0-9a-f]+]] 000008 00 A 0 0 1 # WXNEEDED: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align # WXNEEDED: OPENBSD_WXNEEDED 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 E 0 # RANDOMDATA: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align # RANDOMDATA: OPENBSD_RANDOMIZE 0x[[O]] 0x[[ADDR]] 0x[[ADDR]] 0x000008 0x000008 R 0x1 # CHECK-NEXT: OPENBSD_BOOTDATA 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 R 0 # CHECK-NEXT: OPENBSD_WXNEEDED 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 R 0 #--- randomdata.s .section .openbsd.randomdata, "a" .quad 0 #--- lds PHDRS { text PT_LOAD FILEHDR PHDRS; rand PT_OPENBSD_RANDOMIZE; boot PT_OPENBSD_BOOTDATA; wxneeded PT_OPENBSD_WXNEEDED; } SECTIONS { . = SIZEOF_HEADERS; .text : { *(.text) } .openbsd.randomdata : { *(.openbsd.randomdata) } : rand }