[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).

llvm-svn: 268894
This commit is contained in:
Frederic Riss 2016-05-09 06:01:12 +00:00
parent f0db9d6006
commit ca05ea2936
4 changed files with 18 additions and 1 deletions

View File

@ -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"

Binary file not shown.

Binary file not shown.

View File

@ -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() {