summaryrefslogtreecommitdiff
path: root/test/elf/X86_64/nmagic.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/elf/X86_64/nmagic.test')
-rw-r--r--test/elf/X86_64/nmagic.test91
1 files changed, 91 insertions, 0 deletions
diff --git a/test/elf/X86_64/nmagic.test b/test/elf/X86_64/nmagic.test
new file mode 100644
index 000000000000..b313c1f051ba
--- /dev/null
+++ b/test/elf/X86_64/nmagic.test
@@ -0,0 +1,91 @@
+# 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: ]