From de8332257b9c170c5ca5ed5063e43278bf86d2dd Mon Sep 17 00:00:00 2001 From: Kuba Brecka Date: Thu, 12 Nov 2015 09:40:29 +0000 Subject: [Object, MachO] Mark symbols from DATA and BSS sections as ST_Data In `MachOObjectFile::getSymbolType` we currently always return `SymbolRef::ST_Function` for symbols from any section. In order for llvm-symbolizer to correctly symbolize Mach-O globals, symbols from data and BSS sections should return `SymbolRef::ST_Data`. Differential Revision: http://reviews.llvm.org/D14576 llvm-svn: 252867 --- llvm/lib/Object/MachOObjectFile.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'llvm/lib/Object/MachOObjectFile.cpp') diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 4f9ccedd0c6..e34c86542ab 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -401,6 +401,9 @@ SymbolRef::Type MachOObjectFile::getSymbolType(DataRefImpl Symb) const { case MachO::N_UNDF : return SymbolRef::ST_Unknown; case MachO::N_SECT : + section_iterator Sec = *getSymbolSection(Symb); + if (Sec->isData() || Sec->isBSS()) + return SymbolRef::ST_Data; return SymbolRef::ST_Function; } return SymbolRef::ST_Other; -- cgit v1.2.3