[llvm-ar][test] \r\n -> \n
authorFangrui Song <maskray@google.com>
Wed, 17 Jul 2019 13:40:42 +0000 (13:40 +0000)
committerFangrui Song <maskray@google.com>
Wed, 17 Jul 2019 13:40:42 +0000 (13:40 +0000)
Also simplify some empty output tests with 'count 0'

llvm-svn: 366324

17 files changed:
llvm/test/tools/llvm-ar/create.test
llvm/test/tools/llvm-ar/dash-before-letter.test
llvm/test/tools/llvm-ar/delete.test
llvm/test/tools/llvm-ar/insert-after.test
llvm/test/tools/llvm-ar/insert-before.test
llvm/test/tools/llvm-ar/move-after.test
llvm/test/tools/llvm-ar/move-before.test
llvm/test/tools/llvm-ar/move.test
llvm/test/tools/llvm-ar/mri-addlib.test
llvm/test/tools/llvm-ar/mri-addmod.test
llvm/test/tools/llvm-ar/mri-comments.test
llvm/test/tools/llvm-ar/mri-end.test
llvm/test/tools/llvm-ar/quick-append.test
llvm/test/tools/llvm-ar/read-only-archive.test
llvm/test/tools/llvm-ar/replace-update.test
llvm/test/tools/llvm-ar/replace.test
llvm/test/tools/llvm-ar/symtab.test

index 7e4951d..a29b93e 100644 (file)
@@ -1,14 +1,13 @@
-## Test the creation warning and supression of that warning.\r
-\r
-RUN: touch %t1.txt\r
-RUN: touch %t2.txt\r
-\r
-RUN: rm -f %t.warning.ar\r
-RUN: llvm-ar r %t.warning.ar %t1.txt %t2.txt 2>&1 \\r
-RUN:   | FileCheck %s -DOUTPUT=%t.warning.ar\r
-\r
-CHECK: warning: creating [[OUTPUT]]\r
-\r
-RUN: rm -f %t.supressed.ar\r
-RUN: llvm-ar cr %t.supressed.ar %t1.txt %t2.txt 2>&1 \\r
-RUN:   | FileCheck --allow-empty /dev/null --implicit-check-not={{.}}\r
+## Test the creation warning and supression of that warning.
+
+RUN: touch %t1.txt
+RUN: touch %t2.txt
+
+RUN: rm -f %t.warning.ar
+RUN: llvm-ar r %t.warning.ar %t1.txt %t2.txt 2>&1 \
+RUN:   | FileCheck %s -DOUTPUT=%t.warning.ar
+
+CHECK: warning: creating [[OUTPUT]]
+
+RUN: rm -f %t.supressed.ar
+RUN: llvm-ar cr %t.supressed.ar %t1.txt %t2.txt 2>&1 | count 0
index 3002a6d..43930b1 100644 (file)
@@ -1,12 +1,12 @@
-# Test the use of dash before key letters.\r
-\r
-RUN: touch %t1.txt\r
-RUN: touch %t2.txt\r
-\r
-RUN: rm -f %t.ar\r
-RUN: llvm-ar s -cr %t.ar %t1.txt\r
-RUN: llvm-ar -r -s %t.ar %t2.txt -s\r
-RUN: llvm-ar -t %t.ar | FileCheck %s\r
-\r
-CHECK:      1.txt\r
-CHECK-NEXT: 2.txt\r
+# Test the use of dash before key letters.
+
+RUN: touch %t1.txt
+RUN: touch %t2.txt
+
+RUN: rm -f %t.ar
+RUN: llvm-ar s -cr %t.ar %t1.txt
+RUN: llvm-ar -r -s %t.ar %t2.txt -s
+RUN: llvm-ar -t %t.ar | FileCheck %s
+
+CHECK:      1.txt
+CHECK-NEXT: 2.txt
index d5ab797..20e58b9 100644 (file)
@@ -1,67 +1,67 @@
-## Test the deletion of members and that symbols are removed from the symbol table.\r
-\r
-# RUN: yaml2obj %s -o %t-delete.o --docnum=1\r
-# RUN: yaml2obj %s -o %t-keep.o --docnum=2\r
-# RUN: touch %t1.txt\r
-# RUN: touch %t2.txt\r
-\r
-## Add file:\r
-# RUN: rm -f %t.a\r
-# RUN: llvm-ar rc %t.a %t1.txt %t-delete.o %t-keep.o %t2.txt\r
-# RUN: llvm-nm --print-armap %t.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMBOL-ADDED\r
-# RUN: llvm-ar t %t.a | FileCheck %s --check-prefix=FILE-ADDED\r
-\r
-# SYMBOL-ADDED:      symbol1\r
-# SYMBOL-ADDED-NEXT: symbol2\r
-\r
-# FILE-ADDED:      1.txt\r
-# FILE-ADDED-NEXT: delete.o\r
-# FILE-ADDED-NEXT: keep.o\r
-# FILE-ADDED-NEXT: 2.txt\r
-\r
-## Delete file that is not a member:\r
-# RUN: cp %t.a %t-archive-copy.a\r
-# RUN: llvm-ar d %t.a t/missing.o\r
-# RUN: cmp %t.a %t-archive-copy.a\r
-\r
-## Delete file:\r
-# RUN: llvm-ar d %t.a %t-delete.o\r
-# RUN: llvm-nm --print-armap %t.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMBOL-DELETED --implicit-check-not symbol1\r
-# RUN: llvm-ar t %t.a \\r
-# RUN:   | FileCheck %s --check-prefix=FILE-DELETED --implicit-check-not delete.o\r
-\r
-# SYMBOL-DELETED: symbol2\r
-\r
-# FILE-DELETED:      1.txt\r
-# FILE-DELETED-NEXT: keep.o\r
-# FILE-DELETED-NEXT: 2.txt\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol2\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
+## Test the deletion of members and that symbols are removed from the symbol table.
+
+# RUN: yaml2obj %s -o %t-delete.o --docnum=1
+# RUN: yaml2obj %s -o %t-keep.o --docnum=2
+# RUN: touch %t1.txt
+# RUN: touch %t2.txt
+
+## Add file:
+# RUN: rm -f %t.a
+# RUN: llvm-ar rc %t.a %t1.txt %t-delete.o %t-keep.o %t2.txt
+# RUN: llvm-nm --print-armap %t.a \
+# RUN:   | FileCheck %s --check-prefix=SYMBOL-ADDED
+# RUN: llvm-ar t %t.a | FileCheck %s --check-prefix=FILE-ADDED
+
+# SYMBOL-ADDED:      symbol1
+# SYMBOL-ADDED-NEXT: symbol2
+
+# FILE-ADDED:      1.txt
+# FILE-ADDED-NEXT: delete.o
+# FILE-ADDED-NEXT: keep.o
+# FILE-ADDED-NEXT: 2.txt
+
+## Delete file that is not a member:
+# RUN: cp %t.a %t-archive-copy.a
+# RUN: llvm-ar d %t.a t/missing.o
+# RUN: cmp %t.a %t-archive-copy.a
+
+## Delete file:
+# RUN: llvm-ar d %t.a %t-delete.o
+# RUN: llvm-nm --print-armap %t.a \
+# RUN:   | FileCheck %s --check-prefix=SYMBOL-DELETED --implicit-check-not symbol1
+# RUN: llvm-ar t %t.a \
+# RUN:   | FileCheck %s --check-prefix=FILE-DELETED --implicit-check-not delete.o
+
+# SYMBOL-DELETED: symbol2
+
+# FILE-DELETED:      1.txt
+# FILE-DELETED-NEXT: keep.o
+# FILE-DELETED-NEXT: 2.txt
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol2
+    Binding: STB_GLOBAL
+    Section: .text
index cd8ee94..7c01e73 100644 (file)
@@ -1,59 +1,59 @@
-## Test inserting files after a file.\r
-\r
-RUN: touch %t1.txt\r
-RUN: touch %t2.txt\r
-RUN: touch %t3.txt\r
-RUN: touch %t4.txt\r
-\r
-# Insert one file:\r
-RUN: rm -f %t-one.a\r
-RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt\r
-RUN: llvm-ar ra %t1.txt %t-one.a %t3.txt\r
-RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE\r
-\r
-ONE:      1.txt\r
-ONE-NEXT: 3.txt\r
-ONE-NEXT: 2.txt\r
-\r
-# Insert file at back:\r
-RUN: rm -f %t-back.a\r
-RUN: llvm-ar rc %t-back.a %t1.txt %t2.txt\r
-RUN: llvm-ar ra %t2.txt %t-back.a %t3.txt\r
-RUN: llvm-ar t %t-back.a | FileCheck %s --check-prefix=BACK\r
-\r
-BACK:      1.txt\r
-BACK-NEXT: 2.txt\r
-BACK-NEXT: 3.txt\r
-\r
-# Insert multiple files:\r
-RUN: rm -f %t-multiple.a\r
-RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt\r
-RUN: llvm-ar ra %t1.txt %t-multiple.a %t4.txt %t3.txt\r
-RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE\r
-\r
-MULTIPLE:      1.txt\r
-MULTIPLE-NEXT: 4.txt\r
-MULTIPLE-NEXT: 3.txt\r
-MULTIPLE-NEXT: 2.txt\r
-\r
-# Insert after invalid file:\r
-RUN: rm -f %t-invalid.a\r
-RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt\r
-RUN: not llvm-ar ra invalid.txt %t-invalid.a %t2.txt 2>&1 \\r
-RUN:   | FileCheck %s --check-prefix=ERROR\r
-RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID\r
-\r
-ERROR: error: Insertion point not found.\r
-INVALID:      1.txt\r
-INVALID-NEXT: 2.txt\r
-INVALID-NEXT: 3.txt\r
-\r
-# Insert file at the same position:\r
-RUN: rm -f %t-position.a\r
-RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar ra %t1.txt %t-position.a %t2.txt\r
-RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION\r
-\r
-POSITION:      1.txt\r
-POSITION-NEXT: 2.txt\r
-POSITION-NEXT: 3.txt\r
+## Test inserting files after a file.
+
+RUN: touch %t1.txt
+RUN: touch %t2.txt
+RUN: touch %t3.txt
+RUN: touch %t4.txt
+
+# Insert one file:
+RUN: rm -f %t-one.a
+RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt
+RUN: llvm-ar ra %t1.txt %t-one.a %t3.txt
+RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE
+
+ONE:      1.txt
+ONE-NEXT: 3.txt
+ONE-NEXT: 2.txt
+
+# Insert file at back:
+RUN: rm -f %t-back.a
+RUN: llvm-ar rc %t-back.a %t1.txt %t2.txt
+RUN: llvm-ar ra %t2.txt %t-back.a %t3.txt
+RUN: llvm-ar t %t-back.a | FileCheck %s --check-prefix=BACK
+
+BACK:      1.txt
+BACK-NEXT: 2.txt
+BACK-NEXT: 3.txt
+
+# Insert multiple files:
+RUN: rm -f %t-multiple.a
+RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt
+RUN: llvm-ar ra %t1.txt %t-multiple.a %t4.txt %t3.txt
+RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE
+
+MULTIPLE:      1.txt
+MULTIPLE-NEXT: 4.txt
+MULTIPLE-NEXT: 3.txt
+MULTIPLE-NEXT: 2.txt
+
+# Insert after invalid file:
+RUN: rm -f %t-invalid.a
+RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt
+RUN: not llvm-ar ra invalid.txt %t-invalid.a %t2.txt 2>&1 \
+RUN:   | FileCheck %s --check-prefix=ERROR
+RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
+
+ERROR: error: Insertion point not found.
+INVALID:      1.txt
+INVALID-NEXT: 2.txt
+INVALID-NEXT: 3.txt
+
+# Insert file at the same position:
+RUN: rm -f %t-position.a
+RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar ra %t1.txt %t-position.a %t2.txt
+RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION
+
+POSITION:      1.txt
+POSITION-NEXT: 2.txt
+POSITION-NEXT: 3.txt
index 61505d8..4abf3a0 100644 (file)
@@ -1,59 +1,59 @@
-## Test inserting files before a file.\r
-\r
-RUN: touch %t1.txt\r
-RUN: touch %t2.txt\r
-RUN: touch %t3.txt\r
-RUN: touch %t4.txt\r
-\r
-# Insert one file:\r
-RUN: rm -f %t-one.a\r
-RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt\r
-RUN: llvm-ar rb %t2.txt %t-one.a %t3.txt\r
-RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE\r
-\r
-ONE:      1.txt\r
-ONE-NEXT: 3.txt\r
-ONE-NEXT: 2.txt\r
-\r
-# Insert file at front:\r
-RUN: rm -f %t-front.a\r
-RUN: llvm-ar rc %t-front.a %t1.txt %t2.txt\r
-RUN: llvm-ar rb %t1.txt %t-front.a %t3.txt\r
-RUN: llvm-ar t %t-front.a | FileCheck %s --check-prefix=FRONT\r
-\r
-FRONT:      3.txt\r
-FRONT-NEXT: 1.txt\r
-FRONT-NEXT: 2.txt\r
-\r
-# Insert multiple files:\r
-RUN: rm -f %t-multiple.a\r
-RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt\r
-RUN: llvm-ar rb %t2.txt %t-multiple.a %t4.txt %t3.txt\r
-RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE\r
-\r
-MULTIPLE:      1.txt\r
-MULTIPLE-NEXT: 4.txt\r
-MULTIPLE-NEXT: 3.txt\r
-MULTIPLE-NEXT: 2.txt\r
-\r
-# Insert before an invalid file:\r
-RUN: rm -f %t-invalid.a\r
-RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt\r
-RUN: not llvm-ar rb invalid.txt %t-invalid.a %t2.txt 2>&1 \\r
-RUN:   | FileCheck %s --check-prefix=ERROR\r
-RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID\r
-\r
-ERROR: error: Insertion point not found.\r
-INVALID:      1.txt\r
-INVALID-NEXT: 2.txt\r
-INVALID-NEXT: 3.txt\r
-\r
-# Insert file at the same position:\r
-RUN: rm -f %t-position.a\r
-RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar rb %t3.txt %t-position.a %t2.txt\r
-RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION\r
-\r
-POSITION:      1.txt\r
-POSITION-NEXT: 2.txt\r
-POSITION-NEXT: 3.txt\r
+## Test inserting files before a file.
+
+RUN: touch %t1.txt
+RUN: touch %t2.txt
+RUN: touch %t3.txt
+RUN: touch %t4.txt
+
+# Insert one file:
+RUN: rm -f %t-one.a
+RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt
+RUN: llvm-ar rb %t2.txt %t-one.a %t3.txt
+RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE
+
+ONE:      1.txt
+ONE-NEXT: 3.txt
+ONE-NEXT: 2.txt
+
+# Insert file at front:
+RUN: rm -f %t-front.a
+RUN: llvm-ar rc %t-front.a %t1.txt %t2.txt
+RUN: llvm-ar rb %t1.txt %t-front.a %t3.txt
+RUN: llvm-ar t %t-front.a | FileCheck %s --check-prefix=FRONT
+
+FRONT:      3.txt
+FRONT-NEXT: 1.txt
+FRONT-NEXT: 2.txt
+
+# Insert multiple files:
+RUN: rm -f %t-multiple.a
+RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt
+RUN: llvm-ar rb %t2.txt %t-multiple.a %t4.txt %t3.txt
+RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE
+
+MULTIPLE:      1.txt
+MULTIPLE-NEXT: 4.txt
+MULTIPLE-NEXT: 3.txt
+MULTIPLE-NEXT: 2.txt
+
+# Insert before an invalid file:
+RUN: rm -f %t-invalid.a
+RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt
+RUN: not llvm-ar rb invalid.txt %t-invalid.a %t2.txt 2>&1 \
+RUN:   | FileCheck %s --check-prefix=ERROR
+RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
+
+ERROR: error: Insertion point not found.
+INVALID:      1.txt
+INVALID-NEXT: 2.txt
+INVALID-NEXT: 3.txt
+
+# Insert file at the same position:
+RUN: rm -f %t-position.a
+RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar rb %t3.txt %t-position.a %t2.txt
+RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION
+
+POSITION:      1.txt
+POSITION-NEXT: 2.txt
+POSITION-NEXT: 3.txt
index fb61f2a..6a4360c 100644 (file)
@@ -1,59 +1,59 @@
-## Test moving files after a file.\r
-\r
-RUN: touch %t1.txt\r
-RUN: touch %t2.txt\r
-RUN: touch %t3.txt\r
-RUN: touch %t4.txt\r
-\r
-# Move one file:\r
-RUN: rm -f %t-one.ar\r
-RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar ma %t1.txt %t-one.a %t3.txt\r
-RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE\r
-\r
-ONE:      1.txt\r
-ONE-NEXT: 3.txt\r
-ONE-NEXT: 2.txt\r
-\r
-# Move file to back:\r
-RUN: rm -f %t-back.ar\r
-RUN: llvm-ar rc %t-back.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar ma %t2.txt %t-back.a %t1.txt\r
-RUN: llvm-ar t %t-back.a | FileCheck %s --check-prefix=BACK\r
-\r
-BACK:      2.txt\r
-BACK-NEXT: 1.txt\r
-BACK-NEXT: 3.txt\r
-\r
-# Move multiple files:\r
-RUN: rm -f %t-multiple.ar\r
-RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt %t3.txt %t4.txt\r
-RUN: llvm-ar ma %t1.txt %t-multiple.a  %t4.txt %t3.txt\r
-RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE\r
-\r
-MULTIPLE:      1.txt\r
-MULTIPLE-NEXT: 3.txt\r
-MULTIPLE-NEXT: 4.txt\r
-MULTIPLE-NEXT: 2.txt\r
-\r
-# Move after invalid file:\r
-RUN: rm -f %t-invalid.ar\r
-RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt\r
-RUN: not llvm-ar ma invalid.txt %t-invalid.a %t2.txt 2>&1 \\r
-RUN:   | FileCheck %s --check-prefix=ERROR\r
-RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID\r
-\r
-ERROR: error: Insertion point not found.\r
-INVALID:      1.txt\r
-INVALID-NEXT: 2.txt\r
-INVALID-NEXT: 3.txt\r
-\r
-# Move file to the same position:\r
-RUN: rm -f %t-position.ar\r
-RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar ma %t1.txt %t-position.a %t2.txt\r
-RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION\r
-\r
-POSITION:      1.txt\r
-POSITION-NEXT: 2.txt\r
-POSITION-NEXT: 3.txt\r
+## Test moving files after a file.
+
+RUN: touch %t1.txt
+RUN: touch %t2.txt
+RUN: touch %t3.txt
+RUN: touch %t4.txt
+
+# Move one file:
+RUN: rm -f %t-one.ar
+RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar ma %t1.txt %t-one.a %t3.txt
+RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE
+
+ONE:      1.txt
+ONE-NEXT: 3.txt
+ONE-NEXT: 2.txt
+
+# Move file to back:
+RUN: rm -f %t-back.ar
+RUN: llvm-ar rc %t-back.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar ma %t2.txt %t-back.a %t1.txt
+RUN: llvm-ar t %t-back.a | FileCheck %s --check-prefix=BACK
+
+BACK:      2.txt
+BACK-NEXT: 1.txt
+BACK-NEXT: 3.txt
+
+# Move multiple files:
+RUN: rm -f %t-multiple.ar
+RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt %t3.txt %t4.txt
+RUN: llvm-ar ma %t1.txt %t-multiple.a  %t4.txt %t3.txt
+RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE
+
+MULTIPLE:      1.txt
+MULTIPLE-NEXT: 3.txt
+MULTIPLE-NEXT: 4.txt
+MULTIPLE-NEXT: 2.txt
+
+# Move after invalid file:
+RUN: rm -f %t-invalid.ar
+RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt
+RUN: not llvm-ar ma invalid.txt %t-invalid.a %t2.txt 2>&1 \
+RUN:   | FileCheck %s --check-prefix=ERROR
+RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
+
+ERROR: error: Insertion point not found.
+INVALID:      1.txt
+INVALID-NEXT: 2.txt
+INVALID-NEXT: 3.txt
+
+# Move file to the same position:
+RUN: rm -f %t-position.ar
+RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar ma %t1.txt %t-position.a %t2.txt
+RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION
+
+POSITION:      1.txt
+POSITION-NEXT: 2.txt
+POSITION-NEXT: 3.txt
index b5fefec..306a887 100644 (file)
@@ -1,69 +1,69 @@
-## Test moving files after a file.\r
-\r
-RUN: touch %t1.txt\r
-RUN: touch %t2.txt\r
-RUN: touch %t3.txt\r
-RUN: touch %t4.txt\r
-\r
-# Move one file:\r
-RUN: rm -f %t-one.ar\r
-RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar mb %t2.txt %t-one.a %t3.txt\r
-RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE\r
-\r
-ONE:      1.txt\r
-ONE-NEXT: 3.txt\r
-ONE-NEXT: 2.txt\r
-\r
-# Move file to front:\r
-RUN: rm -f %t-front.ar\r
-RUN: llvm-ar rc %t-front.ar %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar mb %t1.txt %t-front.ar %t3.txt\r
-RUN: llvm-ar t %t-front.ar | FileCheck %s --check-prefix=FRONT\r
-\r
-FRONT:      3.txt\r
-FRONT-NEXT: 1.txt\r
-FRONT-NEXT: 2.txt\r
-\r
-# Move multiple files:\r
-RUN: rm -f %t-multiple.ar\r
-RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt %t3.txt %t4.txt\r
-RUN: llvm-ar mb %t2.txt %t-multiple.a %t4.txt %t3.txt\r
-RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE\r
-\r
-MULTIPLE:      1.txt\r
-MULTIPLE-NEXT: 3.txt\r
-MULTIPLE-NEXT: 4.txt\r
-MULTIPLE-NEXT: 2.txt\r
-\r
-# Move before invalid file:\r
-RUN: rm -f %t-invalid.ar\r
-RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt\r
-RUN: not llvm-ar mb invalid.txt %t-invalid.a %t2.txt 2>&1 \\r
-RUN:   | FileCheck %s --check-prefix=ERROR\r
-RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID\r
-\r
-ERROR: error: Insertion point not found.\r
-INVALID:      1.txt\r
-INVALID-NEXT: 2.txt\r
-INVALID-NEXT: 3.txt\r
-\r
-# Move file to the same position:\r
-RUN: rm -f %t-position.ar\r
-RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar mb %t3.txt %t-position.a %t2.txt\r
-RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION\r
-\r
-POSITION:      1.txt\r
-POSITION-NEXT: 2.txt\r
-POSITION-NEXT: 3.txt\r
-\r
-# Move file after itself:\r
-RUN: rm -f %t-same.ar\r
-RUN: llvm-ar rc %t-same.ar %t1.txt %t2.txt %t3.txt\r
-RUN: llvm-ar mb %t2.txt %t-same.ar %t2.txt\r
-RUN: llvm-ar t %t-same.ar | FileCheck %s --check-prefix=SAME\r
-\r
-SAME:      1.txt\r
-SAME-NEXT: 2.txt\r
-SAME-NEXT: 3.txt\r
+## Test moving files after a file.
+
+RUN: touch %t1.txt
+RUN: touch %t2.txt
+RUN: touch %t3.txt
+RUN: touch %t4.txt
+
+# Move one file:
+RUN: rm -f %t-one.ar
+RUN: llvm-ar rc %t-one.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar mb %t2.txt %t-one.a %t3.txt
+RUN: llvm-ar t %t-one.a | FileCheck %s --check-prefix=ONE
+
+ONE:      1.txt
+ONE-NEXT: 3.txt
+ONE-NEXT: 2.txt
+
+# Move file to front:
+RUN: rm -f %t-front.ar
+RUN: llvm-ar rc %t-front.ar %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar mb %t1.txt %t-front.ar %t3.txt
+RUN: llvm-ar t %t-front.ar | FileCheck %s --check-prefix=FRONT
+
+FRONT:      3.txt
+FRONT-NEXT: 1.txt
+FRONT-NEXT: 2.txt
+
+# Move multiple files:
+RUN: rm -f %t-multiple.ar
+RUN: llvm-ar rc %t-multiple.a %t1.txt %t2.txt %t3.txt %t4.txt
+RUN: llvm-ar mb %t2.txt %t-multiple.a %t4.txt %t3.txt
+RUN: llvm-ar t %t-multiple.a | FileCheck %s --check-prefix=MULTIPLE
+
+MULTIPLE:      1.txt
+MULTIPLE-NEXT: 3.txt
+MULTIPLE-NEXT: 4.txt
+MULTIPLE-NEXT: 2.txt
+
+# Move before invalid file:
+RUN: rm -f %t-invalid.ar
+RUN: llvm-ar rc %t-invalid.a %t1.txt %t2.txt %t3.txt
+RUN: not llvm-ar mb invalid.txt %t-invalid.a %t2.txt 2>&1 \
+RUN:   | FileCheck %s --check-prefix=ERROR
+RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
+
+ERROR: error: Insertion point not found.
+INVALID:      1.txt
+INVALID-NEXT: 2.txt
+INVALID-NEXT: 3.txt
+
+# Move file to the same position:
+RUN: rm -f %t-position.ar
+RUN: llvm-ar rc %t-position.a %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar mb %t3.txt %t-position.a %t2.txt
+RUN: llvm-ar t %t-position.a | FileCheck %s --check-prefix=POSITION
+
+POSITION:      1.txt
+POSITION-NEXT: 2.txt
+POSITION-NEXT: 3.txt
+
+# Move file after itself:
+RUN: rm -f %t-same.ar
+RUN: llvm-ar rc %t-same.ar %t1.txt %t2.txt %t3.txt
+RUN: llvm-ar mb %t2.txt %t-same.ar %t2.txt
+RUN: llvm-ar t %t-same.ar | FileCheck %s --check-prefix=SAME
+
+SAME:      1.txt
+SAME-NEXT: 2.txt
+SAME-NEXT: 3.txt
index c5028f5..268fbf9 100644 (file)
-## Test the move command without modifiers moves members to the end\r
-\r
-# RUN: rm -rf %t && mkdir -p %t\r
-# RUN: yaml2obj %s -o %t/1.o --docnum=1\r
-# RUN: yaml2obj %s -o %t/2.o --docnum=2\r
-# RUN: yaml2obj %s -o %t/3.o --docnum=3\r
-\r
-## Move single member:\r
-# RUN: llvm-ar rc %t/single.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar m %t/single.a %t/1.o\r
-# RUN: llvm-ar t %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE --match-full-lines --implicit-check-not {{.}}\r
-\r
-# SINGLE:      2.o\r
-# SINGLE-NEXT: 3.o\r
-# SINGLE-NEXT: 1.o\r
-\r
-# RUN: llvm-nm --print-armap %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM\r
-\r
-# SINGLE-SYM:      symbol2\r
-# SINGLE-SYM-NEXT: symbol3\r
-# SINGLE-SYM-NEXT: symbol1\r
-\r
-## Move multiple members:\r
-# RUN: llvm-ar rc %t/multiple.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar m %t/multiple.a %t/1.o %t/2.o\r
-# RUN: llvm-ar t %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE --match-full-lines --implicit-check-not {{.}}\r
-\r
-# MULTIPLE:      3.o\r
-# MULTIPLE-NEXT: 1.o\r
-# MULTIPLE-NEXT: 2.o\r
-\r
-# RUN: llvm-nm --print-armap %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM\r
-\r
-# MULTIPLE-SYM:      symbol3\r
-# MULTIPLE-SYM-NEXT: symbol1\r
-# MULTIPLE-SYM-NEXT: symbol2\r
-\r
-## Move same member:\r
-# RUN: llvm-ar rc %t/same.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar m %t/same.a %t/1.o %t/1.o\r
-# RUN: llvm-ar t %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o\r
-\r
-# SAME:      2.o\r
-# SAME-NEXT: 3.o\r
-# SAME-NEXT: 1.o\r
-\r
-# RUN: llvm-nm --print-armap %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME-SYM\r
-\r
-# SAME-SYM:      symbol2\r
-# SAME-SYM-NEXT: symbol3\r
-# SAME-SYM-NEXT: symbol1\r
-\r
-## Move without member:\r
-# RUN: llvm-ar rc %t/without.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar m %t/without.a\r
-# RUN: llvm-ar t %t/without.a \\r
-# RUN:   | FileCheck %s --match-full-lines --check-prefix=WITHOUT --implicit-check-not {{.}}\r
-\r
-# WITHOUT:      1.o\r
-# WITHOUT-NEXT: 2.o\r
-# WITHOUT-NEXT: 3.o\r
-\r
-# RUN: llvm-nm --print-armap %t/without.a \\r
-# RUN:   | FileCheck %s --check-prefix=WITHOUT-SYM\r
-\r
-# WITHOUT-SYM:      symbol1\r
-# WITHOUT-SYM-NEXT: symbol2\r
-# WITHOUT-SYM-NEXT: symbol3\r
-\r
-## No archive:\r
-# RUN: not llvm-ar m 2>&1 \\r
-# RUN:   | FileCheck %s --check-prefix=NO-ARCHIVE\r
-\r
-# NO-ARCHIVE: error: An archive name must be specified.\r
-\r
-## Member does not exist:\r
-# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o\r
-# RUN: not llvm-ar m %t/missing.a %t/missing.txt 2>&1 \\r
-# RUN:   | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt\r
-\r
-# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory.\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol2\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol3\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
+## Test the move command without modifiers moves members to the end
+
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: yaml2obj %s -o %t/1.o --docnum=1
+# RUN: yaml2obj %s -o %t/2.o --docnum=2
+# RUN: yaml2obj %s -o %t/3.o --docnum=3
+
+## Move single member:
+# RUN: llvm-ar rc %t/single.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar m %t/single.a %t/1.o
+# RUN: llvm-ar t %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE --match-full-lines --implicit-check-not {{.}}
+
+# SINGLE:      2.o
+# SINGLE-NEXT: 3.o
+# SINGLE-NEXT: 1.o
+
+# RUN: llvm-nm --print-armap %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
+
+# SINGLE-SYM:      symbol2
+# SINGLE-SYM-NEXT: symbol3
+# SINGLE-SYM-NEXT: symbol1
+
+## Move multiple members:
+# RUN: llvm-ar rc %t/multiple.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar m %t/multiple.a %t/1.o %t/2.o
+# RUN: llvm-ar t %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE --match-full-lines --implicit-check-not {{.}}
+
+# MULTIPLE:      3.o
+# MULTIPLE-NEXT: 1.o
+# MULTIPLE-NEXT: 2.o
+
+# RUN: llvm-nm --print-armap %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
+
+# MULTIPLE-SYM:      symbol3
+# MULTIPLE-SYM-NEXT: symbol1
+# MULTIPLE-SYM-NEXT: symbol2
+
+## Move same member:
+# RUN: llvm-ar rc %t/same.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar m %t/same.a %t/1.o %t/1.o
+# RUN: llvm-ar t %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o
+
+# SAME:      2.o
+# SAME-NEXT: 3.o
+# SAME-NEXT: 1.o
+
+# RUN: llvm-nm --print-armap %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME-SYM
+
+# SAME-SYM:      symbol2
+# SAME-SYM-NEXT: symbol3
+# SAME-SYM-NEXT: symbol1
+
+## Move without member:
+# RUN: llvm-ar rc %t/without.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar m %t/without.a
+# RUN: llvm-ar t %t/without.a \
+# RUN:   | FileCheck %s --match-full-lines --check-prefix=WITHOUT --implicit-check-not {{.}}
+
+# WITHOUT:      1.o
+# WITHOUT-NEXT: 2.o
+# WITHOUT-NEXT: 3.o
+
+# RUN: llvm-nm --print-armap %t/without.a \
+# RUN:   | FileCheck %s --check-prefix=WITHOUT-SYM
+
+# WITHOUT-SYM:      symbol1
+# WITHOUT-SYM-NEXT: symbol2
+# WITHOUT-SYM-NEXT: symbol3
+
+## No archive:
+# RUN: not llvm-ar m 2>&1 \
+# RUN:   | FileCheck %s --check-prefix=NO-ARCHIVE
+
+# NO-ARCHIVE: error: An archive name must be specified.
+
+## Member does not exist:
+# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o
+# RUN: not llvm-ar m %t/missing.a %t/missing.txt 2>&1 \
+# RUN:   | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
+
+# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory.
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol2
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol3
+    Binding: STB_GLOBAL
+    Section: .text
index c297653..cf62acb 100644 (file)
@@ -1,45 +1,45 @@
-## Test the ADDLIB MRI command.\r
-\r
-# RUN: rm -rf %t && mkdir -p %t\r
-# RUN: yaml2obj %s -o %t/f.o\r
-# RUN: llvm-ar r %t/f.a %t/f.o\r
-\r
-## Merge contents of archives.\r
-# RUN: echo "CREATE %t/addlib.a" > %t/addlib.mri\r
-# RUN: echo "ADDLIB %t/f.a" >> %t/addlib.mri\r
-# RUN: echo "SAVE" >> %t/addlib.mri\r
-# RUN: llvm-ar -M < %t/addlib.mri\r
-# RUN: llvm-nm --print-armap %t/addlib.a | FileCheck --check-prefix=SYMS %s\r
-# RUN: llvm-ar t %t/addlib.a | FileCheck --check-prefix=FILES %s\r
-\r
-# SYMS: f in {{.*}}\r
-# FILES: f.o\r
-\r
-## ADDLIB with non-archive file.\r
-# RUN: echo "CREATE %t/badlib.a" > %t/badlib.mri\r
-# RUN: echo "ADDLIB %s" >> %t/badlib.mri\r
-# RUN: echo "SAVE" >> %t/badlib.mri\r
-# RUN: not llvm-ar -M < %t/badlib.mri 2>&1 | FileCheck --check-prefix=PARSE %s\r
-# RUN: not ls %t/badlib.a\r
-\r
-# PARSE: Could not parse library\r
-\r
-## No create command.\r
-# RUN: echo "ADDLIB %t/f.a"  > %t/nocreate.mri\r
-# RUN: echo "SAVE" >> %t/nocreate.mri\r
-# RUN: not llvm-ar -M < %t/nocreate.mri\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-    - Name:    f\r
-      Binding: STB_GLOBAL\r
-      Section: .text\r
-...\r
+## Test the ADDLIB MRI command.
+
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: yaml2obj %s -o %t/f.o
+# RUN: llvm-ar r %t/f.a %t/f.o
+
+## Merge contents of archives.
+# RUN: echo "CREATE %t/addlib.a" > %t/addlib.mri
+# RUN: echo "ADDLIB %t/f.a" >> %t/addlib.mri
+# RUN: echo "SAVE" >> %t/addlib.mri
+# RUN: llvm-ar -M < %t/addlib.mri
+# RUN: llvm-nm --print-armap %t/addlib.a | FileCheck --check-prefix=SYMS %s
+# RUN: llvm-ar t %t/addlib.a | FileCheck --check-prefix=FILES %s
+
+# SYMS: f in {{.*}}
+# FILES: f.o
+
+## ADDLIB with non-archive file.
+# RUN: echo "CREATE %t/badlib.a" > %t/badlib.mri
+# RUN: echo "ADDLIB %s" >> %t/badlib.mri
+# RUN: echo "SAVE" >> %t/badlib.mri
+# RUN: not llvm-ar -M < %t/badlib.mri 2>&1 | FileCheck --check-prefix=PARSE %s
+# RUN: not ls %t/badlib.a
+
+# PARSE: Could not parse library
+
+## No create command.
+# RUN: echo "ADDLIB %t/f.a"  > %t/nocreate.mri
+# RUN: echo "SAVE" >> %t/nocreate.mri
+# RUN: not llvm-ar -M < %t/nocreate.mri
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+    - Name:    f
+      Binding: STB_GLOBAL
+      Section: .text
+...
index 2b6e4dc..c26414f 100644 (file)
@@ -1,27 +1,27 @@
-## Test the ADDMOD MRI command.\r
-\r
-# RUN: rm -rf %t && mkdir -p %t\r
-# RUN: yaml2obj %s -o %t/f.o\r
-\r
-# RUN: echo "CREATE %t/addmod.a" > %t/addmod.mri\r
-# RUN: echo "ADDMOD %t/f.o" >> %t/addmod.mri\r
-# RUN: echo "SAVE" >> %t/addmod.mri\r
-# RUN: llvm-ar -M < %t/addmod.mri\r
-# RUN: llvm-nm --print-armap %t/addmod.a | FileCheck %s\r
-\r
-# CHECK: f in f.o\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-    - Name:    f\r
-      Binding: STB_GLOBAL\r
-      Section: .text\r
-...\r
+## Test the ADDMOD MRI command.
+
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: yaml2obj %s -o %t/f.o
+
+# RUN: echo "CREATE %t/addmod.a" > %t/addmod.mri
+# RUN: echo "ADDMOD %t/f.o" >> %t/addmod.mri
+# RUN: echo "SAVE" >> %t/addmod.mri
+# RUN: llvm-ar -M < %t/addmod.mri
+# RUN: llvm-nm --print-armap %t/addmod.a | FileCheck %s
+
+# CHECK: f in f.o
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+    - Name:    f
+      Binding: STB_GLOBAL
+      Section: .text
+...
index f5fa617..aac62dc 100644 (file)
@@ -1,19 +1,19 @@
-# Test different MRI comment formats and white space.\r
-\r
-RUN: rm -rf %t && mkdir -p %t\r
-RUN: yaml2obj %S/Inputs/elf.yaml -o %t/elf.o\r
-\r
-RUN: echo "create %t/mri.ar;comment" > %t/script.mri\r
-RUN: echo "addmod %t/elf.o * comment" >> %t/script.mri\r
-RUN: echo "; comment" >> %t/script.mri\r
-RUN: echo " ;comment" >> %t/script.mri\r
-RUN: echo "* comment" >> %t/script.mri\r
-RUN: echo " *comment" >> %t/script.mri\r
-RUN: echo "" >> %t/script.mri\r
-RUN: echo " " >> %t/script.mri\r
-RUN: echo " save" >> %t/script.mri\r
-\r
-RUN: llvm-ar -M < %t/script.mri\r
-RUN: llvm-ar t %t/mri.ar | FileCheck %s\r
-\r
-CHECK: elf.o\r
+# Test different MRI comment formats and white space.
+
+RUN: rm -rf %t && mkdir -p %t
+RUN: yaml2obj %S/Inputs/elf.yaml -o %t/elf.o
+
+RUN: echo "create %t/mri.ar;comment" > %t/script.mri
+RUN: echo "addmod %t/elf.o * comment" >> %t/script.mri
+RUN: echo "; comment" >> %t/script.mri
+RUN: echo " ;comment" >> %t/script.mri
+RUN: echo "* comment" >> %t/script.mri
+RUN: echo " *comment" >> %t/script.mri
+RUN: echo "" >> %t/script.mri
+RUN: echo " " >> %t/script.mri
+RUN: echo " save" >> %t/script.mri
+
+RUN: llvm-ar -M < %t/script.mri
+RUN: llvm-ar t %t/mri.ar | FileCheck %s
+
+CHECK: elf.o
index db4abce..a00f2f5 100644 (file)
@@ -1,48 +1,48 @@
-# The END MRI command is optional. Scripts that omit\r
-# or include END should be handled by llvm-ar.\r
-RUN: rm -rf %t && mkdir -p %t\r
-\r
-# Empty File\r
-RUN: yaml2obj %S/Inputs/elf.yaml -o %t/elf.o\r
-\r
-RUN: touch %t/empty.mri\r
-RUN: llvm-ar -M < %t/empty.mri\r
-\r
-RUN: echo "END" > %t/empty-end.mri\r
-RUN: llvm-ar -M < %t/empty-end.mri\r
-\r
-# Comment only\r
-RUN: echo "; a comment" > %t/comment.mri\r
-RUN: llvm-ar -M < %t/comment.mri\r
-\r
-RUN: echo "; a comment" > %t/comment-end.mri\r
-RUN: echo "END" > %t/comment-end.mri\r
-RUN: llvm-ar -M < %t/comment-end.mri\r
-\r
-# Without Save\r
-RUN: echo "create %t/mri.ar" > %t/no-save.mri\r
-RUN: echo "addmod %t/elf.o" >> %t/no-save.mri\r
-RUN: llvm-ar -M < %t/no-save.mri\r
-RUN: test ! -e %t/mri.ar\r
-\r
-RUN: echo "create %t/mri.ar" > %t/no-save-end.mri\r
-RUN: echo "addmod %t/elf.o" >> %t/no-save-end.mri\r
-RUN: echo "END" > %t/no-save-end.mri\r
-RUN: llvm-ar -M < %t/no-save-end.mri\r
-RUN: test ! -e %t/mri.ar\r
-\r
-# With Save\r
-RUN: echo "create %t/mri.ar" > %t/save.mri\r
-RUN: echo "addmod %t/elf.o" >> %t/save.mri\r
-RUN: echo "save" >> %t/save.mri\r
-RUN: llvm-ar -M < %t/save.mri\r
-RUN: llvm-ar t %t/mri.ar | FileCheck %s\r
-\r
-RUN: echo "create %t/mri.ar" > %t/save-end.mri\r
-RUN: echo "addmod %t/elf.o" >> %t/save-end.mri\r
-RUN: echo "save" >> %t/save-end.mri\r
-RUN: echo "END" > %t/no-save-end.mri\r
-RUN: llvm-ar -M < %t/save-end.mri\r
-RUN: llvm-ar t %t/mri.ar | FileCheck %s\r
-\r
-CHECK: elf.o\r
+# The END MRI command is optional. Scripts that omit
+# or include END should be handled by llvm-ar.
+RUN: rm -rf %t && mkdir -p %t
+
+# Empty File
+RUN: yaml2obj %S/Inputs/elf.yaml -o %t/elf.o
+
+RUN: touch %t/empty.mri
+RUN: llvm-ar -M < %t/empty.mri
+
+RUN: echo "END" > %t/empty-end.mri
+RUN: llvm-ar -M < %t/empty-end.mri
+
+# Comment only
+RUN: echo "; a comment" > %t/comment.mri
+RUN: llvm-ar -M < %t/comment.mri
+
+RUN: echo "; a comment" > %t/comment-end.mri
+RUN: echo "END" > %t/comment-end.mri
+RUN: llvm-ar -M < %t/comment-end.mri
+
+# Without Save
+RUN: echo "create %t/mri.ar" > %t/no-save.mri
+RUN: echo "addmod %t/elf.o" >> %t/no-save.mri
+RUN: llvm-ar -M < %t/no-save.mri
+RUN: test ! -e %t/mri.ar
+
+RUN: echo "create %t/mri.ar" > %t/no-save-end.mri
+RUN: echo "addmod %t/elf.o" >> %t/no-save-end.mri
+RUN: echo "END" > %t/no-save-end.mri
+RUN: llvm-ar -M < %t/no-save-end.mri
+RUN: test ! -e %t/mri.ar
+
+# With Save
+RUN: echo "create %t/mri.ar" > %t/save.mri
+RUN: echo "addmod %t/elf.o" >> %t/save.mri
+RUN: echo "save" >> %t/save.mri
+RUN: llvm-ar -M < %t/save.mri
+RUN: llvm-ar t %t/mri.ar | FileCheck %s
+
+RUN: echo "create %t/mri.ar" > %t/save-end.mri
+RUN: echo "addmod %t/elf.o" >> %t/save-end.mri
+RUN: echo "save" >> %t/save-end.mri
+RUN: echo "END" > %t/no-save-end.mri
+RUN: llvm-ar -M < %t/save-end.mri
+RUN: llvm-ar t %t/mri.ar | FileCheck %s
+
+CHECK: elf.o
index ef2e5f7..607ba41 100644 (file)
@@ -1,93 +1,91 @@
-## Test quick append \r
-\r
-# RUN: rm -rf %t && mkdir -p %t\r
-# RUN: yaml2obj %s -o %t/1.o --docnum=1\r
-# RUN: yaml2obj %s -o %t/2.o --docnum=2\r
-\r
-## Append single member:\r
-# RUN: llvm-ar qc %t/single.a %t/1.o\r
-# RUN: llvm-ar t %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE --match-full-lines --implicit-check-not {{.}}\r
-\r
-# SINGLE: 1.o\r
-\r
-# RUN: llvm-nm --print-armap %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM\r
-\r
-# SINGLE-SYM: symbol1\r
-\r
-## Append multiple members:\r
-# RUN: llvm-ar qc %t/multiple.a %t/1.o %t/2.o\r
-# RUN: llvm-ar t %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE --match-full-lines --implicit-check-not {{.}}\r
-\r
-# MULTIPLE:      1.o\r
-# MULTIPLE-NEXT: 2.o\r
-\r
-# RUN: llvm-nm --print-armap %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM\r
-\r
-# MULTIPLE-SYM:      symbol1\r
-# MULTIPLE-SYM-NEXT: symbol2\r
-\r
-## Append same member:\r
-# RUN: llvm-ar qc %t/same.a %t/1.o %t/1.o\r
-# RUN: llvm-ar t %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --match-full-lines --implicit-check-not {{.}}\r
-\r
-# SAME:      1.o\r
-# SAME-NEXT: 1.o\r
-\r
-# RUN: llvm-nm --print-armap %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME-SYM\r
-\r
-# SAME-SYM:      symbol1\r
-# SAME-SYM-NEXT: symbol1\r
-\r
-## Append without member:\r
-# RUN: llvm-ar qc %t/without.a\r
-# RUN: llvm-ar t %t/without.a \\r
-# RUN:   | FileCheck /dev/null --allow-empty --implicit-check-not={{.}}\r
-\r
-# RUN: llvm-nm --print-armap %t/without.a \\r
-# RUN:   | FileCheck /dev/null --allow-empty --implicit-check-not={{.}}\r
-\r
-## No archive:\r
-# RUN: not llvm-ar qc 2>&1 \\r
-# RUN:   | FileCheck %s --check-prefix=NO-ARCHIVE\r
-\r
-# NO-ARCHIVE: error: An archive name must be specified.\r
-\r
-## Member does not exist:\r
-# RUN: not llvm-ar qc %t/missing.a %t/missing.txt 2>&1 \\r
-# RUN:   | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt\r
-\r
-# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory.\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol2\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
+## Test quick append 
+
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: yaml2obj %s -o %t/1.o --docnum=1
+# RUN: yaml2obj %s -o %t/2.o --docnum=2
+
+## Append single member:
+# RUN: llvm-ar qc %t/single.a %t/1.o
+# RUN: llvm-ar t %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE --match-full-lines --implicit-check-not {{.}}
+
+# SINGLE: 1.o
+
+# RUN: llvm-nm --print-armap %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
+
+# SINGLE-SYM: symbol1
+
+## Append multiple members:
+# RUN: llvm-ar qc %t/multiple.a %t/1.o %t/2.o
+# RUN: llvm-ar t %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE --match-full-lines --implicit-check-not {{.}}
+
+# MULTIPLE:      1.o
+# MULTIPLE-NEXT: 2.o
+
+# RUN: llvm-nm --print-armap %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
+
+# MULTIPLE-SYM:      symbol1
+# MULTIPLE-SYM-NEXT: symbol2
+
+## Append same member:
+# RUN: llvm-ar qc %t/same.a %t/1.o %t/1.o
+# RUN: llvm-ar t %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --match-full-lines --implicit-check-not {{.}}
+
+# SAME:      1.o
+# SAME-NEXT: 1.o
+
+# RUN: llvm-nm --print-armap %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME-SYM
+
+# SAME-SYM:      symbol1
+# SAME-SYM-NEXT: symbol1
+
+## Append without member:
+# RUN: llvm-ar qc %t/without.a
+# RUN: llvm-ar t %t/without.a | count 0
+
+# RUN: llvm-nm --print-armap %t/without.a | count 0
+
+## No archive:
+# RUN: not llvm-ar qc 2>&1 \
+# RUN:   | FileCheck %s --check-prefix=NO-ARCHIVE
+
+# NO-ARCHIVE: error: An archive name must be specified.
+
+## Member does not exist:
+# RUN: not llvm-ar qc %t/missing.a %t/missing.txt 2>&1 \
+# RUN:   | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
+
+# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory.
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol2
+    Binding: STB_GLOBAL
+    Section: .text
index f4adea2..1d638f4 100644 (file)
@@ -1,30 +1,30 @@
-## Test that read-only archives cannot be edited\r
-\r
-# RUN: rm -rf %t && mkdir -p %t\r
-# RUN: touch %t/1.txt\r
-# RUN: touch %t/2.txt\r
-# RUN: touch %t/3.txt\r
-\r
-# RUN: llvm-ar rc %t/archive.a %t/1.txt %t/2.txt\r
-\r
-## Make read only:\r
-# RUN: chmod 444 %t/archive.a\r
-\r
-# RUN: not llvm-ar r %t/archive.a %t/3.txt \\r
-# RUN:   FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a\r
-\r
-# ERROR: error: [[FILE]]: no such file or directory.\r
-\r
-# RUN: not llvm-ar q %t/archive.a %t/3.txt \\r
-# RUN:   FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a\r
-\r
-# RUN: not llvm-ar m %t/archive.a t/1.txt \\r
-# RUN:   FileCheck %s --check-prefix=ERROR-2 -DFILE=%t/archive.a\r
-\r
-# ERROR-2: error: [[FILE]]: permission denied.\r
-\r
-# RUN: llvm-ar t %t/archive.a \\r
-# RUN:   | FileCheck %s --check-prefix=ARCHIVE --match-full-lines --implicit-check-not {{.}}\r
-\r
-# ARCHIVE: 1.txt\r
-# ARCHIVE-NEXT: 2.txt\r
+## Test that read-only archives cannot be edited
+
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: touch %t/1.txt
+# RUN: touch %t/2.txt
+# RUN: touch %t/3.txt
+
+# RUN: llvm-ar rc %t/archive.a %t/1.txt %t/2.txt
+
+## Make read only:
+# RUN: chmod 444 %t/archive.a
+
+# RUN: not llvm-ar r %t/archive.a %t/3.txt \
+# RUN:   FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a
+
+# ERROR: error: [[FILE]]: no such file or directory.
+
+# RUN: not llvm-ar q %t/archive.a %t/3.txt \
+# RUN:   FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a
+
+# RUN: not llvm-ar m %t/archive.a t/1.txt \
+# RUN:   FileCheck %s --check-prefix=ERROR-2 -DFILE=%t/archive.a
+
+# ERROR-2: error: [[FILE]]: permission denied.
+
+# RUN: llvm-ar t %t/archive.a \
+# RUN:   | FileCheck %s --check-prefix=ARCHIVE --match-full-lines --implicit-check-not {{.}}
+
+# ARCHIVE: 1.txt
+# ARCHIVE-NEXT: 2.txt
index 1b51dba..c056565 100644 (file)
-## Test that the replace command with "u" updates the relevant members.\r
-\r
-# RUN: rm -rf %t && mkdir -p %t/new/other\r
-\r
-# RUN: yaml2obj %s -o %t/1.o --docnum=1\r
-# RUN: yaml2obj %s -o %t/2.o --docnum=2\r
-# RUN: yaml2obj %s -o %t/3.o --docnum=3\r
-\r
-# RUN: env TZ=GMT touch -t 200001020304 %t/1.o\r
-# RUN: env TZ=GMT touch -t 200001020304 %t/2.o\r
-# RUN: env TZ=GMT touch -t 200001020304 %t/3.o\r
-\r
-# RUN: yaml2obj %s -o %t/new/1.o --docnum=4\r
-# RUN: yaml2obj %s -o %t/new/3.o --docnum=5\r
-\r
-# RUN: yaml2obj %s -o %t/new/other/1.o --docnum=6\r
-\r
-# RUN: env TZ=GMT touch -t 200001020304 %t/new/other/1.o\r
-\r
-## Replace single member with newer file:\r
-# RUN: llvm-ar rcU %t/single.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar ruU %t/single.a %t/new/1.o\r
-# RUN: llvm-ar t %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}\r
-\r
-# SINGLE:      1.o\r
-# SINGLE-NEXT: 2.o\r
-# SINGLE-NEXT: 3.o\r
-\r
-# RUN: llvm-nm --print-armap %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM\r
-\r
-# SINGLE-SYM:      symbolnew1\r
-# SINGLE-SYM-NEXT: symbol2\r
-# SINGLE-SYM-NEXT: symbol3\r
-\r
-## Replace new single member with older file:\r
-# RUN: llvm-ar ruU %t/single.a %t/1.o\r
-# RUN: llvm-ar t %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}\r
-\r
-# RUN: llvm-nm --print-armap %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM\r
-\r
-## Replace multiple members with newer files:\r
-# RUN: llvm-ar rcuU %t/multiple.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar ruU %t/multiple.a %t/new/1.o %t/new/3.o\r
-# RUN: llvm-ar t %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}\r
-\r
-# MULTIPLE:      1.o\r
-# MULTIPLE-NEXT: 2.o\r
-# MULTIPLE-NEXT: 3.o\r
-\r
-# RUN: llvm-nm --print-armap %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM\r
-\r
-# MULTIPLE-SYM:      symbolnew1\r
-# MULTIPLE-SYM-NEXT: symbol2\r
-# MULTIPLE-SYM-NEXTs: symbolnew3\r
-\r
-## Replace newer members with multiple older files:\r
-# RUN: llvm-ar ruU %t/multiple.a %t/1.o %t/2.o\r
-# RUN: llvm-ar t %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}\r
-\r
-# RUN: llvm-nm --print-armap %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM\r
-\r
-## Replace same member with newer files:\r
-# RUN: llvm-ar rcuU %t/same.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar ruU %t/same.a %t/new/1.o %t/new/other/1.o\r
-# RUN: llvm-ar t %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --implicit-check-not {{.}}\r
-\r
-# SAME:      1.o\r
-# SAME-NEXT: 2.o\r
-# SAME-NEXT: 3.o\r
-# SAME-NEXT: 1.o\r
-\r
-# RUN: llvm-nm --print-armap %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME-SYM\r
-\r
-# SAME-SYM:      symbolnew1\r
-# SAME-SYM-NEXT: symbol2\r
-# SAME-SYM-NEXT: symbol3\r
-# SAME-SYM-NEXT: symbolother1\r
-\r
-## Replace multiple members with an older file and a newer file:\r
-# RUN: llvm-ar rcuU %t/old-new.a %t/new/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar ruU %t/old-new.a %t/1.o %t/new/3.o\r
-# RUN: llvm-ar t %t/old-new.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}\r
-\r
-# RUN: llvm-nm --print-armap %t/old-new.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM\r
-\r
-## Replace same member with an older file and a newer file:\r
-# RUN: llvm-ar rcuU %t/old-new-same.a %t/new/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar ruU %t/old-new-same.a %t/1.o %t/new/other/1.o\r
-# RUN: llvm-ar t %t/old-new-same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --implicit-check-not {{.}}\r
-\r
-# RUN: llvm-nm --print-armap %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME-SYM\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol2\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol3\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbolnew1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbolnew3\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbolother1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
+## Test that the replace command with "u" updates the relevant members.
+
+# RUN: rm -rf %t && mkdir -p %t/new/other
+
+# RUN: yaml2obj %s -o %t/1.o --docnum=1
+# RUN: yaml2obj %s -o %t/2.o --docnum=2
+# RUN: yaml2obj %s -o %t/3.o --docnum=3
+
+# RUN: env TZ=GMT touch -t 200001020304 %t/1.o
+# RUN: env TZ=GMT touch -t 200001020304 %t/2.o
+# RUN: env TZ=GMT touch -t 200001020304 %t/3.o
+
+# RUN: yaml2obj %s -o %t/new/1.o --docnum=4
+# RUN: yaml2obj %s -o %t/new/3.o --docnum=5
+
+# RUN: yaml2obj %s -o %t/new/other/1.o --docnum=6
+
+# RUN: env TZ=GMT touch -t 200001020304 %t/new/other/1.o
+
+## Replace single member with newer file:
+# RUN: llvm-ar rcU %t/single.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar ruU %t/single.a %t/new/1.o
+# RUN: llvm-ar t %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}
+
+# SINGLE:      1.o
+# SINGLE-NEXT: 2.o
+# SINGLE-NEXT: 3.o
+
+# RUN: llvm-nm --print-armap %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
+
+# SINGLE-SYM:      symbolnew1
+# SINGLE-SYM-NEXT: symbol2
+# SINGLE-SYM-NEXT: symbol3
+
+## Replace new single member with older file:
+# RUN: llvm-ar ruU %t/single.a %t/1.o
+# RUN: llvm-ar t %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}
+
+# RUN: llvm-nm --print-armap %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
+
+## Replace multiple members with newer files:
+# RUN: llvm-ar rcuU %t/multiple.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar ruU %t/multiple.a %t/new/1.o %t/new/3.o
+# RUN: llvm-ar t %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
+
+# MULTIPLE:      1.o
+# MULTIPLE-NEXT: 2.o
+# MULTIPLE-NEXT: 3.o
+
+# RUN: llvm-nm --print-armap %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
+
+# MULTIPLE-SYM:      symbolnew1
+# MULTIPLE-SYM-NEXT: symbol2
+# MULTIPLE-SYM-NEXTs: symbolnew3
+
+## Replace newer members with multiple older files:
+# RUN: llvm-ar ruU %t/multiple.a %t/1.o %t/2.o
+# RUN: llvm-ar t %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
+
+# RUN: llvm-nm --print-armap %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
+
+## Replace same member with newer files:
+# RUN: llvm-ar rcuU %t/same.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar ruU %t/same.a %t/new/1.o %t/new/other/1.o
+# RUN: llvm-ar t %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --implicit-check-not {{.}}
+
+# SAME:      1.o
+# SAME-NEXT: 2.o
+# SAME-NEXT: 3.o
+# SAME-NEXT: 1.o
+
+# RUN: llvm-nm --print-armap %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME-SYM
+
+# SAME-SYM:      symbolnew1
+# SAME-SYM-NEXT: symbol2
+# SAME-SYM-NEXT: symbol3
+# SAME-SYM-NEXT: symbolother1
+
+## Replace multiple members with an older file and a newer file:
+# RUN: llvm-ar rcuU %t/old-new.a %t/new/1.o %t/2.o %t/3.o
+# RUN: llvm-ar ruU %t/old-new.a %t/1.o %t/new/3.o
+# RUN: llvm-ar t %t/old-new.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
+
+# RUN: llvm-nm --print-armap %t/old-new.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
+
+## Replace same member with an older file and a newer file:
+# RUN: llvm-ar rcuU %t/old-new-same.a %t/new/1.o %t/2.o %t/3.o
+# RUN: llvm-ar ruU %t/old-new-same.a %t/1.o %t/new/other/1.o
+# RUN: llvm-ar t %t/old-new-same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --implicit-check-not {{.}}
+
+# RUN: llvm-nm --print-armap %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME-SYM
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol2
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol3
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbolnew1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbolnew3
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbolother1
+    Binding: STB_GLOBAL
+    Section: .text
index 2a7cddf..0c1722a 100644 (file)
-## Test the replace command without modifiers replaces the relevant members.\r
-\r
-# RUN: rm -rf %t && mkdir -p %t/new/other\r
-# RUN: yaml2obj %s -o %t/1.o --docnum=1\r
-# RUN: yaml2obj %s -o %t/2.o --docnum=2\r
-# RUN: yaml2obj %s -o %t/3.o --docnum=3\r
-\r
-# RUN: yaml2obj %s -o %t/new/1.o --docnum=4\r
-# RUN: yaml2obj %s -o %t/new/3.o --docnum=5\r
-\r
-# RUN: yaml2obj %s -o %t/new/other/1.o --docnum=6\r
-\r
-## Replace single member:\r
-# RUN: llvm-ar rc %t/single.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar r %t/single.a %t/new/1.o\r
-# RUN: llvm-ar t %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}\r
-\r
-# SINGLE:      1.o\r
-# SINGLE-NEXT: 2.o\r
-# SINGLE-NEXT: 3.o\r
-\r
-# RUN: llvm-nm --print-armap %t/single.a \\r
-# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM\r
-\r
-# SINGLE-SYM:      symbolnew1\r
-# SINGLE-SYM-NEXT: symbol2\r
-# SINGLE-SYM-NEXT: symbol3\r
-\r
-## Replace multiple members:\r
-# RUN: llvm-ar rc %t/multiple.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar r %t/multiple.a %t/new/1.o %t/new/3.o\r
-# RUN: llvm-ar t %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}\r
-\r
-# MULTIPLE:      1.o\r
-# MULTIPLE-NEXT: 2.o\r
-# MULTIPLE-NEXT: 3.o\r
-\r
-# RUN: llvm-nm --print-armap %t/multiple.a \\r
-# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM\r
-\r
-# MULTIPLE-SYM:      symbolnew1\r
-# MULTIPLE-SYM-NEXT: symbol2\r
-# MULTIPLE-SYM-NEXT: symbolnew3\r
-\r
-## Replace same member:\r
-# RUN: llvm-ar rc %t/same.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar r %t/same.a %t/new/1.o %t/new/other/1.o\r
-# RUN: llvm-ar t %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME  --implicit-check-not {{.}}\r
-\r
-# SAME:      1.o\r
-# SAME-NEXT: 2.o\r
-# SAME-NEXT: 3.o\r
-# SAME-NEXT: 1.o\r
-\r
-# RUN: llvm-nm --print-armap %t/same.a \\r
-# RUN:   | FileCheck %s --check-prefix=SAME-SYM\r
-\r
-# SAME-SYM:      symbolnew1\r
-# SAME-SYM-NEXT: symbol2\r
-# SAME-SYM-NEXT: symbol3\r
-# SAME-SYM-NEXT: symbolother1\r
-\r
-## Replace without member:\r
-# RUN: llvm-ar rc %t/without.a %t/1.o %t/2.o %t/3.o\r
-# RUN: llvm-ar r %t/without.a\r
-# RUN: llvm-ar t %t/without.a \\r
-# RUN:   | FileCheck %s --check-prefix=WITHOUT --implicit-check-not {{.}}\r
-\r
-# WITHOUT:      1.o\r
-# WITHOUT-NEXT: 2.o\r
-# WITHOUT-NEXT: 3.o\r
-\r
-# RUN: llvm-nm --print-armap %t/without.a \\r
-# RUN:   | FileCheck %s --check-prefix=WITHOUT-SYM\r
-\r
-# WITHOUT-SYM:      symbol1\r
-# WITHOUT-SYM-NEXT: symbol2\r
-# WITHOUT-SYM-NEXT: symbol3\r
-\r
-## No archive:\r
-# RUN: not llvm-ar r 2>&1 \\r
-# RUN:   | FileCheck %s --check-prefix=NO-ARCHIVE\r
-\r
-# NO-ARCHIVE: error: An archive name must be specified.\r
-\r
-## Member does not exist:\r
-# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o\r
-# RUN: not llvm-ar r %t/missing.a %t/missing.txt 2>&1 \\r
-# RUN:   | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt\r
-\r
-# MISSING-FILE: error: [[FILE]]: {{[Nn]}}o such file or directory.\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol2\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol3\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-    \r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbolnew1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbolnew3\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbolother1\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
+## Test the replace command without modifiers replaces the relevant members.
+
+# RUN: rm -rf %t && mkdir -p %t/new/other
+# RUN: yaml2obj %s -o %t/1.o --docnum=1
+# RUN: yaml2obj %s -o %t/2.o --docnum=2
+# RUN: yaml2obj %s -o %t/3.o --docnum=3
+
+# RUN: yaml2obj %s -o %t/new/1.o --docnum=4
+# RUN: yaml2obj %s -o %t/new/3.o --docnum=5
+
+# RUN: yaml2obj %s -o %t/new/other/1.o --docnum=6
+
+## Replace single member:
+# RUN: llvm-ar rc %t/single.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar r %t/single.a %t/new/1.o
+# RUN: llvm-ar t %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}
+
+# SINGLE:      1.o
+# SINGLE-NEXT: 2.o
+# SINGLE-NEXT: 3.o
+
+# RUN: llvm-nm --print-armap %t/single.a \
+# RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
+
+# SINGLE-SYM:      symbolnew1
+# SINGLE-SYM-NEXT: symbol2
+# SINGLE-SYM-NEXT: symbol3
+
+## Replace multiple members:
+# RUN: llvm-ar rc %t/multiple.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar r %t/multiple.a %t/new/1.o %t/new/3.o
+# RUN: llvm-ar t %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
+
+# MULTIPLE:      1.o
+# MULTIPLE-NEXT: 2.o
+# MULTIPLE-NEXT: 3.o
+
+# RUN: llvm-nm --print-armap %t/multiple.a \
+# RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
+
+# MULTIPLE-SYM:      symbolnew1
+# MULTIPLE-SYM-NEXT: symbol2
+# MULTIPLE-SYM-NEXT: symbolnew3
+
+## Replace same member:
+# RUN: llvm-ar rc %t/same.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar r %t/same.a %t/new/1.o %t/new/other/1.o
+# RUN: llvm-ar t %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME  --implicit-check-not {{.}}
+
+# SAME:      1.o
+# SAME-NEXT: 2.o
+# SAME-NEXT: 3.o
+# SAME-NEXT: 1.o
+
+# RUN: llvm-nm --print-armap %t/same.a \
+# RUN:   | FileCheck %s --check-prefix=SAME-SYM
+
+# SAME-SYM:      symbolnew1
+# SAME-SYM-NEXT: symbol2
+# SAME-SYM-NEXT: symbol3
+# SAME-SYM-NEXT: symbolother1
+
+## Replace without member:
+# RUN: llvm-ar rc %t/without.a %t/1.o %t/2.o %t/3.o
+# RUN: llvm-ar r %t/without.a
+# RUN: llvm-ar t %t/without.a \
+# RUN:   | FileCheck %s --check-prefix=WITHOUT --implicit-check-not {{.}}
+
+# WITHOUT:      1.o
+# WITHOUT-NEXT: 2.o
+# WITHOUT-NEXT: 3.o
+
+# RUN: llvm-nm --print-armap %t/without.a \
+# RUN:   | FileCheck %s --check-prefix=WITHOUT-SYM
+
+# WITHOUT-SYM:      symbol1
+# WITHOUT-SYM-NEXT: symbol2
+# WITHOUT-SYM-NEXT: symbol3
+
+## No archive:
+# RUN: not llvm-ar r 2>&1 \
+# RUN:   | FileCheck %s --check-prefix=NO-ARCHIVE
+
+# NO-ARCHIVE: error: An archive name must be specified.
+
+## Member does not exist:
+# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o
+# RUN: not llvm-ar r %t/missing.a %t/missing.txt 2>&1 \
+# RUN:   | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
+
+# MISSING-FILE: error: [[FILE]]: {{[Nn]}}o such file or directory.
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol2
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol3
+    Binding: STB_GLOBAL
+    Section: .text
+    
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbolnew1
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbolnew3
+    Binding: STB_GLOBAL
+    Section: .text
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbolother1
+    Binding: STB_GLOBAL
+    Section: .text
index e59a468..8dde4ed 100644 (file)
@@ -1,70 +1,70 @@
-## Test the s and S modifiers. Build and do not build a symbol table.\r
-\r
-# RUN: yaml2obj %s -o %t.o\r
-# RUN: touch %t-other.txt\r
-\r
-## Default:\r
-# RUN: rm -f %t-default.a\r
-# RUN: llvm-ar rc %t-default.a %t.o\r
-# RUN: llvm-nm --print-armap %t-default.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMTAB\r
-\r
-## Use a modifer:\r
-# RUN: rm -f %t-symtab.a\r
-# RUN: llvm-ar rcs %t-symtab.a %t.o\r
-# RUN: llvm-nm --print-armap %t-symtab.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMTAB\r
-\r
-# RUN: rm -f %t-no-symtab.a\r
-# RUN: llvm-ar rcS %t-no-symtab.a %t.o\r
-# RUN: llvm-nm --print-armap %t-no-symtab.a \\r
-# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB\r
-\r
-## Use both modifers:\r
-# RUN: rm -f %t-symtab-last.a\r
-# RUN: llvm-ar rcSs %t-symtab-last.a %t.o\r
-# RUN: llvm-nm --print-armap %t-symtab-last.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMTAB\r
-\r
-# RUN: rm -f %t-no-symtab-last.a\r
-# RUN: llvm-ar rcsS %t-no-symtab-last.a %t.o\r
-# RUN: llvm-nm --print-armap %t-no-symtab-last.a \\r
-# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB\r
-\r
-## Use an existing archive:\r
-# RUN: rm -f %t-to-symtab.a\r
-# RUN: llvm-ar rcS %t-to-symtab.a %t.o\r
-# RUN: llvm-ar rs %t-to-symtab.a %t-other.txt\r
-# RUN: llvm-nm --print-armap %t-to-symtab.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMTAB\r
-\r
-# RUN: llvm-ar rs %t-to-symtab.a %t-other.txt\r
-# RUN: llvm-nm --print-armap %t-to-symtab.a \\r
-# RUN:   | FileCheck %s --check-prefix=SYMTAB\r
-\r
-# RUN: rm -f %t-to-no-symtab.a\r
-# RUN: llvm-ar rcs %t-to-no-symtab.a %t.o\r
-# RUN: llvm-ar rS %t-to-no-symtab.a %t-other.txt\r
-# RUN: llvm-nm --print-armap %t-to-no-symtab.a \\r
-# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB\r
-\r
-# RUN: llvm-ar rS %t-to-no-symtab.a %t-other.txt\r
-# RUN: llvm-nm --print-armap %t-to-no-symtab.a \\r
-# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB\r
-\r
-# SYMTAB:        symbol in\r
-# NO-SYMTAB-NOT: symbol in\r
-\r
---- !ELF\r
-FileHeader:\r
-  Class:   ELFCLASS64\r
-  Data:    ELFDATA2LSB\r
-  Type:    ET_REL\r
-  Machine: EM_X86_64\r
-Sections:\r
-  - Name: .text\r
-    Type: SHT_PROGBITS\r
-Symbols:\r
-  - Name:    symbol\r
-    Binding: STB_GLOBAL\r
-    Section: .text\r
+## Test the s and S modifiers. Build and do not build a symbol table.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: touch %t-other.txt
+
+## Default:
+# RUN: rm -f %t-default.a
+# RUN: llvm-ar rc %t-default.a %t.o
+# RUN: llvm-nm --print-armap %t-default.a \
+# RUN:   | FileCheck %s --check-prefix=SYMTAB
+
+## Use a modifer:
+# RUN: rm -f %t-symtab.a
+# RUN: llvm-ar rcs %t-symtab.a %t.o
+# RUN: llvm-nm --print-armap %t-symtab.a \
+# RUN:   | FileCheck %s --check-prefix=SYMTAB
+
+# RUN: rm -f %t-no-symtab.a
+# RUN: llvm-ar rcS %t-no-symtab.a %t.o
+# RUN: llvm-nm --print-armap %t-no-symtab.a \
+# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB
+
+## Use both modifers:
+# RUN: rm -f %t-symtab-last.a
+# RUN: llvm-ar rcSs %t-symtab-last.a %t.o
+# RUN: llvm-nm --print-armap %t-symtab-last.a \
+# RUN:   | FileCheck %s --check-prefix=SYMTAB
+
+# RUN: rm -f %t-no-symtab-last.a
+# RUN: llvm-ar rcsS %t-no-symtab-last.a %t.o
+# RUN: llvm-nm --print-armap %t-no-symtab-last.a \
+# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB
+
+## Use an existing archive:
+# RUN: rm -f %t-to-symtab.a
+# RUN: llvm-ar rcS %t-to-symtab.a %t.o
+# RUN: llvm-ar rs %t-to-symtab.a %t-other.txt
+# RUN: llvm-nm --print-armap %t-to-symtab.a \
+# RUN:   | FileCheck %s --check-prefix=SYMTAB
+
+# RUN: llvm-ar rs %t-to-symtab.a %t-other.txt
+# RUN: llvm-nm --print-armap %t-to-symtab.a \
+# RUN:   | FileCheck %s --check-prefix=SYMTAB
+
+# RUN: rm -f %t-to-no-symtab.a
+# RUN: llvm-ar rcs %t-to-no-symtab.a %t.o
+# RUN: llvm-ar rS %t-to-no-symtab.a %t-other.txt
+# RUN: llvm-nm --print-armap %t-to-no-symtab.a \
+# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB
+
+# RUN: llvm-ar rS %t-to-no-symtab.a %t-other.txt
+# RUN: llvm-nm --print-armap %t-to-no-symtab.a \
+# RUN:   | FileCheck %s --check-prefix=NO-SYMTAB
+
+# SYMTAB:        symbol in
+# NO-SYMTAB-NOT: symbol in
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+Sections:
+  - Name: .text
+    Type: SHT_PROGBITS
+Symbols:
+  - Name:    symbol
+    Binding: STB_GLOBAL
+    Section: .text