aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2025-07-09 09:13:14 +0930
committerAlan Modra <amodra@gmail.com>2025-07-09 09:35:07 +0930
commita093ef7af443b36d57f4aa0cb76eca677208d7bf (patch)
treea6b3ae82ab7307e18e4543f5faa167001a938d3e
parentc78eda50fe3651e57c12d6ad850c2af2685ec30a (diff)
downloadbinutils-a093ef7af443b36d57f4aa0cb76eca677208d7bf.zip
binutils-a093ef7af443b36d57f4aa0cb76eca677208d7bf.tar.gz
binutils-a093ef7af443b36d57f4aa0cb76eca677208d7bf.tar.bz2
gas standardise md_section_align
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.)
-rw-r--r--gas/config/tc-avr.c2
-rw-r--r--gas/config/tc-epiphany.c2
-rw-r--r--gas/config/tc-fr30.c2
-rw-r--r--gas/config/tc-frv.c2
-rw-r--r--gas/config/tc-h8300.c2
-rw-r--r--gas/config/tc-hppa.c2
-rw-r--r--gas/config/tc-i386.c2
-rw-r--r--gas/config/tc-iq2000.c2
-rw-r--r--gas/config/tc-lm32.c2
-rw-r--r--gas/config/tc-m32c.c2
-rw-r--r--gas/config/tc-m32r.c2
-rw-r--r--gas/config/tc-m68hc11.c2
-rw-r--r--gas/config/tc-mep.c2
-rw-r--r--gas/config/tc-mips.c2
-rw-r--r--gas/config/tc-mn10300.c2
-rw-r--r--gas/config/tc-msp430.c2
-rw-r--r--gas/config/tc-mt.c2
-rw-r--r--gas/config/tc-nds32.c2
-rw-r--r--gas/config/tc-or1k.c2
-rw-r--r--gas/config/tc-ppc.c2
-rw-r--r--gas/config/tc-rl78.c2
-rw-r--r--gas/config/tc-s12z.c2
-rw-r--r--gas/config/tc-visium.c2
-rw-r--r--gas/config/tc-wasm32.c2
-rw-r--r--gas/config/tc-xgate.c2
25 files changed, 25 insertions, 25 deletions
diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c
index 6b78966..671df82 100644
--- a/gas/config/tc-avr.c
+++ b/gas/config/tc-avr.c
@@ -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
diff --git a/gas/config/tc-epiphany.c b/gas/config/tc-epiphany.c
index 55b7427..be23d15 100644
--- a/gas/config/tc-epiphany.c
+++ b/gas/config/tc-epiphany.c
@@ -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);
}
diff --git a/gas/config/tc-fr30.c b/gas/config/tc-fr30.c
index 8246113..e120ca5 100644
--- a/gas/config/tc-fr30.c
+++ b/gas/config/tc-fr30.c
@@ -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 *
diff --git a/gas/config/tc-frv.c b/gas/config/tc-frv.c
index 86d8277..900fb4a 100644
--- a/gas/config/tc-frv.c
+++ b/gas/config/tc-frv.c
@@ -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 *
diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c
index 12456b2..d7bb329 100644
--- a/gas/config/tc-h8300.c
+++ b/gas/config/tc-h8300.c
@@ -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
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index f1175e0..a22d094 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -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;
}
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 9292cfa..8fb8a7e 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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
diff --git a/gas/config/tc-iq2000.c b/gas/config/tc-iq2000.c
index 45976e7..1a31e8e 100644
--- a/gas/config/tc-iq2000.c
+++ b/gas/config/tc-iq2000.c
@@ -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 *
diff --git a/gas/config/tc-lm32.c b/gas/config/tc-lm32.c
index 241b5be..2a4bbd3 100644
--- a/gas/config/tc-lm32.c
+++ b/gas/config/tc-lm32.c
@@ -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
diff --git a/gas/config/tc-m32c.c b/gas/config/tc-m32c.c
index a65daae..ff91d47 100644
--- a/gas/config/tc-m32c.c
+++ b/gas/config/tc-m32c.c
@@ -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 *
diff --git a/gas/config/tc-m32r.c b/gas/config/tc-m32r.c
index 410b6a8..2368c9a 100644
--- a/gas/config/tc-m32r.c
+++ b/gas/config/tc-m32r.c
@@ -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 *
diff --git a/gas/config/tc-m68hc11.c b/gas/config/tc-m68hc11.c
index 6dd8120..a9ac9c7 100644
--- a/gas/config/tc-m68hc11.c
+++ b/gas/config/tc-m68hc11.c
@@ -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
diff --git a/gas/config/tc-mep.c b/gas/config/tc-mep.c
index e132767..1469186 100644
--- a/gas/config/tc-mep.c
+++ b/gas/config/tc-mep.c
@@ -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);
}
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index a1b56d7..8b648ae 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -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
diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c
index 4e0072d..537c2cb 100644
--- a/gas/config/tc-mn10300.c
+++ b/gas/config/tc-mn10300.c
@@ -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
diff --git a/gas/config/tc-msp430.c b/gas/config/tc-msp430.c
index 4b37c31..0127a2a 100644
--- a/gas/config/tc-msp430.c
+++ b/gas/config/tc-msp430.c
@@ -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
diff --git a/gas/config/tc-mt.c b/gas/config/tc-mt.c
index e5e9d5c..a795bdc 100644
--- a/gas/config/tc-mt.c
+++ b/gas/config/tc-mt.c
@@ -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 *
diff --git a/gas/config/tc-nds32.c b/gas/config/tc-nds32.c
index 53fb2c1..f5c021d 100644
--- a/gas/config/tc-nds32.c
+++ b/gas/config/tc-nds32.c
@@ -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
diff --git a/gas/config/tc-or1k.c b/gas/config/tc-or1k.c
index 87a2ac0..33975fe 100644
--- a/gas/config/tc-or1k.c
+++ b/gas/config/tc-or1k.c
@@ -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 *
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 08c3b7b..9b3aaab 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -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
}
diff --git a/gas/config/tc-rl78.c b/gas/config/tc-rl78.c
index a20e8b1..36ccacd 100644
--- a/gas/config/tc-rl78.c
+++ b/gas/config/tc-rl78.c
@@ -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);
}
diff --git a/gas/config/tc-s12z.c b/gas/config/tc-s12z.c
index 0299f97..438418a 100644
--- a/gas/config/tc-s12z.c
+++ b/gas/config/tc-s12z.c
@@ -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
diff --git a/gas/config/tc-visium.c b/gas/config/tc-visium.c
index c1a6d75..1e3e3a8 100644
--- a/gas/config/tc-visium.c
+++ b/gas/config/tc-visium.c
@@ -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
diff --git a/gas/config/tc-wasm32.c b/gas/config/tc-wasm32.c
index 066255f..23d2b43 100644
--- a/gas/config/tc-wasm32.c
+++ b/gas/config/tc-wasm32.c
@@ -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
diff --git a/gas/config/tc-xgate.c b/gas/config/tc-xgate.c
index 8d1f474..0823ecd 100644
--- a/gas/config/tc-xgate.c
+++ b/gas/config/tc-xgate.c
@@ -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