summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-06-30 03:41:26 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-06-30 03:41:26 +0000
commit0ad71d982c8b1023d6f5fc1c516c1e0900c75978 (patch)
treec20e71b0952121821fd287a05d8f9491fef58eb7
parentf69ac42ac401aa0b0f17d47eea9531ec0d566e98 (diff)
downloadbcm5719-llvm-0ad71d982c8b1023d6f5fc1c516c1e0900c75978.tar.gz
bcm5719-llvm-0ad71d982c8b1023d6f5fc1c516c1e0900c75978.zip
Move function to the only file that uses it.
llvm-svn: 241040
-rw-r--r--llvm/include/llvm/Object/MachO.h1
-rw-r--r--llvm/include/llvm/Object/ObjectFile.h10
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp24
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp37
4 files changed, 35 insertions, 37 deletions
diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h
index cb1626e0ea5..50baeb79a0b 100644
--- a/llvm/include/llvm/Object/MachO.h
+++ b/llvm/include/llvm/Object/MachO.h
@@ -244,7 +244,6 @@ public:
std::error_code
getRelocationTypeName(DataRefImpl Rel,
SmallVectorImpl<char> &Result) const override;
- bool getRelocationHidden(DataRefImpl Rel) const override;
uint8_t getRelocationLength(DataRefImpl Rel) const;
// MachO specific.
diff --git a/llvm/include/llvm/Object/ObjectFile.h b/llvm/include/llvm/Object/ObjectFile.h
index 59400c996b3..7056471d251 100644
--- a/llvm/include/llvm/Object/ObjectFile.h
+++ b/llvm/include/llvm/Object/ObjectFile.h
@@ -55,11 +55,6 @@ public:
symbol_iterator getSymbol() const;
uint64_t getType() const;
- /// @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.
- bool getHidden() const;
-
/// @brief Get a string that represents the type of this relocation.
///
/// This is for display purposes only.
@@ -246,7 +241,6 @@ protected:
virtual std::error_code
getRelocationTypeName(DataRefImpl Rel,
SmallVectorImpl<char> &Result) const = 0;
- virtual bool getRelocationHidden(DataRefImpl Rel) const { return false; }
public:
uint64_t getCommonSymbolSize(DataRefImpl Symb) const {
@@ -468,10 +462,6 @@ RelocationRef::getTypeName(SmallVectorImpl<char> &Result) const {
return OwningObject->getRelocationTypeName(RelocationPimpl, Result);
}
-inline bool RelocationRef::getHidden() const {
- return OwningObject->getRelocationHidden(RelocationPimpl);
-}
-
inline DataRefImpl RelocationRef::getRawDataRefImpl() const {
return RelocationPimpl;
}
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index 14f74c70a66..9763fabca82 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -770,30 +770,6 @@ MachOObjectFile::getRelocationTypeName(DataRefImpl Rel,
return std::error_code();
}
-bool MachOObjectFile::getRelocationHidden(DataRefImpl Rel) const {
- unsigned Arch = getArch();
- uint64_t Type = getRelocationType(Rel);
-
- // 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)
- 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.
- if (Type == MachO::X86_64_RELOC_UNSIGNED && Rel.d.a > 0) {
- DataRefImpl RelPrev = Rel;
- RelPrev.d.a--;
- uint64_t PrevType = getRelocationType(RelPrev);
- if (PrevType == MachO::X86_64_RELOC_SUBTRACTOR)
- return true;
- }
- }
-
- return false;
-}
-
uint8_t MachOObjectFile::getRelocationLength(DataRefImpl Rel) const {
MachO::any_relocation_info RE = getRelocation(Rel);
return getAnyRelocationLength(RE);
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 08a361f7b54..b17cb0b47ea 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -692,6 +692,39 @@ static std::error_code getRelocationValueString(const RelocationRef &Rel,
return getRelocationValueString(MachO, Rel, Result);
}
+/// @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.
+static bool getHidden(RelocationRef RelRef) {
+ const ObjectFile *Obj = RelRef.getObject();
+ auto *MachO = dyn_cast<MachOObjectFile>(Obj);
+ if (!MachO)
+ return false;
+
+ unsigned Arch = MachO->getArch();
+ DataRefImpl Rel = RelRef.getRawDataRefImpl();
+ uint64_t Type = MachO->getRelocationType(Rel);
+
+ // 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)
+ 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.
+ if (Type == MachO::X86_64_RELOC_UNSIGNED && Rel.d.a > 0) {
+ DataRefImpl RelPrev = Rel;
+ RelPrev.d.a--;
+ uint64_t PrevType = MachO->getRelocationType(RelPrev);
+ if (PrevType == MachO::X86_64_RELOC_SUBTRACTOR)
+ return true;
+ }
+ }
+
+ return false;
+}
+
static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
const Target *TheTarget = getTarget(Obj);
// getTarget() will have already issued a diagnostic if necessary, so
@@ -888,7 +921,7 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
// Print relocation for instruction.
while (rel_cur != rel_end) {
- bool hidden = rel_cur->getHidden();
+ bool hidden = getHidden(*rel_cur);
uint64_t addr = rel_cur->getOffset();
SmallString<16> name;
SmallString<32> val;
@@ -928,7 +961,7 @@ void llvm::PrintRelocations(const ObjectFile *Obj) {
continue;
outs() << "RELOCATION RECORDS FOR [" << secname << "]:\n";
for (const RelocationRef &Reloc : Section.relocations()) {
- bool hidden = Reloc.getHidden();
+ bool hidden = getHidden(Reloc);
uint64_t address = Reloc.getOffset();
SmallString<32> relocname;
SmallString<32> valuestr;
OpenPOWER on IntegriCloud