]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas standardise md_section_align
authorAlan Modra <amodra@gmail.com>
Tue, 8 Jul 2025 23:43:14 +0000 (09:13 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 9 Jul 2025 00:05:07 +0000 (09:35 +0930)
The point here is that when valueT is 64 bits and int is 32 bits,
1 << align doesn't work for shifts larger than the size of int.  (Not
that anyone is likely to use such large alignments in real code.)

25 files changed:
gas/config/tc-avr.c
gas/config/tc-epiphany.c
gas/config/tc-fr30.c
gas/config/tc-frv.c
gas/config/tc-h8300.c
gas/config/tc-hppa.c
gas/config/tc-i386.c
gas/config/tc-iq2000.c
gas/config/tc-lm32.c
gas/config/tc-m32c.c
gas/config/tc-m32r.c
gas/config/tc-m68hc11.c
gas/config/tc-mep.c
gas/config/tc-mips.c
gas/config/tc-mn10300.c
gas/config/tc-msp430.c
gas/config/tc-mt.c
gas/config/tc-nds32.c
gas/config/tc-or1k.c
gas/config/tc-ppc.c
gas/config/tc-rl78.c
gas/config/tc-s12z.c
gas/config/tc-visium.c
gas/config/tc-wasm32.c
gas/config/tc-xgate.c

index 6b78966d80a21e40f3ba01a48d181fcd19355a88..671df820ede3ead5288c67d08c8e3900cbbdbaaf 100644 (file)
@@ -1440,7 +1440,7 @@ valueT
 md_section_align (asection *seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
-  return ((addr + (1 << align) - 1) & (-1UL << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 /* If you define this macro, it should return the offset between the
index 55b74277cd113594487740581308e819463b717c..be23d15c7d21c1c1fb8e7519b57fa4074f834376 100644 (file)
@@ -154,7 +154,7 @@ md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
 
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 \f
index 8246113582c48433fb7fb0264fe2511bbc3cd2ca..e120ca595f6e6d3f6da5003c7b8a59c738345eb5 100644 (file)
@@ -156,7 +156,7 @@ md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
 
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 86d8277041eada6f5f59f8b5066a0b42015061b0..900fb4aa8bb9f24b51ef54e32b60278b9c3ebb73 100644 (file)
@@ -1226,7 +1226,7 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 12456b2d0c35748ad210e6355eb483f8bc59f0a1..d7bb3295465831aba6ab72163e6a72afef457677 100644 (file)
@@ -2223,7 +2223,7 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & (-1U << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 void
index f1175e0d4e3af6a6196cc1785318ae362c64859f..a22d094dd19f19cf6de95c317247582bd4cd4635 100644 (file)
@@ -1589,7 +1589,7 @@ valueT
 md_section_align (asection *segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  int align2 = (1 << align) - 1;
+  valueT align2 = ((valueT) 1 << align) - 1;
 
   return (size + align2) & ~align2;
 }
index 9292cfa2f9b4acde9f17b8b7dee49f38c5e69546..8fb8a7ee372e8eeeca96696f7e13412970b30df8 100644 (file)
@@ -18126,7 +18126,7 @@ md_section_align (segT segment, valueT size)
      work.  */
   int align = bfd_section_alignment (segment);
 
-  return ((size + (1 << align) - 1) & (-((valueT) 1 << align)));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 #endif
 
index 45976e7bebb8cabf71c1ebd44b718e8c88f77210..1a31e8e8a85752caffca69fb6ad6eee1bb236432 100644 (file)
@@ -425,7 +425,7 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 241b5bee7a3e4dfc1fe6e35cadf4939a9bc9d364..2a4bbd35b1017e7bcf9a4c2df1691becd2432533 100644 (file)
@@ -276,7 +276,7 @@ valueT
 md_section_align (asection *seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 /* This function assembles the instructions. It emits the frags/bytes to the
index a65daae1e5bb12b85447078d8b8b13264462c919..ff91d479363d25aaab2c7d63dcfd404495f6c4d6 100644 (file)
@@ -380,7 +380,7 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 410b6a81d65024c549cca3b47afbe0cd6207e3a9..2368c9a8b29f1d1fc1c74f60f9d998d7638f6d81 100644 (file)
@@ -1451,7 +1451,7 @@ md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
 
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 6dd8120cc350de5fa37d9671dc150314ff0c21e0..a9ac9c7ef5c96d3ec8f0bfea2d47e731815b321a 100644 (file)
@@ -583,7 +583,7 @@ valueT
 md_section_align (asection *seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 static int
index e13276762729b27e7c7353a39e7a0678c63a53cc..14691861bcfb9c8651b16854361eac22b26ee8ea 100644 (file)
@@ -1381,7 +1381,7 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 
index a1b56d73fdce16cd6ad5d489e0329325b081916d..8b648ae89ce1faa6b7179f07d44a5273b614e4ab 100644 (file)
@@ -17630,7 +17630,7 @@ md_section_align (asection *seg, valueT addr)
   if (align > 4)
     align = 4;
 
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 /* Utility routine, called from above as well.  If called while the
index 4e0072d0826fd62f929d496fdcce52810a6f7c1d..537c2cb4e7c9ab90a8cefca712ce7e0d6a025f90 100644 (file)
@@ -902,7 +902,7 @@ md_section_align (asection *seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
 
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 void
index 4b37c310c19ed208c68b8fb1bdc09291fd275d45..0127a2a14161ee6daef393d395d7c4eade191a89 100644 (file)
@@ -4384,7 +4384,7 @@ md_section_align (asection * seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
 
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 /* If you define this macro, it should return the offset between the
index e5e9d5ca1f304414fdbc3add27ccf9676891cba4..a795bdc81c7ce31db4cc06fd343bab29a7c4bb51 100644 (file)
@@ -335,7 +335,7 @@ md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
 
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 53fb2c1af48a37cabc30c4184801a579a1e5ee31..f5c021ddbbcc8962623b019e87e7c43174e9bf12 100644 (file)
@@ -6608,7 +6608,7 @@ md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
 
-  return ((size + (1 << align) - 1) & ((valueT) -1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 /* GAS will call this function when a symbol table lookup fails, before it
index 87a2ac0e3cda4ee5a660fa6d0ddb3134cd8166cb..33975fea6dc515c49d890d17af5496a1aa1dbdb0 100644 (file)
@@ -164,7 +164,7 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 symbolS *
index 08c3b7b8ef650c5f3e6a0d76f526a8a7b64659fc..9b3aaabfa0af81639c82149b17311359e6fe88f2 100644 (file)
@@ -6493,7 +6493,7 @@ md_section_align (asection *seg ATTRIBUTE_UNUSED, valueT addr)
 #else
   int align = bfd_section_alignment (seg);
 
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 #endif
 }
 
index a20e8b172475304efd5f2ad4bd6920e2071888c0..36ccacd05707bb189dab7e1a1e7f211d4bb1b37a 100644 (file)
@@ -1508,5 +1508,5 @@ valueT
 md_section_align (segT segment, valueT size)
 {
   int align = bfd_section_alignment (segment);
-  return ((size + (1 << align) - 1) & -(1 << align));
+  return (size + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
index 0299f97f2230a5677cfe5dc4559e74d44ec990d2..438418a0c1d147770b3f5af3f78b9867364d61b2 100644 (file)
@@ -186,7 +186,7 @@ valueT
 md_section_align (asection *seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 void
index c1a6d75f4fe4e16d467bc9209a293122f9a83ddc..1e3e3a847bebad129c5e65a73574ad6da84f98a3 100644 (file)
@@ -201,7 +201,7 @@ md_section_align (asection *seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
 
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 void
index 066255f899450f6abe0a7c75a98edd35a96c87b4..23d2b4348239319d07020240811817af62f3a328 100644 (file)
@@ -178,7 +178,7 @@ valueT
 md_section_align (asection * seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 /* Apply a fixup, return TRUE if done (and no relocation is
index 8d1f4740523041ed02e269ce80ef72d3e2231367..0823ecd93a4e82d99966b7d53cd543e9c53c8734 100644 (file)
@@ -466,7 +466,7 @@ valueT
 md_section_align (asection * seg, valueT addr)
 {
   int align = bfd_section_alignment (seg);
-  return ((addr + (1 << align) - 1) & -(1 << align));
+  return (addr + ((valueT) 1 << align) - 1) & -((valueT) 1 << align);
 }
 
 void