From 07cc5a8df9edd94de7390607b0664cf83820089a Mon Sep 17 00:00:00 2001 From: David Carlier Date: Mon, 10 Sep 2018 05:00:43 +0000 Subject: [Xray] tooling allow MachO format support Getting writable xray __DATA sections from MachO as well. Reviewers: dberris Reviewed By: dberris Differential Revision: https://reviews.llvm.org/D51758 llvm-svn: 341772 --- llvm/lib/XRay/InstrumentationMap.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'llvm/lib/XRay/InstrumentationMap.cpp') diff --git a/llvm/lib/XRay/InstrumentationMap.cpp b/llvm/lib/XRay/InstrumentationMap.cpp index a7d6600b0d8..84317708d3f 100644 --- a/llvm/lib/XRay/InstrumentationMap.cpp +++ b/llvm/lib/XRay/InstrumentationMap.cpp @@ -47,18 +47,18 @@ Optional InstrumentationMap::getFunctionAddr(int32_t FuncId) const { } static Error -loadELF64(StringRef Filename, object::OwningBinary &ObjFile, +loadObj(StringRef Filename, object::OwningBinary &ObjFile, InstrumentationMap::SledContainer &Sleds, InstrumentationMap::FunctionAddressMap &FunctionAddresses, InstrumentationMap::FunctionAddressReverseMap &FunctionIds) { InstrumentationMap Map; // Find the section named "xray_instr_map". - if (!ObjFile.getBinary()->isELF() || + if ((!ObjFile.getBinary()->isELF() && !ObjFile.getBinary()->isMachO()) || !(ObjFile.getBinary()->getArch() == Triple::x86_64 || ObjFile.getBinary()->getArch() == Triple::ppc64le)) return make_error( - "File format not supported (only does ELF little endian 64-bit).", + "File format not supported (only does ELF and Mach-O little endian 64-bit).", std::make_error_code(std::errc::not_supported)); StringRef Contents = ""; @@ -191,7 +191,7 @@ llvm::xray::loadInstrumentationMap(StringRef Filename) { if (auto E = loadYAML(Fd, FileSize, Filename, Map.Sleds, Map.FunctionAddresses, Map.FunctionIds)) return std::move(E); - } else if (auto E = loadELF64(Filename, *ObjectFileOrError, Map.Sleds, + } else if (auto E = loadObj(Filename, *ObjectFileOrError, Map.Sleds, Map.FunctionAddresses, Map.FunctionIds)) { return std::move(E); } -- cgit v1.2.3