Index: third_party/android_crazy_linker/src/src/crazy_linker_shared_library.cpp |
diff --git a/third_party/android_crazy_linker/src/src/crazy_linker_shared_library.cpp b/third_party/android_crazy_linker/src/src/crazy_linker_shared_library.cpp |
index f45824cb9ad1e529f805426b84a17d799ba6e4b7..b982a7d63cf65a9335e0919b59897e34ccfe29a9 100644 |
--- a/third_party/android_crazy_linker/src/src/crazy_linker_shared_library.cpp |
+++ b/third_party/android_crazy_linker/src/src/crazy_linker_shared_library.cpp |
@@ -58,18 +58,6 @@ |
#define DT_PREINIT_ARRAYSZ 33 |
#endif |
-#ifndef DT_LOOS |
-#define DT_LOOS 0x6000000d |
-#endif |
- |
-// Extension dynamic tags for packed relocations. |
-#if defined(__arm__) || defined(__aarch64__) |
- |
-#define DT_ANDROID_REL_OFFSET (DT_LOOS) |
-#define DT_ANDROID_REL_SIZE (DT_LOOS + 1) |
- |
-#endif // __arm__ || __aarch64__ |
- |
namespace crazy { |
namespace { |
@@ -194,57 +182,6 @@ class SharedLibraryResolver : public ElfRelocations::SymbolResolver { |
Vector<LibraryView*>* dependencies_; |
}; |
-#if defined(__arm__) || defined(__aarch64__) |
- |
-// Helper class to provide a simple scoped buffer. ScopedPtr is not |
-// usable here because it calls delete, not delete []. |
-class ScopedBuffer { |
- public: |
- explicit ScopedBuffer(size_t bytes) : buffer_(new uint8_t[bytes]) { } |
- ~ScopedBuffer() { delete [] buffer_; } |
- |
- uint8_t* Get() { return buffer_; } |
- |
- uint8_t* Release() { |
- uint8_t* ptr = buffer_; |
- buffer_ = NULL; |
- return ptr; |
- } |
- |
- private: |
- uint8_t* buffer_; |
-}; |
- |
-// Read an .android.rel.dyn packed relocations section. |
-// Returns an allocated buffer holding the data, or NULL on error. |
-uint8_t* ReadPackedRelocations(const char* full_path, |
- off_t offset, |
- size_t bytes, |
- Error* error) { |
- FileDescriptor fd; |
- if (!fd.OpenReadOnly(full_path)) { |
- error->Format("Error opening file '%s'", full_path); |
- return NULL; |
- } |
- if (fd.SeekTo(offset) == -1) { |
- error->Format("Error seeking to %d in file '%s'", offset, full_path); |
- return NULL; |
- } |
- |
- ScopedBuffer buffer(bytes); |
- const ssize_t bytes_read = fd.Read(buffer.Get(), bytes); |
- if (static_cast<size_t>(bytes_read) != bytes) { |
- error->Format("Error reading %d bytes from file '%s'", bytes, full_path); |
- return NULL; |
- } |
- fd.Close(); |
- |
- uint8_t* packed_data = buffer.Release(); |
- return packed_data; |
-} |
- |
-#endif // __arm__ || __aarch64__ |
- |
} // namespace |
SharedLibrary::SharedLibrary() { ::memset(this, 0, sizeof(*this)); } |
@@ -253,10 +190,6 @@ SharedLibrary::~SharedLibrary() { |
// Ensure the library is unmapped on destruction. |
if (view_.load_address()) |
munmap(reinterpret_cast<void*>(view_.load_address()), view_.load_size()); |
- |
-#if defined(__arm__) || defined(__aarch64__) |
- delete [] packed_relocations_; |
-#endif |
} |
bool SharedLibrary::Load(const char* full_path, |
@@ -312,11 +245,6 @@ bool SharedLibrary::Load(const char* full_path, |
phdr(), phdr_count(), load_bias(), &arm_exidx_, &arm_exidx_count_); |
#endif |
-#if defined(__arm__) || defined(__aarch64__) |
- off_t packed_relocations_offset = 0; |
- size_t packed_relocations_size = 0; |
-#endif |
- |
LOG("%s: Parsing dynamic table for %s\n", __FUNCTION__, base_name_); |
ElfView::DynamicIterator dyn(&view_); |
for (; dyn.HasNext(); dyn.GetNext()) { |
@@ -375,16 +303,6 @@ bool SharedLibrary::Load(const char* full_path, |
if (dyn_value & DF_SYMBOLIC) |
has_DT_SYMBOLIC_ = true; |
break; |
-#if defined(__arm__) || defined(__aarch64__) |
- case DT_ANDROID_REL_OFFSET: |
- packed_relocations_offset = dyn.GetOffset(); |
- LOG(" DT_ANDROID_REL_OFFSET addr=%p\n", packed_relocations_offset); |
- break; |
- case DT_ANDROID_REL_SIZE: |
- packed_relocations_size = dyn.GetValue(); |
- LOG(" DT_ANDROID_REL_SIZE=%d\n", packed_relocations_size); |
- break; |
-#endif |
#if defined(__mips__) |
case DT_MIPS_RLD_MAP: |
*dyn.GetValuePointer() = |
@@ -396,32 +314,6 @@ bool SharedLibrary::Load(const char* full_path, |
} |
} |
-#if defined(__arm__) || defined(__aarch64__) |
- // If packed relocations are present in the target library, read the |
- // section data and save it in packed_relocations_. |
- if (packed_relocations_offset && packed_relocations_size) { |
- LOG("%s: Packed relocations found at offset %d, %d bytes\n", |
- __FUNCTION__, |
- packed_relocations_offset, |
- packed_relocations_size); |
- |
- packed_relocations_ = |
- ReadPackedRelocations(full_path, |
- packed_relocations_offset + file_offset, |
- packed_relocations_size, |
- error); |
- if (!packed_relocations_) |
- return false; |
- |
- LOG("%s: Packed relocations stored at %p\n", |
- __FUNCTION__, |
- packed_relocations_); |
- |
- // Add packed relocations to the view. |
- view_.RegisterPackedRelocations(packed_relocations_); |
- } |
-#endif |
- |
LOG("%s: Load complete for %s\n", __FUNCTION__, base_name_); |
return true; |
} |