summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/tools/dsymutil/ARM/thumb.c13
-rwxr-xr-xllvm/test/tools/dsymutil/Inputs/thumb.armv7mbin0 -> 4288 bytes
-rw-r--r--llvm/test/tools/dsymutil/Inputs/thumb.obin0 -> 1224 bytes
-rw-r--r--llvm/tools/dsymutil/MachODebugMapParser.cpp6
4 files changed, 18 insertions, 1 deletions
diff --git a/llvm/test/tools/dsymutil/ARM/thumb.c b/llvm/test/tools/dsymutil/ARM/thumb.c
new file mode 100644
index 00000000000..4589653305a
--- /dev/null
+++ b/llvm/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/llvm/test/tools/dsymutil/Inputs/thumb.armv7m b/llvm/test/tools/dsymutil/Inputs/thumb.armv7m
new file mode 100755
index 00000000000..785ab997bc4
--- /dev/null
+++ b/llvm/test/tools/dsymutil/Inputs/thumb.armv7m
Binary files differ
diff --git a/llvm/test/tools/dsymutil/Inputs/thumb.o b/llvm/test/tools/dsymutil/Inputs/thumb.o
new file mode 100644
index 00000000000..8bac2a1e484
--- /dev/null
+++ b/llvm/test/tools/dsymutil/Inputs/thumb.o
Binary files differ
diff --git a/llvm/tools/dsymutil/MachODebugMapParser.cpp b/llvm/tools/dsymutil/MachODebugMapParser.cpp
index 476ac80fba2..22215200ed5 100644
--- a/llvm/tools/dsymutil/MachODebugMapParser.cpp
+++ b/llvm/tools/dsymutil/MachODebugMapParser.cpp
@@ -294,7 +294,11 @@ static bool shouldLinkArch(SmallVectorImpl<StringRef> &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() {
OpenPOWER on IntegriCloud