aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorSean Silva <silvas@purdue.edu>2013-06-10 23:44:15 +0000
committerSean Silva <silvas@purdue.edu>2013-06-10 23:44:15 +0000
commit5918b7a03d4d6a52e18f7c102250c9cfd6ae52dd (patch)
tree0b504cae7496e7c519b6ac722286e70ffed66b3f /test
parent9bdd78501484a1add2d8a757fd29960dd9fc9de7 (diff)
downloadexternal_llvm-5918b7a03d4d6a52e18f7c102250c9cfd6ae52dd.zip
external_llvm-5918b7a03d4d6a52e18f7c102250c9cfd6ae52dd.tar.gz
external_llvm-5918b7a03d4d6a52e18f7c102250c9cfd6ae52dd.tar.bz2
[yaml2obj] Initial ELF support.
Currently, only emitting the ELF header is supported (no sections or segments). The ELFYAML code organization is broadly similar to the COFFYAML code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183711 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Object/Inputs/ELF/BE32.yaml6
-rw-r--r--test/Object/Inputs/ELF/BE64.yaml6
-rw-r--r--test/Object/Inputs/ELF/Header.yaml7
-rw-r--r--test/Object/Inputs/ELF/LE32.yaml6
-rw-r--r--test/Object/Inputs/ELF/LE64.yaml6
-rw-r--r--test/Object/yaml2obj-elf-basic.test32
-rw-r--r--test/Object/yaml2obj-elf-bits-endian.test16
7 files changed, 79 insertions, 0 deletions
diff --git a/test/Object/Inputs/ELF/BE32.yaml b/test/Object/Inputs/ELF/BE32.yaml
new file mode 100644
index 0000000..3709ff7
--- /dev/null
+++ b/test/Object/Inputs/ELF/BE32.yaml
@@ -0,0 +1,6 @@
+!ELF
+Header: !Header
+ Class: ELFCLASS32
+ Data: ELFDATA2MSB
+ Type: ET_EXEC
+ Machine: EM_PPC
diff --git a/test/Object/Inputs/ELF/BE64.yaml b/test/Object/Inputs/ELF/BE64.yaml
new file mode 100644
index 0000000..d1c4401
--- /dev/null
+++ b/test/Object/Inputs/ELF/BE64.yaml
@@ -0,0 +1,6 @@
+!ELF
+Header: !Header
+ Class: ELFCLASS64
+ Data: ELFDATA2MSB
+ Type: ET_EXEC
+ Machine: EM_PPC64
diff --git a/test/Object/Inputs/ELF/Header.yaml b/test/Object/Inputs/ELF/Header.yaml
new file mode 100644
index 0000000..085b120
--- /dev/null
+++ b/test/Object/Inputs/ELF/Header.yaml
@@ -0,0 +1,7 @@
+!ELF
+Header: !Header
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+ Entry: 0x400000
diff --git a/test/Object/Inputs/ELF/LE32.yaml b/test/Object/Inputs/ELF/LE32.yaml
new file mode 100644
index 0000000..a4f30fb
--- /dev/null
+++ b/test/Object/Inputs/ELF/LE32.yaml
@@ -0,0 +1,6 @@
+!ELF
+Header: !Header
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_386
diff --git a/test/Object/Inputs/ELF/LE64.yaml b/test/Object/Inputs/ELF/LE64.yaml
new file mode 100644
index 0000000..cd0ca25
--- /dev/null
+++ b/test/Object/Inputs/ELF/LE64.yaml
@@ -0,0 +1,6 @@
+!ELF
+Header: !Header
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
diff --git a/test/Object/yaml2obj-elf-basic.test b/test/Object/yaml2obj-elf-basic.test
new file mode 100644
index 0000000..e97ad20
--- /dev/null
+++ b/test/Object/yaml2obj-elf-basic.test
@@ -0,0 +1,32 @@
+RUN: yaml2obj -format=elf %p/Inputs/ELF/Header.yaml | llvm-readobj -file-headers - | FileCheck %s
+
+// CHECK: File: <stdin>
+// CHECK-NEXT: Format: ELF64-x86-64
+// CHECK-NEXT: Arch: x86_64
+// CHECK-NEXT: AddressSize: 64bit
+// CHECK-NEXT: LoadName:
+// CHECK-NEXT: ElfHeader {
+// CHECK-NEXT: Ident {
+// CHECK-NEXT: Magic: (7F 45 4C 46)
+// CHECK-NEXT: Class: 64-bit (0x2)
+// CHECK-NEXT: DataEncoding: LittleEndian (0x1)
+// CHECK-NEXT: FileVersion: 1
+// CHECK-NEXT: OS/ABI: SystemV (0x0)
+// CHECK-NEXT: ABIVersion: 0
+// CHECK-NEXT: Unused: (00 00 00 00 00 00 00)
+// CHECK-NEXT: }
+// CHECK-NEXT: Type: Executable (0x2)
+// CHECK-NEXT: Machine: EM_X86_64 (0x3E)
+// CHECK-NEXT: Version: 1
+// CHECK-NEXT: Entry: 0x400000
+// CHECK-NEXT: ProgramHeaderOffset: 0x0
+// CHECK-NEXT: SectionHeaderOffset: 0x0
+// CHECK-NEXT: Flags [ (0x0)
+// CHECK-NEXT: ]
+// CHECK-NEXT: HeaderSize: 64
+// CHECK-NEXT: ProgramHeaderEntrySize: 0
+// CHECK-NEXT: ProgramHeaderCount: 0
+// CHECK-NEXT: SectionHeaderEntrySize: 0
+// CHECK-NEXT: SectionHeaderCount: 0
+// CHECK-NEXT: StringTableSectionIndex: 0
+// CHECK-NEXT: }
diff --git a/test/Object/yaml2obj-elf-bits-endian.test b/test/Object/yaml2obj-elf-bits-endian.test
new file mode 100644
index 0000000..4be9a44
--- /dev/null
+++ b/test/Object/yaml2obj-elf-bits-endian.test
@@ -0,0 +1,16 @@
+RUN: yaml2obj -format=elf %p/Inputs/ELF/LE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE64
+RUN: yaml2obj -format=elf %p/Inputs/ELF/BE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE64
+RUN: yaml2obj -format=elf %p/Inputs/ELF/LE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE32
+RUN: yaml2obj -format=elf %p/Inputs/ELF/BE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE32
+
+LE64: Class: 64-bit (0x2)
+LE64-NEXT: DataEncoding: LittleEndian (0x1)
+
+BE64: Class: 64-bit (0x2)
+BE64-NEXT: DataEncoding: BigEndian (0x2)
+
+LE32: Class: 32-bit (0x1)
+LE32-NEXT: DataEncoding: LittleEndian (0x1)
+
+BE32: Class: 32-bit (0x1)
+BE32-NEXT: DataEncoding: BigEndian (0x2)