diff options
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/config.in | 6 | ||||
-rwxr-xr-x | binutils/configure | 2 | ||||
-rw-r--r-- | binutils/readelf.c | 30 |
3 files changed, 26 insertions, 12 deletions
diff --git a/binutils/config.in b/binutils/config.in index 4d22a80..91fe00a 100644 --- a/binutils/config.in +++ b/binutils/config.in @@ -67,6 +67,12 @@ /* Define to 1 if you have the <fcntl.h> header file. */ #undef HAVE_FCNTL_H +/* Define to 1 if you have the `fseeko' function. */ +#undef HAVE_FSEEKO + +/* Define to 1 if you have the `fseeko64' function. */ +#undef HAVE_FSEEKO64 + /* Define to 1 if you have the `getc_unlocked' function. */ #undef HAVE_GETC_UNLOCKED diff --git a/binutils/configure b/binutils/configure index 6176d69..46519a3 100755 --- a/binutils/configure +++ b/binutils/configure @@ -13155,7 +13155,7 @@ $as_echo "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt -for ac_func in getc_unlocked mkdtemp mkstemp utimensat utimes +for ac_func in getc_unlocked mkdtemp mkstemp utimensat utimes fseeko fseeko64 do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/binutils/readelf.c b/binutils/readelf.c index 6b2cbbc..044022e 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -178,6 +178,14 @@ #define offsetof(TYPE, MEMBER) ((size_t) &(((TYPE *) 0)->MEMBER)) #endif +#if defined (HAVE_FSEEKO64) +#define FSEEK_FUNC fseeko64 +#elif defined (HAVE_FSEEKO) +#define FSEEK_FUNC fseeko +#else +#define FSEEK_FUNC fseek +#endif + typedef struct elf_section_list { Elf_Internal_Shdr * hdr; @@ -482,7 +490,7 @@ get_data (void *var, return NULL; } - if (fseek (filedata->handle, filedata->archive_file_offset + offset, + if (FSEEK_FUNC (filedata->handle, filedata->archive_file_offset + offset, SEEK_SET)) { if (reason) @@ -6283,7 +6291,7 @@ the .dynamic section is not the same as the dynamic segment\n")); if (segment->p_offset >= filedata->file_size || segment->p_filesz > filedata->file_size - segment->p_offset || segment->p_filesz - 1 >= (size_t) -2 - || fseek (filedata->handle, + || FSEEK_FUNC (filedata->handle, filedata->archive_file_offset + (long) segment->p_offset, SEEK_SET)) error (_("Unable to find program interpreter name\n")); @@ -11056,7 +11064,7 @@ get_num_dynamic_syms (Filedata * filedata) && filedata->file_header.e_ident[EI_CLASS] == ELFCLASS64) hash_ent_size = 8; - if (fseek (filedata->handle, + if (FSEEK_FUNC (filedata->handle, (filedata->archive_file_offset + offset_from_vma (filedata, filedata->dynamic_info[DT_HASH], sizeof nb + sizeof nc)), @@ -11109,7 +11117,7 @@ get_num_dynamic_syms (Filedata * filedata) uint64_t buckets_vma; unsigned long hn; - if (fseek (filedata->handle, + if (FSEEK_FUNC (filedata->handle, (filedata->archive_file_offset + offset_from_vma (filedata, filedata->dynamic_info_DT_GNU_HASH, @@ -11135,7 +11143,7 @@ get_num_dynamic_syms (Filedata * filedata) else buckets_vma += bitmaskwords * 8; - if (fseek (filedata->handle, + if (FSEEK_FUNC (filedata->handle, (filedata->archive_file_offset + offset_from_vma (filedata, buckets_vma, 4)), SEEK_SET)) @@ -11165,7 +11173,7 @@ get_num_dynamic_syms (Filedata * filedata) maxchain -= filedata->gnusymidx; - if (fseek (filedata->handle, + if (FSEEK_FUNC (filedata->handle, (filedata->archive_file_offset + offset_from_vma (filedata, buckets_vma + 4 * (filedata->ngnubuckets @@ -11192,7 +11200,7 @@ get_num_dynamic_syms (Filedata * filedata) } while ((byte_get (nb, 4) & 1) == 0); - if (fseek (filedata->handle, + if (FSEEK_FUNC (filedata->handle, (filedata->archive_file_offset + offset_from_vma (filedata, (buckets_vma + 4 * filedata->ngnubuckets), @@ -11211,7 +11219,7 @@ get_num_dynamic_syms (Filedata * filedata) if (filedata->dynamic_info_DT_MIPS_XHASH) { - if (fseek (filedata->handle, + if (FSEEK_FUNC (filedata->handle, (filedata->archive_file_offset + offset_from_vma (filedata, (buckets_vma + 4 * (filedata->ngnubuckets @@ -22610,7 +22618,7 @@ process_archive (Filedata * filedata, bool is_thin_archive) ret = false; } - if (fseek (filedata->handle, current_pos, SEEK_SET) != 0) + if (FSEEK_FUNC (filedata->handle, current_pos, SEEK_SET) != 0) { error (_("%s: failed to seek back to start of object files " "in the archive\n"), @@ -22637,7 +22645,7 @@ process_archive (Filedata * filedata, bool is_thin_archive) char * qualified_name; /* Read the next archive header. */ - if (fseek (filedata->handle, arch.next_arhdr_offset, SEEK_SET) != 0) + if (FSEEK_FUNC (filedata->handle, arch.next_arhdr_offset, SEEK_SET) != 0) { error (_("%s: failed to seek to next archive header\n"), arch.file_name); @@ -22747,7 +22755,7 @@ process_archive (Filedata * filedata, bool is_thin_archive) /* The nested archive file will have been opened and setup by get_archive_member_name. */ - if (fseek (nested_arch.file, filedata->archive_file_offset, + if (FSEEK_FUNC (nested_arch.file, filedata->archive_file_offset, SEEK_SET) != 0) { error (_("%s: failed to seek to archive member.\n"), |