Avoid compilation warning in libiberty/simple-object-xcoff.c
authorEli Zaretskii <eliz@gnu.org>
Sat, 27 Jan 2018 16:25:06 +0000 (18:25 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 27 Jan 2018 16:25:06 +0000 (18:25 +0200)
gdb/ChangeLog:
2018-01-27  Eli Zaretskii  <eliz@gnu.org>

* simple-object-xcoff.c (simple_object_xcoff_find_sections): Avoid
compilation warning in 32-bit builds not supported by
AC_SYS_LARGEFILE.

libiberty/ChangeLog
libiberty/simple-object-xcoff.c

index f1f6d8dee5b26acd93d03ab2344fd77ff236c657..5e96b8b11b398971150fc6a164297be4f17f2ef1 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * simple-object-xcoff.c (simple_object_xcoff_find_sections): Avoid
+       compilation warning in 32-bit builds not supported by
+       AC_SYS_LARGEFILE.
+
 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
 
        Update copyright years.
index 95887a42ebdc89727572363072f74aa53d754c06..0ef2a465bcaea75cd8cd37e5852c48bd850b5395 100644 (file)
@@ -596,15 +596,21 @@ 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
                {