diff options
author | Eli Zaretskii <eliz@gnu.org> | 2018-01-21 05:01:31 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-01-21 05:01:31 +0000 |
commit | c6bff8ada6297866778c4ee5c49a59bf08a3b64a (patch) | |
tree | a7e887fdac05c5c1f138e843dc743f61a507cf11 /libiberty/simple-object-xcoff.c | |
parent | aa9ea77f50a69d4b0d9e42ec45935370eee058a3 (diff) | |
download | gcc-c6bff8ada6297866778c4ee5c49a59bf08a3b64a.tar.gz |
simple-object-xcoff.c (simple_object_xcoff_find_sections): Use ulong_type to avoid warning about 32-bit shift.
* simple-object-xcoff.c (simple_object_xcoff_find_sections): Use
ulong_type to avoid warning about 32-bit shift.
From-SVN: r256925
Diffstat (limited to 'libiberty/simple-object-xcoff.c')
-rw-r--r-- | libiberty/simple-object-xcoff.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libiberty/simple-object-xcoff.c b/libiberty/simple-object-xcoff.c index 95887a42ebd..1e3d9e01b04 100644 --- a/libiberty/simple-object-xcoff.c +++ b/libiberty/simple-object-xcoff.c @@ -596,15 +596,24 @@ simple_object_xcoff_find_sections (simple_object_read *sobj, aux = (unsigned char *) auxent; if (u64) { + /* Use an intermediate 64-bit type to avoid + compilation warning about 32-bit shift below on + hosts with 32-bit off_t which aren't supported by + AC_SYS_LARGEFILE. */ + ulong_type x_scnlen64; + if ((auxent->u.xcoff64.x_csect.x_smtyp & 0x7) != XTY_SD || auxent->u.xcoff64.x_csect.x_smclas != XMC_XO) continue; - x_scnlen = fetch_32 (aux + offsetof (union external_auxent, - u.xcoff64.x_csect.x_scnlen_hi)); - x_scnlen = x_scnlen << 32 - | fetch_32 (aux + offsetof (union external_auxent, - u.xcoff64.x_csect.x_scnlen_lo)); + x_scnlen64 = + fetch_32 (aux + offsetof (union external_auxent, + u.xcoff64.x_csect.x_scnlen_hi)); + x_scnlen = + ((x_scnlen64 << 32) + | fetch_32 (aux + + offsetof (union external_auxent, + u.xcoff64.x_csect.x_scnlen_lo))); } else { |