summaryrefslogtreecommitdiff
path: root/test/Object
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2015-08-07 23:01:33 +0000
committerDimitry Andric <dim@FreeBSD.org>2015-08-07 23:01:33 +0000
commitee8648bdac07986a0f1ec897b02ec82a2f144d46 (patch)
tree52d1861acda1205241ee35a94aa63129c604d469 /test/Object
parent1a82d4c088707c791c792f6822f611b47a12bdfe (diff)
Diffstat (limited to 'test/Object')
-rw-r--r--test/Object/Inputs/elf-mip64-reloc.obin0 -> 3208 bytes
-rw-r--r--test/Object/Inputs/invalid-bad-section-address.coffbin0 -> 304 bytes
-rw-r--r--test/Object/Inputs/no-section-table.sobin0 -> 2544 bytes
-rw-r--r--test/Object/Inputs/symtab-only.abin0 -> 72 bytes
-rw-r--r--test/Object/Inputs/thin-path.abin0 -> 284 bytes
-rw-r--r--test/Object/Inputs/trivial-object-test2.macho-x86-64bin0 -> 360 bytes
-rw-r--r--test/Object/Mips/elf-mips64-rel.yaml1
-rw-r--r--test/Object/Mips/reloc-visit.test6
-rw-r--r--test/Object/X86/nm-coff.s9
-rw-r--r--test/Object/X86/nm-macho.s9
-rw-r--r--test/Object/X86/nm-print-size.s6
-rw-r--r--test/Object/archive-extract.test (renamed from test/Object/extract.ll)17
-rw-r--r--test/Object/archive-format.test20
-rw-r--r--test/Object/archive-symtab.test35
-rw-r--r--test/Object/archive-toc.test10
-rw-r--r--test/Object/archive-update.test13
-rw-r--r--test/Object/coff-archive.test37
-rw-r--r--test/Object/coff-invalid.test13
-rw-r--r--test/Object/no-section-table.test36
-rw-r--r--test/Object/obj2yaml.test3
-rw-r--r--test/Object/yaml2obj-elf-alignment.yaml53
-rw-r--r--test/Object/yaml2obj-elf-rel-noref.yaml2
-rw-r--r--test/Object/yaml2obj-elf-rel.yaml4
-rw-r--r--test/Object/yaml2obj-elf-section-basic.yaml5
-rw-r--r--test/Object/yaml2obj-elf-symbol-basic.yaml1
25 files changed, 239 insertions, 41 deletions
diff --git a/test/Object/Inputs/elf-mip64-reloc.o b/test/Object/Inputs/elf-mip64-reloc.o
new file mode 100644
index 000000000000..5e689254a43e
--- /dev/null
+++ b/test/Object/Inputs/elf-mip64-reloc.o
Binary files differ
diff --git a/test/Object/Inputs/invalid-bad-section-address.coff b/test/Object/Inputs/invalid-bad-section-address.coff
new file mode 100644
index 000000000000..8d96e0137515
--- /dev/null
+++ b/test/Object/Inputs/invalid-bad-section-address.coff
Binary files differ
diff --git a/test/Object/Inputs/no-section-table.so b/test/Object/Inputs/no-section-table.so
new file mode 100644
index 000000000000..fd176ebf7ce0
--- /dev/null
+++ b/test/Object/Inputs/no-section-table.so
Binary files differ
diff --git a/test/Object/Inputs/symtab-only.a b/test/Object/Inputs/symtab-only.a
new file mode 100644
index 000000000000..611236bf3a15
--- /dev/null
+++ b/test/Object/Inputs/symtab-only.a
Binary files differ
diff --git a/test/Object/Inputs/thin-path.a b/test/Object/Inputs/thin-path.a
new file mode 100644
index 000000000000..d48fd8746898
--- /dev/null
+++ b/test/Object/Inputs/thin-path.a
Binary files differ
diff --git a/test/Object/Inputs/trivial-object-test2.macho-x86-64 b/test/Object/Inputs/trivial-object-test2.macho-x86-64
new file mode 100644
index 000000000000..75eedb6dd312
--- /dev/null
+++ b/test/Object/Inputs/trivial-object-test2.macho-x86-64
Binary files differ
diff --git a/test/Object/Mips/elf-mips64-rel.yaml b/test/Object/Mips/elf-mips64-rel.yaml
index 8b595099b9e5..7c41b78e6adc 100644
--- a/test/Object/Mips/elf-mips64-rel.yaml
+++ b/test/Object/Mips/elf-mips64-rel.yaml
@@ -58,6 +58,7 @@ Sections:
- Name: .rela.text
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
+ AddressAlign: 0x8
Info: .text
Relocations:
- Offset: 0x14
diff --git a/test/Object/Mips/reloc-visit.test b/test/Object/Mips/reloc-visit.test
new file mode 100644
index 000000000000..d75551a387ce
--- /dev/null
+++ b/test/Object/Mips/reloc-visit.test
@@ -0,0 +1,6 @@
+RUN: llvm-dwarfdump -debug-dump=info %p/../Inputs/elf-mip64-reloc.o 2>&1 | \
+RUN: FileCheck %s
+
+CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000037] = "<stdin>")
+CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000054] = "foo")
+CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000058] = "int")
diff --git a/test/Object/X86/nm-coff.s b/test/Object/X86/nm-coff.s
new file mode 100644
index 000000000000..b8f28c7e52af
--- /dev/null
+++ b/test/Object/X86/nm-coff.s
@@ -0,0 +1,9 @@
+// RUN: llvm-mc %s -o %t -filetype=obj -triple=x86_64-pc-win32
+// RUN: llvm-nm --undefined-only %t | FileCheck %s
+// CHECK: w foo
+
+g:
+ movl foo(%rip), %eax
+ retq
+
+ .weak foo
diff --git a/test/Object/X86/nm-macho.s b/test/Object/X86/nm-macho.s
new file mode 100644
index 000000000000..7bdfa34ca366
--- /dev/null
+++ b/test/Object/X86/nm-macho.s
@@ -0,0 +1,9 @@
+// RUN: llvm-mc %s -o %t -filetype=obj -triple=x86_64-apple-darwin
+// RUN: llvm-nm -n %t | FileCheck %s
+// CHECK: 0000000000000000 t _f
+// CHECK: 0000000000000004 C _a
+
+_f:
+ retq
+
+ .comm _a,4
diff --git a/test/Object/X86/nm-print-size.s b/test/Object/X86/nm-print-size.s
index b833601969c2..a755ffa3ded6 100644
--- a/test/Object/X86/nm-print-size.s
+++ b/test/Object/X86/nm-print-size.s
@@ -3,6 +3,8 @@
// CHECK: 0000000000000000 ffffffffffffffff n a
// CHECK: 0000000000000000 0000000000000000 N b
+// CHECK: 0000000000000004 0000000000000004 C c
+// CHECK: ffffffffffffffff 0000000000000000 a d
.section foo
a:
@@ -10,3 +12,7 @@ a:
.global b
b:
+
+ .comm c,4,8
+
+d = 0xffffffffffffffff
diff --git a/test/Object/extract.ll b/test/Object/archive-extract.test
index 8d77f09fe88c..a77adf2cabbd 100644
--- a/test/Object/extract.ll
+++ b/test/Object/archive-extract.test
@@ -1,5 +1,3 @@
-; This isn't really an assembly file, its just here to run the test.
-
; This test just makes sure that llvm-ar can extract bytecode members
; from various style archives.
@@ -39,7 +37,20 @@
; RUN: rm -f very_long_bytecode_file_name.bc
; RUN: llvm-ar xo %p/Inputs/GNU.a very_long_bytecode_file_name.bc
; RUN: rm -f %t.a
-; RUN: llvm-ar rc %t.a very_long_bytecode_file_name.bc
+; RUN: llvm-ar rcU %t.a very_long_bytecode_file_name.bc
; RUN: env TZ=GMT llvm-ar tv %t.a | FileCheck %s
CHECK: 1465 2004-11-19 03:01:31.000000000 very_long_bytecode_file_name.bc
+
+
+RUN: not llvm-ar x %p/Inputs/GNU.a foo.o 2>&1 | FileCheck --check-prefix=NOTFOUND %s
+NOTFOUND: foo.o was not found
+
+RUN: not llvm-ar x %p/Inputs/thin.a foo.o 2>&1 | FileCheck %s --check-prefix=THINEXTRACT
+THINEXTRACT: extracting from a thin archive is not supported
+
+RUN: llvm-ar p %p/Inputs/thin.a evenlen | FileCheck %s --check-prefix=EVENLEN
+EVENLEN: evenlen
+
+RUN: not llvm-ar p %p/Inputs/thin-path.a t/test2.o | FileCheck %s --check-prefix=MISSING
+MISSING: No such file or directory.
diff --git a/test/Object/archive-format.test b/test/Object/archive-format.test
index f076123d2ea1..40af9a33d8d7 100644
--- a/test/Object/archive-format.test
+++ b/test/Object/archive-format.test
@@ -7,13 +7,23 @@ RUN: cd %t
RUN: echo -n bar. > 0123456789abcde
RUN: echo -n zed. > 0123456789abcdef
-RUN: rm -f test.a
-RUN: llvm-ar rc test.a 0123456789abcde 0123456789abcdef
-RUN: cat test.a | FileCheck -strict-whitespace %s
+RUN: rm -f %t.a
+RUN: llvm-ar --format=gnu rc %t.a 0123456789abcde 0123456789abcdef
+RUN: cat %t.a | FileCheck -strict-whitespace %s
CHECK: !<arch>
CHECK-NEXT: // 18 `
CHECK-NEXT: 0123456789abcdef/
-CHECK-NEXT: 0123456789abcde/{{................................}}4 `
-CHECK-NEXT: bar./0 {{................................}}4 `
+CHECK-NEXT: 0123456789abcde/0 0 0 644 4 `
+CHECK-NEXT: bar./0 0 0 0 644 4 `
CHECK-NEXT: zed.
+
+RUN: rm -f %t.a
+RUN: llvm-ar --format=bsd rc %t.a 0123456789abcde 0123456789abcdef
+RUN: cat %t.a | FileCheck -strict-whitespace --check-prefix=BSD %s
+
+BSD: !<arch>
+BSD-NEXT: #1/20 0 0 0 644 24 `
+BSD-NEXT: 0123456789abcde{{.....}}bar.
+BSD-SAME: #1/16 0 0 0 644 20 `
+BSD-NEXT: 0123456789abcdefzed.
diff --git a/test/Object/archive-symtab.test b/test/Object/archive-symtab.test
index 01f17bcc8b61..6e4c76fb3768 100644
--- a/test/Object/archive-symtab.test
+++ b/test/Object/archive-symtab.test
@@ -1,5 +1,5 @@
RUN: rm -f %t.a
-RUN: llvm-ar rcs %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
+RUN: llvm-ar rcsU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck %s
CHECK: Archive map
@@ -19,7 +19,7 @@ CHECK-NEXT: 0000000000000006 T foo
CHECK-NEXT: 0000000000000016 T main
RUN: rm -f %t.a
-RUN: llvm-ar rcS %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
+RUN: llvm-ar rcSU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP
NOMAP-NOT: Archive map
@@ -54,7 +54,7 @@ RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT
repeate the test with llvm-ranlib
RUN: rm -f %t.a
-RUN: llvm-ar rcS %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
+RUN: llvm-ar rcSU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP
RUN: llvm-ranlib %t.a
@@ -66,3 +66,32 @@ RUN: llvm-nm -M %p/Inputs/macho-archive-unsorted-x86_64.a | FileCheck %s --check
BSD-MachO: Archive map
BSD-MachO: _bar in bar.o
BSD-MachO: _foo in foo.o
+
+RUN: rm -f %t.a
+RUN: llvm-ar --format=bsd rcsU %t.a %p/Inputs/trivial-object-test.macho-x86-64 %p/Inputs/trivial-object-test2.macho-x86-64
+RUN: llvm-nm -M %t.a | FileCheck --check-prefix=MACHO %s
+
+MACHO: Archive map
+MACHO-NEXT: _main in trivial-object-test.macho-x86-64
+MACHO-NEXT: _foo in trivial-object-test2.macho-x86-64
+MACHO-NEXT: _main in trivial-object-test2.macho-x86-64
+MACHO-NOT: bar
+
+MACHO: trivial-object-test.macho-x86-64
+MACHO-NEXT: 0000000000000028 s L_.str
+MACHO-NEXT: U _SomeOtherFunction
+MACHO-NEXT: 0000000000000000 T _main
+MACHO-NEXT: U _puts
+
+MACHO: trivial-object-test2.macho-x86-64
+MACHO-NEXT: 0000000000000000 t _bar
+MACHO-NEXT: 0000000000000001 T _foo
+MACHO-NEXT: 0000000000000002 T _main
+
+Test that we pad the symbol table so that it ends in a multiple of 4 bytes:
+8 + 60 + 36 == 104
+RUN: rm -f %t.a
+RUN: llvm-ar --format=bsd rcsU %t.a %p/Inputs/trivial-object-test.macho-x86-64
+RUN: FileCheck --check-prefix=MACHO-SYMTAB-ALIGN %s < %t.a
+MACHO-SYMTAB-ALIGN: !<arch>
+MACHO-SYMTAB-ALIGN-NEXT: #1/12 {{..........}} 0 0 0 36 `
diff --git a/test/Object/archive-toc.test b/test/Object/archive-toc.test
index 79a6e0e0ba80..cca4b868c46b 100644
--- a/test/Object/archive-toc.test
+++ b/test/Object/archive-toc.test
@@ -34,3 +34,13 @@ THIN: rw-r--r-- 1000/1000 8 2014-12-16 00:56:27.000000000 evenlen
THIN-NEXT: rw-r--r-- 1000/1000 7 2014-12-16 00:56:27.000000000 oddlen
THIN-NEXT: rwxr-xr-x 1000/1000 1465 2014-12-16 00:56:27.000000000 very_long_bytecode_file_name.bc
THIN-NEXT: rw-r--r-- 1000/1000 2280 2014-12-16 00:56:27.000000000 IsNAN.o
+
+Test reading an archive with just a symbol table. We use to reject them.
+RUN: llvm-ar tv %p/Inputs/symtab-only.a | FileCheck --allow-empty --check-prefix=EMPTY %s
+EMPTY-NOT: {{.}}
+
+Test reading a thin archive with directory names.
+RUN: env TZ=GMT llvm-ar tv %p/Inputs/thin-path.a | FileCheck %s --check-prefix=THINPATH -strict-whitespace
+
+THINPATH: rw-r--r-- 0/0 1224 1970-01-01 00:00:00.000000000 test.o
+THINPATH-NEXT: rw-r--r-- 0/0 1224 1970-01-01 00:00:00.000000000 t/test2.o
diff --git a/test/Object/archive-update.test b/test/Object/archive-update.test
index 91ca8102c7e1..147db90ba951 100644
--- a/test/Object/archive-update.test
+++ b/test/Object/archive-update.test
@@ -8,27 +8,28 @@ RUN: mkdir -p %t.older
RUN: echo older > %t.older/evenlen
Either the shell supports the 'touch' command with a flag to manually set the
-mtime or we sleep for over a second so that the mtime is definitely observable.
-RUN: touch -m -t 200001010000 %t.older/evenlen || sleep 1.1
+mtime or we sleep for over two seconds so that the mtime is definitely
+observable.
+RUN: touch -m -t 200001010000 %t.older/evenlen || sleep 2.1
RUN: mkdir -p %t.newer
RUN: echo newer > %t.newer/evenlen
RUN: touch %t.newer/evenlen
Create an achive with the newest file
-RUN: llvm-ar r %t.a %t.newer/evenlen
+RUN: llvm-ar rU %t.a %t.newer/evenlen
RUN: llvm-ar p %t.a | FileCheck --check-prefix=NEWER %s
Check that without the 'u' option the member is replaced with an older file.
-RUN: llvm-ar r %t.a %t.older/evenlen
+RUN: llvm-ar rU %t.a %t.older/evenlen
RUN: llvm-ar p %t.a | FileCheck --check-prefix=OLDER %s
Check that with the 'u' option the member is replaced with a newer file.
-RUN: llvm-ar ru %t.a %t.newer/evenlen
+RUN: llvm-ar ruU %t.a %t.newer/evenlen
RUN: llvm-ar p %t.a | FileCheck --check-prefix=NEWER %s
Check that with the 'u' option the member is not replaced with an older file.
-RUN: llvm-ar ru %t.a %t.older/evenlen
+RUN: llvm-ar ruU %t.a %t.older/evenlen
RUN: llvm-ar p %t.a | FileCheck --check-prefix=NEWER %s
NEWER: newer
diff --git a/test/Object/coff-archive.test b/test/Object/coff-archive.test
index 239a96b4c351..c8051ebe1bf3 100644
--- a/test/Object/coff-archive.test
+++ b/test/Object/coff-archive.test
@@ -66,7 +66,26 @@ CHECKIDX: 00000000 N .debug$T
CHECKIDX: 00000000 i .drectve
CHECKIDX: 00000001 a @feat.00
CHECKIDX: 00ab9d1b a @comp.id
+
CHECKIDX: Debug\mymath.obj:
+CHECKIDX: U ??2@YAPAXI@Z
+CHECKIDX: U ??3@YAXPAX@Z
+CHECKIDX: U ??_7type_info@@6B@
+CHECKIDX: w ??_Einvalid_argument@std@@UAEPAXI@Z
+CHECKIDX: w ??_Elogic_error@std@@UAEPAXI@Z
+CHECKIDX: U ??_Ginvalid_argument@std@@UAEPAXI@Z
+CHECKIDX: U ??_Glogic_error@std@@UAEPAXI@Z
+CHECKIDX: U ?what@exception@std@@UBEPBDXZ
+CHECKIDX: U @__security_check_cookie@4
+CHECKIDX: U __CxxThrowException@8
+CHECKIDX: U __RTC_CheckEsp
+CHECKIDX: U __RTC_InitBase
+CHECKIDX: U __RTC_Shutdown
+CHECKIDX: U ___CxxFrameHandler3
+CHECKIDX: U ___security_cookie
+CHECKIDX: U __fltused
+CHECKIDX: U __imp_??0exception@std@@QAE@ABQBD@Z
+CHECKIDX: U __imp_??1exception@std@@UAE@XZ
CHECKIDX: 00000000 d .data
CHECKIDX: 00000000 d .data
CHECKIDX: 00000000 d .data
@@ -205,21 +224,3 @@ CHECKIDX: 00000004 R ??_7logic_error@std@@6B@
CHECKIDX: 00000008 r __ehfuncinfo$?Divide@MyMathFuncs@MathFuncs@@SANNN@Z
CHECKIDX: 0000000e t __ehhandler$?Divide@MyMathFuncs@MathFuncs@@SANNN@Z
CHECKIDX: 00ab9d1b a @comp.id
-CHECKIDX: U ??2@YAPAXI@Z
-CHECKIDX: U ??3@YAXPAX@Z
-CHECKIDX: U ??_7type_info@@6B@
-CHECKIDX: w ??_Einvalid_argument@std@@UAEPAXI@Z
-CHECKIDX: w ??_Elogic_error@std@@UAEPAXI@Z
-CHECKIDX: U ??_Ginvalid_argument@std@@UAEPAXI@Z
-CHECKIDX: U ??_Glogic_error@std@@UAEPAXI@Z
-CHECKIDX: U ?what@exception@std@@UBEPBDXZ
-CHECKIDX: U @__security_check_cookie@4
-CHECKIDX: U __CxxThrowException@8
-CHECKIDX: U __RTC_CheckEsp
-CHECKIDX: U __RTC_InitBase
-CHECKIDX: U __RTC_Shutdown
-CHECKIDX: U ___CxxFrameHandler3
-CHECKIDX: U ___security_cookie
-CHECKIDX: U __fltused
-CHECKIDX: U __imp_??0exception@std@@QAE@ABQBD@Z
-CHECKIDX: U __imp_??1exception@std@@UAE@XZ
diff --git a/test/Object/coff-invalid.test b/test/Object/coff-invalid.test
new file mode 100644
index 000000000000..b85543dcfe83
--- /dev/null
+++ b/test/Object/coff-invalid.test
@@ -0,0 +1,13 @@
+RUN: llvm-readobj -s %p/Inputs/invalid-bad-section-address.coff 2>&1 | \
+RUN: FileCheck --check-prefix=SECTIONS %s
+
+SECTIONS: Section {
+SECTIONS-NEXT: Number: 1
+SECTIONS-NEXT: Name: .text (2E 74 65 78 74 00 00 00)
+SECTIONS-NEXT: VirtualSize: 0x0
+SECTIONS-NEXT: VirtualAddress: 0x1000000
+
+RUN: not llvm-readobj -r %p/Inputs/invalid-bad-section-address.coff 2>&1 | \
+RUN: FileCheck %s
+
+CHECK: Sections with relocations should have an address of 0
diff --git a/test/Object/no-section-table.test b/test/Object/no-section-table.test
new file mode 100644
index 000000000000..77fb98a4d406
--- /dev/null
+++ b/test/Object/no-section-table.test
@@ -0,0 +1,36 @@
+RUN: llvm-readobj %p/Inputs/no-section-table.so -hash-table -dynamic-table \
+RUN: | FileCheck %s
+
+CHECK: DynamicSection [ (24 entries)
+CHECK: Tag Type Name/Value
+CHECK: 0x0000000000000001 NEEDED SharedLibrary (libc.so.6)
+CHECK: 0x000000000000000C INIT 0x4B8
+CHECK: 0x000000000000000D FINI 0x618
+CHECK: 0x0000000000000019 INIT_ARRAY 0x2006C0
+CHECK: 0x000000000000001B INIT_ARRAYSZ 8 (bytes)
+CHECK: 0x000000000000001A FINI_ARRAY 0x2006C8
+CHECK: 0x000000000000001C FINI_ARRAYSZ 8 (bytes)
+CHECK: 0x0000000000000004 HASH 0x158
+CHECK: 0x0000000000000005 STRTAB 0x2D8
+CHECK: 0x0000000000000006 SYMTAB 0x1A0
+CHECK: 0x000000000000000A STRSZ 179 (bytes)
+CHECK: 0x000000000000000B SYMENT 24 (bytes)
+CHECK: 0x0000000000000003 PLTGOT 0x2008C0
+CHECK: 0x0000000000000002 PLTRELSZ 48 (bytes)
+CHECK: 0x0000000000000014 PLTREL RELA
+CHECK: 0x0000000000000017 JMPREL 0x488
+CHECK: 0x0000000000000007 RELA 0x3C8
+CHECK: 0x0000000000000008 RELASZ 192 (bytes)
+CHECK: 0x0000000000000009 RELAENT 24 (bytes)
+CHECK: 0x000000006FFFFFFE VERNEED 0x3A8
+CHECK: 0x000000006FFFFFFF VERNEEDNUM 1
+CHECK: 0x000000006FFFFFF0 VERSYM 0x38C
+CHECK: 0x000000006FFFFFF9 unknown 0x3
+CHECK: 0x0000000000000000 NULL 0x0
+CHECK: ]
+CHECK: HashTable {
+CHECK: Num Buckets: 3
+CHECK: Num Chains: 13
+CHECK: Buckets: [12, 10, 11]
+CHECK: Chains: [0, 0, 0, 0, 2, 3, 4, 0, 7, 5, 6, 8, 9]
+CHECK: }
diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test
index 08000f66581b..8054b23eb560 100644
--- a/test/Object/obj2yaml.test
+++ b/test/Object/obj2yaml.test
@@ -234,7 +234,7 @@ ELF-MIPSEL-NEXT: - Name: .bss
ELF-MIPSEL-NEXT: Type: SHT_NOBITS
ELF-MIPSEL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ]
ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004
-ELF-MIPSEL-NEXT: Content: 48656C6C
+ELF-MIPSEL-NEXT: Size: 0x0000000000000004
ELF-MIPSEL-NEXT: - Name: .mdebug.abi32
ELF-MIPSEL-NEXT: Type: SHT_PROGBITS
ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000001
@@ -324,7 +324,6 @@ ELF-MIPS64EL-NEXT: - Name: .bss
ELF-MIPS64EL-NEXT: Type: SHT_NOBITS
ELF-MIPS64EL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ]
ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010
-ELF-MIPS64EL-NEXT: Content: ''
ELF-MIPS64EL-NEXT: - Name: .MIPS.options
ELF-MIPS64EL-NEXT: Type: SHT_MIPS_OPTIONS
ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC ]
diff --git a/test/Object/yaml2obj-elf-alignment.yaml b/test/Object/yaml2obj-elf-alignment.yaml
new file mode 100644
index 000000000000..8f2f985177f7
--- /dev/null
+++ b/test/Object/yaml2obj-elf-alignment.yaml
@@ -0,0 +1,53 @@
+# Check that yaml2obj takes in account section AddressAlign field.
+
+# RUN: yaml2obj -format=elf %s > %t
+# RUN: llvm-readobj -s %t | FileCheck %s
+
+# CHECK: Section {
+# CHECK: Index: 2
+# CHECK-NEXT: Name: .data
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [
+# CHECK-NEXT: SHF_ALLOC
+# CHECK-NEXT: SHF_WRITE
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x{{[0-9A-F]*}}00
+# CHECK-NEXT: Size: 4
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 256
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: }
+
+---
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_MIPS
+ Flags: [ EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ]
+
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 8
+ Size: 4
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC ]
+ AddressAlign: 256
+ Size: 4
+
+Symbols:
+ Global:
+ - Name: T0
+ Type: STT_FUNC
+ Section: .text
+ Size: 4
+ - Name: D0
+ Type: STT_OBJECT
+ Section: .data
+ Size: 4
+...
diff --git a/test/Object/yaml2obj-elf-rel-noref.yaml b/test/Object/yaml2obj-elf-rel-noref.yaml
index 69fcf0854434..4a13acd1fd38 100644
--- a/test/Object/yaml2obj-elf-rel-noref.yaml
+++ b/test/Object/yaml2obj-elf-rel-noref.yaml
@@ -32,7 +32,7 @@ Sections:
Type: SHT_NOBITS
Flags: [ SHF_WRITE, SHF_ALLOC ]
AddressAlign: 0x0000000000000001
- Content: ''
+ Size: 0
- Name: .ARM.attributes
Type: SHT_ARM_ATTRIBUTES
AddressAlign: 0x0000000000000001
diff --git a/test/Object/yaml2obj-elf-rel.yaml b/test/Object/yaml2obj-elf-rel.yaml
index 6a7ed459eff2..ba3640cfefad 100644
--- a/test/Object/yaml2obj-elf-rel.yaml
+++ b/test/Object/yaml2obj-elf-rel.yaml
@@ -75,7 +75,7 @@ Symbols:
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
-# CHECK-NEXT: Offset: 0x160
+# CHECK-NEXT: Offset: 0x{{[0-9A-F]+}}
# CHECK-NEXT: Size: 24
# CHECK-NEXT: Link: 4
# CHECK-NEXT: Info: 1
@@ -89,7 +89,7 @@ Symbols:
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
-# CHECK-NEXT: Offset: 0x180
+# CHECK-NEXT: Offset: 0x{{[0-9A-F]+}}
# CHECK-NEXT: Size: 36
# CHECK-NEXT: Link: 4
# CHECK-NEXT: Info: 1
diff --git a/test/Object/yaml2obj-elf-section-basic.yaml b/test/Object/yaml2obj-elf-section-basic.yaml
index 56a3fd6e5f18..69d3ae91b717 100644
--- a/test/Object/yaml2obj-elf-section-basic.yaml
+++ b/test/Object/yaml2obj-elf-section-basic.yaml
@@ -52,7 +52,7 @@ Sections:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0xCAFECAFE
-# CHECK-NEXT: Offset: 0x1D0
+# CHECK-NEXT: Offset: 0x{{[0-9A-F]+}}
# CHECK-NEXT: Size: 8
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@@ -65,12 +65,15 @@ Sections:
# CHECK: Section {
# CHECK: Name: .symtab (25)
# CHECK: Type: SHT_SYMTAB (0x2)
+# CHECK: AddressAlignment: 8
# CHECK: }
# CHECK: Section {
# CHECK: Name: .strtab (17)
# CHECK: Type: SHT_STRTAB (0x3)
+# CHECK: AddressAlignment: 1
# CHECK: }
# CHECK: Section {
# CHECK: Name: .shstrtab (7)
# CHECK: Type: SHT_STRTAB (0x3)
+# CHECK: AddressAlignment: 1
# CHECK: }
diff --git a/test/Object/yaml2obj-elf-symbol-basic.yaml b/test/Object/yaml2obj-elf-symbol-basic.yaml
index 6d49ddd1c422..b17c0429bd47 100644
--- a/test/Object/yaml2obj-elf-symbol-basic.yaml
+++ b/test/Object/yaml2obj-elf-symbol-basic.yaml
@@ -9,6 +9,7 @@ Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x4
Content: "90EBFE" # x86 machine code
# NOP ; To make main's `Value` non-zero (for testing).
# main: