# This tests verifies functionality of NMAGIC that we create only two segments, # PT_LOAD, PT_TLS # The data segment should be aligned to a page boundary RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/nmagic.o \ RUN: --noinhibit-exec -o %t --nmagic -static RUN: llvm-readobj -sections %t | FileCheck -check-prefix=NMAGICSECTIONS %s RUN: llvm-readobj -program-headers %t | FileCheck -check-prefix=NMAGICPROGRAMHEADERS %s NMAGICSECTIONS: Section { NMAGICSECTIONS: Index: 0 NMAGICSECTIONS: Name: (0) NMAGICSECTIONS: Type: SHT_NULL (0x0) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .text NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .eh_frame NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .tdata NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .tbss NMAGICSECTIONS: Type: SHT_NOBITS (0x8) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .got.plt NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .data NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .bss NMAGICSECTIONS: Type: SHT_NOBITS (0x8) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .comment NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .note.GNU-stack NMAGICSECTIONS: Type: SHT_PROGBITS (0x1) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .shstrtab NMAGICSECTIONS: Type: SHT_STRTAB (0x3) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .symtab NMAGICSECTIONS: Type: SHT_SYMTAB (0x2) NMAGICSECTIONS: } NMAGICSECTIONS: Section { NMAGICSECTIONS: Name: .strtab NMAGICSECTIONS: Type: SHT_STRTAB (0x3) NMAGICSECTIONS: } NMAGICPROGRAMHEADERS: ProgramHeaders [ NMAGICPROGRAMHEADERS: ProgramHeader { NMAGICPROGRAMHEADERS: Type: PT_LOAD (0x1) NMAGICPROGRAMHEADERS: Offset: 0x0 NMAGICPROGRAMHEADERS: VirtualAddress: 0x400000 NMAGICPROGRAMHEADERS: PhysicalAddress: 0x400000 NMAGICPROGRAMHEADERS: FileSize: 4108 NMAGICPROGRAMHEADERS: MemSize: 4108 NMAGICPROGRAMHEADERS: Flags [ (0x7) NMAGICPROGRAMHEADERS: PF_R (0x4) NMAGICPROGRAMHEADERS: PF_W (0x2) NMAGICPROGRAMHEADERS: PF_X (0x1) NMAGICPROGRAMHEADERS: ] NMAGICPROGRAMHEADERS: Alignment: 8 NMAGICPROGRAMHEADERS: } NMAGICPROGRAMHEADERS: ProgramHeader { NMAGICPROGRAMHEADERS: Type: PT_TLS (0x7) NMAGICPROGRAMHEADERS: Offset: 0x1000 NMAGICPROGRAMHEADERS: VirtualAddress: 0x401000 NMAGICPROGRAMHEADERS: PhysicalAddress: 0x401000 NMAGICPROGRAMHEADERS: FileSize: 4 NMAGICPROGRAMHEADERS: MemSize: 12 NMAGICPROGRAMHEADERS: Flags [ (0x6) NMAGICPROGRAMHEADERS: PF_R (0x4) NMAGICPROGRAMHEADERS: PF_W (0x2) NMAGICPROGRAMHEADERS: ] NMAGICPROGRAMHEADERS: Alignment: 4 NMAGICPROGRAMHEADERS: } NMAGICPROGRAMHEADERS: ]