Add support for addmod to mri scripts.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 21 Oct 2014 14:46:17 +0000 (14:46 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 21 Oct 2014 14:46:17 +0000 (14:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220294 91177308-0d34-0410-b5e6-96231b3b80d8

test/Object/mri-addmod.test [new file with mode: 0644]
tools/llvm-ar/llvm-ar.cpp

diff --git a/test/Object/mri-addmod.test b/test/Object/mri-addmod.test
new file mode 100644 (file)
index 0000000..b8a41de
--- /dev/null
@@ -0,0 +1,18 @@
+; RUN: echo create %t.a > %t.mri
+; RUN: echo addmod %p/Inputs/trivial-object-test.elf-x86-64 >> %t.mri
+; RUN: echo save >> %t.mri
+; RUN: echo end >> %t.mri
+
+; RUN: llvm-ar -M  < %t.mri
+; RUN: llvm-nm -M %t.a | FileCheck %s
+
+; CHECK:      Archive map
+; CHECK-NEXT: main in trivial-object-test.elf-x86-64
+
+; CHECK:      trivial-object-test.elf-x86-64:
+; CHECK-NEXT:                  U SomeOtherFunction
+; CHECK-NEXT: 0000000000000000 T main
+; CHECK-NEXT:                  U puts
+
+; line_iterator is incompatible to CRLF.
+; REQUIRES: shell
index fa0842992ec506a0bb8d1cc97df2d00147fb5dec..785cabd08ff87ab814e35102ed09dc0939a499cb 100644 (file)
@@ -178,7 +178,7 @@ static void getMembers() {
 }
 
 namespace {
-enum class MRICommand { Create, Save, End, Invalid };
+enum class MRICommand { AddMod, Create, Save, End, Invalid };
 }
 
 static ArchiveOperation parseMRIScript() {
@@ -192,12 +192,16 @@ static ArchiveOperation parseMRIScript() {
     StringRef CommandStr, Rest;
     std::tie(CommandStr, Rest) = Line.split(' ');
     auto Command = StringSwitch<MRICommand>(CommandStr.lower())
+                       .Case("addmod", MRICommand::AddMod)
                        .Case("create", MRICommand::Create)
                        .Case("save", MRICommand::Save)
                        .Case("end", MRICommand::End)
                        .Default(MRICommand::Invalid);
 
     switch (Command) {
+    case MRICommand::AddMod:
+      Members.push_back(Rest);
+      break;
     case MRICommand::Create:
       Create = true;
       if (!ArchiveName.empty())