[binutils-gdb] Excessive gas .irpt count

Alan Modra amodra@sourceware.org
Thu Jan 9 05:53:02 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e0a07d7fc564d91ed24d916dc7125d7159388580

commit e0a07d7fc564d91ed24d916dc7125d7159388580
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Jan 9 15:07:49 2025 +1030

    Excessive gas .irpt count
    
    There is a test in do_repeat to error on "negative" repeat counts.
    Just at what value a ssize_t is negative of course depends on the
    host.  Change the excessive repeat count to a fixed value, 0x80000000,
    ie. what would be seen as negative on a 32-bit host.

Diff:
---
 gas/read.c                     | 4 ++--
 gas/testsuite/gas/macros/end.l | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gas/read.c b/gas/read.c
index 6d0d4b5e31a..5df1f3da588 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -3144,9 +3144,9 @@ do_repeat (size_t count, const char *start, const char *end,
   sb one;
   sb many;
 
-  if (((ssize_t) count) < 0)
+  if (count > 0x7fffffff)
     {
-      as_bad (_("negative count for %s - ignored"), start);
+      as_bad (_("excessive count %zu for %s - ignored"), count, start);
       count = 0;
     }
 
diff --git a/gas/testsuite/gas/macros/end.l b/gas/testsuite/gas/macros/end.l
index ff5d45213db..9e765cca062 100644
--- a/gas/testsuite/gas/macros/end.l
+++ b/gas/testsuite/gas/macros/end.l
@@ -1,4 +1,4 @@
 .*: Assembler messages:
 .*:1: Warning: \.endm .* \.macro
 .*:2: Warning: \.endr .* (\.rept|\.irpc?).*(\.rept|\.irpc?).*(\.rept|\.irpc?)
-.*:3: Error: negative count for REPT - ignored
+.*:3: Error: .* for REPT - ignored


More information about the Binutils-cvs mailing list