From c0fdf88ac7cba96db948838325209dd9ee968166 Mon Sep 17 00:00:00 2001 From: Frederic Riss Date: Mon, 9 May 2016 06:01:12 +0000 Subject: [PATCH] [dsymutil] Fix -arch option for thumb variants. r267249 removed the dual ARM/Thumb interface from MachOObjectFile, simplifying llvm-dsymutil's code. This unfortunately also regressed llvm-dsymutil's ability to select thumb slices, because the simplified code was also dealing with the discrepency between the slice arch (eg. armv7m) and the triple arch name (eg. thumbv7m). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268894 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/dsymutil/ARM/thumb.c | 13 +++++++++++++ test/tools/dsymutil/Inputs/thumb.armv7m | Bin 0 -> 4288 bytes test/tools/dsymutil/Inputs/thumb.o | Bin 0 -> 1224 bytes tools/dsymutil/MachODebugMapParser.cpp | 6 +++++- 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 test/tools/dsymutil/ARM/thumb.c create mode 100755 test/tools/dsymutil/Inputs/thumb.armv7m create mode 100644 test/tools/dsymutil/Inputs/thumb.o diff --git a/test/tools/dsymutil/ARM/thumb.c b/test/tools/dsymutil/ARM/thumb.c new file mode 100644 index 00000000000..4589653305a --- /dev/null +++ b/test/tools/dsymutil/ARM/thumb.c @@ -0,0 +1,13 @@ +// RUN: llvm-dsymutil -f -oso-prepend-path=%p/.. %p/../Inputs/thumb.armv7m -o - | llvm-dwarfdump - | FileCheck %s +// RUN: llvm-dsymutil -arch armv7m -f -oso-prepend-path=%p/.. %p/../Inputs/thumb.armv7m -o - | llvm-dwarfdump - | FileCheck %s + +/* Compile with: + clang -c thumb.c -arch armv7m -g + clang thumb.o -o thumb.armv7m -arch armv7m -nostdlib -static -Wl,-e,_start +*/ + +void start() { +} + +CHECK: DW_AT_name{{.*}}"thumb.c" +CHECK: DW_AT_name{{.*}}"start" diff --git a/test/tools/dsymutil/Inputs/thumb.armv7m b/test/tools/dsymutil/Inputs/thumb.armv7m new file mode 100755 index 0000000000000000000000000000000000000000..785ab997bc4a8f567dfa8f02b47e0e34c4fd771b GIT binary patch literal 4288 zcmX^2>+L@t1_lOxAZ7w$b|7wGWMBXyFtz~F@$mtU?yga;LHulZUwRAJDNdJz&)=3=J?{AaRJB zeLVfVU0pn3_A3A-p!OdCGC}H)%>emb0*FCsxPVjzkoEx5(m)InPY4RxT6Dtv_S}e# z2dZmV9?}AefsBIzkUv0Hfy@+y36e?w2l{gqjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mk0QEwkz#Y`@O@SK7jl>oPveWn(8I+X`!a;pnJs<(%Qj1_xK=S}>YC;kK literal 0 HcmV?d00001 diff --git a/test/tools/dsymutil/Inputs/thumb.o b/test/tools/dsymutil/Inputs/thumb.o new file mode 100644 index 0000000000000000000000000000000000000000..8bac2a1e484c40a20367cf2905a8abba65e842d9 GIT binary patch literal 1224 zcma)6-AWrl6rRbCiixXHXe=$V7j4xRqga2E_QDqY>qTi1q282XH*R8ZvkChX6omF6 zd;~9hReb=Tp!5X_1+Ts9m4f=6$t2O;Ky%=mGv~}X-#K%3l3!PsH)+P$Fu;L0ut|&F zwExDi?;MfBgxFr&+3wi1BU;L*nr%t2@2$NMyOtT0h3C7{ zCB*8N_gm|&W10UER*8CjDD9409CocJBf=b?RNiS19ENGSR)eu_952Ds3rEE%)u?2c z;}E_A@JID=oM_GmuEEC`}`fGo^)p-JrD(u{0LxmqUC3t63Wx#zuf!NCM>iNJ|gF zrgANzL@FI)6IeOF)`qZhHA3FLmW)rzGT9^_9E-&e2InMYp>vrHP49{9S4vaNFsCmC J!9N5IiEaP@ literal 0 HcmV?d00001 diff --git a/tools/dsymutil/MachODebugMapParser.cpp b/tools/dsymutil/MachODebugMapParser.cpp index 476ac80fba2..22215200ed5 100644 --- a/tools/dsymutil/MachODebugMapParser.cpp +++ b/tools/dsymutil/MachODebugMapParser.cpp @@ -294,7 +294,11 @@ static bool shouldLinkArch(SmallVectorImpl &Archs, StringRef Arch) { std::find(Archs.begin(), Archs.end(), "arm") != Archs.end()) return true; - return std::find(Archs.begin(), Archs.end(), Arch) != Archs.end(); + SmallString<16> ArchName = Arch; + if (Arch.startswith("thumb")) + ArchName = ("arm" + Arch.substr(5)).str(); + + return std::find(Archs.begin(), Archs.end(), ArchName) != Archs.end(); } bool MachODebugMapParser::dumpStab() { -- 2.50.1