]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
elf: Use uint64_t for common symbol alignment warning
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 2 Oct 2025 01:57:35 +0000 (09:57 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 2 Oct 2025 21:29:49 +0000 (05:29 +0800)
Use uint64_t for common symbol alignment warning to avoid

elflink.c:5548:12: runtime error: shift exponent 37 is too large for 32-bit type 'int'

with invalid input in PR ld/33500.  Now ld issues:

ld: warning: alignment 137438953472 of common symbol `__afl_global_area_ptr' in pr33500.o is greater than the alignment (8) of its section *COM*

instead of

ld: warning: alignment 32 of common symbol `__afl_global_area_ptr' in pr33500.o is greater than the alignment (8) of its section *COM*

PR ld/33511
* elflink.c (elf_link_add_object_symbols): Use uint64_t for
common symbol alignment warning.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
bfd/elflink.c

index 5c8b822e36ad3fe85e4b9b20d2e5feaa3d399f2e..3f3ea2cce514e60bb54161cf50f3bd4f640e141f 100644 (file)
@@ -5540,20 +5540,22 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
              if (normal_align < common_align)
                {
                  /* PR binutils/2735 */
+                 uint64_t c_align = UINT64_C (1) << common_align;
+                 uint64_t n_align = UINT64_C (1) << normal_align;
                  if (normal_bfd == NULL)
                    _bfd_error_handler
                      /* xgettext:c-format */
-                     (_("warning: alignment %u of common symbol `%s' in %pB is"
-                        " greater than the alignment (%u) of its section %pA"),
-                      1 << common_align, name, common_bfd,
-                      1 << normal_align, h->root.u.def.section);
+                     (_("warning: alignment %" PRIu64 " of common symbol `%s' in %pB is"
+                        " greater than the alignment (%" PRIu64 ") of its section %pA"),
+                      c_align, name, common_bfd,
+                      n_align, h->root.u.def.section);
                  else
                    _bfd_error_handler
                      /* xgettext:c-format */
-                     (_("warning: alignment %u of normal symbol `%s' in %pB"
-                        " is smaller than %u used by the common definition in %pB"),
-                      1 << normal_align, name, normal_bfd,
-                      1 << common_align, common_bfd);
+                     (_("warning: alignment %" PRIu64 " of normal symbol `%s' in %pB"
+                        " is smaller than %" PRIu64 " used by the common definition in %pB"),
+                      n_align, name, normal_bfd,
+                      c_align, common_bfd);
 
                  /* PR 30499: make sure that users understand that this warning is serious.  */
                  _bfd_error_handler