X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FObject%2FMachOObjectFile.cpp;h=a930117019e7edbfc87228b6f83a373cbe17a5ce;hb=bb96dfcf4f58ae7152f4be92254a0bb1c0995e6d;hp=f48bb8a7fe0925a55e56e3f145b74e95de7b5bd8;hpb=6152f7d59615de9e4fa869bdc89570560c34bddb;p=oota-llvm.git diff --git a/lib/Object/MachOObjectFile.cpp b/lib/Object/MachOObjectFile.cpp index f48bb8a7fe0..a930117019e 100644 --- a/lib/Object/MachOObjectFile.cpp +++ b/lib/Object/MachOObjectFile.cpp @@ -591,43 +591,6 @@ error_code MachOObjectFile::getSymbolType(DataRefImpl Symb, return object_error::success; } -error_code MachOObjectFile::getSymbolNMTypeChar(DataRefImpl Symb, - char &Res) const { - nlist_base Entry = getSymbolTableEntryBase(this, Symb); - uint8_t NType = Entry.n_type; - - char Char; - switch (NType & MachO::N_TYPE) { - case MachO::N_UNDF: - Char = 'u'; - break; - case MachO::N_ABS: - Char = 's'; - break; - case MachO::N_SECT: { - section_iterator Sec = end_sections(); - getSymbolSection(Symb, Sec); - DataRefImpl Ref = Sec->getRawDataRefImpl(); - StringRef SectionName; - getSectionName(Ref, SectionName); - StringRef SegmentName = getSectionFinalSegmentName(Ref); - if (SegmentName == "__TEXT" && SectionName == "__text") - Char = 't'; - else - Char = 's'; - } - break; - default: - Char = '?'; - break; - } - - if (NType & (MachO::N_EXT | MachO::N_PEXT)) - Char = toupper(static_cast(Char)); - Res = Char; - return object_error::success; -} - error_code MachOObjectFile::getSymbolFlags(DataRefImpl DRI, uint32_t &Result) const { nlist_base Entry = getSymbolTableEntryBase(this, DRI); @@ -936,7 +899,7 @@ MachOObjectFile::getRelocationTypeName(DataRefImpl Rel, "GENERIC_RELOC_LOCAL_SECTDIFF", "GENERIC_RELOC_TLV" }; - if (RType > 6) + if (RType > 5) res = "Unknown"; else res = Table[RType]; @@ -999,7 +962,10 @@ MachOObjectFile::getRelocationTypeName(DataRefImpl Rel, "PPC_RELOC_LO14_SECTDIFF", "PPC_RELOC_LOCAL_SECTDIFF" }; - res = Table[RType]; + if (RType > 15) + res = "Unknown"; + else + res = Table[RType]; break; } case Triple::UnknownArch: @@ -1616,25 +1582,25 @@ void MachOObjectFile::ReadULEB128s(uint64_t Index, } } -ObjectFile *ObjectFile::createMachOObjectFile(MemoryBuffer *Buffer) { +ErrorOr ObjectFile::createMachOObjectFile(MemoryBuffer *Buffer) { StringRef Magic = Buffer->getBuffer().slice(0, 4); - error_code ec; - OwningPtr Ret; + error_code EC; + OwningPtr Ret; if (Magic == "\xFE\xED\xFA\xCE") - Ret.reset(new MachOObjectFile(Buffer, false, false, ec)); + Ret.reset(new MachOObjectFile(Buffer, false, false, EC)); else if (Magic == "\xCE\xFA\xED\xFE") - Ret.reset(new MachOObjectFile(Buffer, true, false, ec)); + Ret.reset(new MachOObjectFile(Buffer, true, false, EC)); else if (Magic == "\xFE\xED\xFA\xCF") - Ret.reset(new MachOObjectFile(Buffer, false, true, ec)); + Ret.reset(new MachOObjectFile(Buffer, false, true, EC)); else if (Magic == "\xCF\xFA\xED\xFE") - Ret.reset(new MachOObjectFile(Buffer, true, true, ec)); + Ret.reset(new MachOObjectFile(Buffer, true, true, EC)); else { delete Buffer; - return NULL; + return object_error::parse_failed; } - if (ec) - return NULL; + if (EC) + return EC; return Ret.take(); }