std::error_code
getRelocationTypeName(DataRefImpl Rel,
SmallVectorImpl<char> &Result) const override;
- std::error_code getRelocationHidden(DataRefImpl Rel,
- bool &Result) const override;
+ bool getRelocationHidden(DataRefImpl Rel) const override;
uint8_t getRelocationLength(DataRefImpl Rel) const;
// MachO specific.
/// @brief Indicates whether this relocation should hidden when listing
/// relocations, usually because it is the trailing part of a multipart
/// relocation that will be printed as part of the leading relocation.
- std::error_code getHidden(bool &Result) const;
+ bool getHidden() const;
/// @brief Get a string that represents the type of this relocation.
///
virtual std::error_code
getRelocationTypeName(DataRefImpl Rel,
SmallVectorImpl<char> &Result) const = 0;
- virtual std::error_code getRelocationHidden(DataRefImpl Rel,
- bool &Result) const {
- Result = false;
- return std::error_code();
- }
+ virtual bool getRelocationHidden(DataRefImpl Rel) const { return false; }
public:
uint64_t getCommonSymbolSize(DataRefImpl Symb) const {
return OwningObject->getRelocationTypeName(RelocationPimpl, Result);
}
-inline std::error_code RelocationRef::getHidden(bool &Result) const {
- return OwningObject->getRelocationHidden(RelocationPimpl, Result);
+inline bool RelocationRef::getHidden() const {
+ return OwningObject->getRelocationHidden(RelocationPimpl);
}
inline DataRefImpl RelocationRef::getRawDataRefImpl() const {
return std::error_code();
}
-std::error_code MachOObjectFile::getRelocationHidden(DataRefImpl Rel,
- bool &Result) const {
+bool MachOObjectFile::getRelocationHidden(DataRefImpl Rel) const {
unsigned Arch = getArch();
uint64_t Type = getRelocationType(Rel);
- Result = false;
-
// On arches that use the generic relocations, GENERIC_RELOC_PAIR
// is always hidden.
if (Arch == Triple::x86 || Arch == Triple::arm || Arch == Triple::ppc) {
- if (Type == MachO::GENERIC_RELOC_PAIR) Result = true;
+ if (Type == MachO::GENERIC_RELOC_PAIR)
+ return true;
} else if (Arch == Triple::x86_64) {
// On x86_64, X86_64_RELOC_UNSIGNED is hidden only when it follows
// an X86_64_RELOC_SUBTRACTOR.
RelPrev.d.a--;
uint64_t PrevType = getRelocationType(RelPrev);
if (PrevType == MachO::X86_64_RELOC_SUBTRACTOR)
- Result = true;
+ return true;
}
}
- return std::error_code();
+ return false;
}
uint8_t MachOObjectFile::getRelocationLength(DataRefImpl Rel) const {
// Print relocation for instruction.
while (rel_cur != rel_end) {
- bool hidden = false;
+ bool hidden = rel_cur->getHidden();
uint64_t addr = rel_cur->getOffset();
SmallString<16> name;
SmallString<32> val;
// If this relocation is hidden, skip it.
- if (error(rel_cur->getHidden(hidden))) goto skip_print_rel;
if (hidden) goto skip_print_rel;
// Stop when rel_cur's address is past the current instruction.
continue;
outs() << "RELOCATION RECORDS FOR [" << secname << "]:\n";
for (const RelocationRef &Reloc : Section.relocations()) {
- bool hidden;
+ bool hidden = Reloc.getHidden();
uint64_t address = Reloc.getOffset();
SmallString<32> relocname;
SmallString<32> valuestr;
- if (error(Reloc.getHidden(hidden)))
- continue;
if (hidden)
continue;
if (error(Reloc.getTypeName(relocname)))