From 90320e40958020aea265dc693d0613a330e40b61 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 4 Jan 2021 08:53:37 +1030 Subject: [PATCH] PR27101, as: Reject (byte) .align 0x100000000 This allows alignments up to 2**TC_ALIGN_LIMIT, which might be larger than an unsigned int can hold. PR 27101 * read.c (s_align): Use a large enough type for "align" to hold the result of get_absolute_expression. --- gas/ChangeLog | 6 ++++++ gas/read.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 155ec7e3b16..b38c379a215 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2021-01-04 Alan Modra + + PR 27101 + * read.c (s_align): Use a large enough type for "align" to hold + the result of get_absolute_expression. + 2021-01-01 Nicolas Boulenguez * config/tc-i386.c: Correct comment spelling. diff --git a/gas/read.c b/gas/read.c index cf704b31ca3..9d0ba27ea8c 100644 --- a/gas/read.c +++ b/gas/read.c @@ -1548,7 +1548,7 @@ static void s_align (signed int arg, int bytes_p) { unsigned int align_limit = TC_ALIGN_LIMIT; - unsigned int align; + addressT align; char *stop = NULL; char stopc = 0; offsetT fill = 0; @@ -1595,7 +1595,7 @@ s_align (signed int arg, int bytes_p) if (align > align_limit) { align = align_limit; - as_warn (_("alignment too large: %u assumed"), align); + as_warn (_("alignment too large: %u assumed"), align_limit); } if (*input_line_pointer != ',') -- 2.30.2