]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libiberty/simple-object-xcoff.c
* decl.c (cxx_maybe_build_cleanup): When clearing location of cleanup,
[thirdparty/gcc.git] / libiberty / simple-object-xcoff.c
index 9a8f581563f0e9c83828c3ec1742e4773c37a2a0..60676567e8e8859d6f18201a0d449f42607f7799 100644 (file)
@@ -1,5 +1,5 @@
 /* simple-object-coff.c -- routines to manipulate XCOFF object files.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
+   Copyright (C) 2013-2019 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Google and David Edelsohn, IBM.
 
 This program is free software; you can redistribute it and/or modify it
@@ -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
                {