readelf: use fseeko64 or fseeko if possible
authorBrett Werling <bwerl.dev@gmail.com>
Thu, 17 Nov 2022 14:34:19 +0000 (08:34 -0600)
committerAlan Modra <amodra@gmail.com>
Mon, 21 Nov 2022 21:49:27 +0000 (08:19 +1030)
commitd82e33deccc23f7198e20177f6164323201064eb
tree979b58357143f48ba3e5bc247dca3e3bbe82eeb9
parent38c917d808fdb570ddb1215ccf8233a10484ba91
readelf: use fseeko64 or fseeko if possible

Changes readelf to make use first of fseeko64 and then fseeko,
depending on which of those is available. If neither is available,
reverts to the previous behavior of using fseek.

This is necessary when building readelf for LLP64 systems, where a
long will only be 32 bits wide. If the elf file in question is >= 2 GiB,
that is greater than the max long value and therefore fseek will fail
indicating that the offset is negative. On such systems, making use of
fseeko64 or fseeko will result in the ability so seek past the 2 GiB
max long boundary.

Note that large archive handling in readelf remains to be fixed.
binutils/config.in
binutils/configure
binutils/readelf.c