Rename library_offset to library_fd_offset

 replace lseek() and use pread() instead
 add test for library_fd_offset > file_size case

Bug: 17762003

(cherry picked from commit a6c1279098f24a675d0df74ce1946f5d534b425e)

Change-Id: Ie117c745081ee33d07db5341115ff6c8e98b0dec
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index e0d6d0e..4b1c0ca 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -142,18 +142,12 @@
 }
 
 bool ElfReader::ReadElfHeader() {
-  off64_t actual_offset = lseek64(fd_, file_offset_, SEEK_SET);
-
-  if (actual_offset != file_offset_) {
-    DL_ERR("seek to %" PRId64 " failed: %s", file_offset_, strerror(errno));
-    return false;
-  }
-
-  ssize_t rc = TEMP_FAILURE_RETRY(read(fd_, &header_, sizeof(header_)));
+  ssize_t rc = TEMP_FAILURE_RETRY(pread64(fd_, &header_, sizeof(header_), file_offset_));
   if (rc < 0) {
     DL_ERR("can't read file \"%s\": %s", name_, strerror(errno));
     return false;
   }
+
   if (rc != sizeof(header_)) {
     DL_ERR("\"%s\" is too small to be an ELF executable: only found %zd bytes", name_,
            static_cast<size_t>(rc));