From 2afb0e4d2c8b654d819372b1506cafe772a60166 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 21 Oct 2014 14:46:17 +0000 Subject: [PATCH] Add support for addmod to mri scripts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220294 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Object/mri-addmod.test | 18 ++++++++++++++++++ tools/llvm-ar/llvm-ar.cpp | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test/Object/mri-addmod.test diff --git a/test/Object/mri-addmod.test b/test/Object/mri-addmod.test new file mode 100644 index 00000000000..b8a41debc1d --- /dev/null +++ b/test/Object/mri-addmod.test @@ -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 diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index fa0842992ec..785cabd08ff 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -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(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()) -- 2.34.1