From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id CB21D3861863 for ; Thu, 15 Feb 2024 11:31:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CB21D3861863 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CB21D3861863 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707996684; cv=none; b=LhntH+b5sCIRcNf3kWYTW0uORZlA+VrhRFtSZZpwy1ZV3xAH7oVc0pmHVMLWUpzl2K/d5mRAgdQmPvObbV411+S8c9CpZCTysSVs72S7KGLWyvlhfYbNhx4q/JsWPNbn5QKwhZFlo6uqdQrv36Z9Z/3xCy1AzdAhp+qucRJSmzo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707996684; c=relaxed/simple; bh=/WyGCP4MwEdCi6EKB8DuwIS3K55PQh+g/Q6aXIHr+2U=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=L6IgiQPboaU+1wUjL8cwakyNk3fCbfEGagPommSptmEUgpEyzscSgmszWPlixYMYHwwF+/8k2tFAUgj312CI+X+X0lbprR5jvVFuz81EAcpgvC8S8oUKIhNt4pkLOZgnG5Fg73XwFWUKx8n3510OrQ+WJ7Ft62CYc0MSF0IrQek= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1d7858a469aso6358055ad.2 for ; Thu, 15 Feb 2024 03:31:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707996680; x=1708601480; darn=sourceware.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=g8L0fEkDvuQ16RgtXiqaQWE4V2Iar8lSVtP4QBf6t44=; b=VlJhoue2xklIS/vhMPGhvIlYr3BlXVhTCWA6SAWTYk0suqYN3q71z8wC+7ryh1E9Zk LlOR0/RixHwMCS+nFq1mkMK8IPCE6dH9+yvPBGhZHIKB4R6uogYi2xlXcWJ5jdhXl4bi bVC+4HzHgLXn+jLpFtrRo1qiFCYmlzrQV0JqIqvud3ObdTHsvihxsWqAYr+93t27mQJb xQPkAQUGb+uJu4nJGHUsq2krW/hlLogVR/UxhdFtaV2zWI8Pjh8mxfihCQ7jjR+ETsD0 kN/L3LpYryTH7TQRePtdg77ZA7lLaWUmR3dLO7T7HqRLzavOCNxSZ8MxY+l1+lHh3SGn 9zug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707996680; x=1708601480; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=g8L0fEkDvuQ16RgtXiqaQWE4V2Iar8lSVtP4QBf6t44=; b=o7KPglG4LqUMOnUiIQQqwmLHAFhAETQGF1C5OQmvFNkI9sU3rUxnd6IkV9rWNekiG+ ZkmyU3zsTNrGFH1pU6KsuKrz8kX0ZjekvEoeVa9sSyB1tLo5Y7f9SxW3eaolgjGq0Fij b7C7g7UflvI5mQYViHMCZcdeJr5EFVlZiIvC8MfelzuPWoqVhIkbXlJM4c87nOkTWNF9 2mHnqXY8/eKOdPo0ZVqmRVzVS8PJc3aocrpF42hd9vjqAgP3RWqZUtqFdF31/aVUZPhG fyzn3z9CZX5XnnHdVp/k/XeaTiF0W6cgjXwy71s2aiK8xuLHhpeSrZX3QFqU1d6fwtWf Hkdg== X-Gm-Message-State: AOJu0YzS0H0jrNXD7lQMPkaXaKQ5R9lNjOzCCDu/S+FcGSmP7V9eDkum odfTSUqq2sRNYX1/itmotmYEB9tvbF0a2vabVBURGcCc9ApHm4QkSng2Scmk X-Google-Smtp-Source: AGHT+IGFY6Q587PWVVlU1Jn94afebQspe8zPlJn95/eOsNNSpEpPcIuttq6CNlEaNehDHb3FogMh2Q== X-Received: by 2002:a17:902:c947:b0:1db:6727:ea14 with SMTP id i7-20020a170902c94700b001db6727ea14mr1483081pla.59.1707996679779; Thu, 15 Feb 2024 03:31:19 -0800 (PST) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:dec2:7d97:e7f:4c60]) by smtp.gmail.com with ESMTPSA id ky7-20020a170902f98700b001db6594bc27sm1072265plb.14.2024.02.15.03.31.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 03:31:19 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id BF21D1140410; Thu, 15 Feb 2024 22:01:16 +1030 (ACDT) Date: Thu, 15 Feb 2024 22:01:16 +1030 From: Alan Modra To: Jan Beulich Cc: binutils@sourceware.org Subject: Re: PR30308, infinite recursion in i386_intel_simplify Message-ID: References: <671bff39-485f-46b6-86d8-dcfd8568e98d@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-3033.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Feb 15, 2024 at 09:20:43PM +1030, Alan Modra wrote: > On Thu, Feb 15, 2024 at 10:23:16AM +0100, Jan Beulich wrote: > > Mind me asking that such predicate (and alike) functions, when introduced > > anew, take pointer-to-const right away? > > Yes, that would have been a good idea. I'll commit this after regression testing. * symbols.c (S_IS_FUNCTION, S_IS_EXTERNAL, S_IS_WEAK), (S_IS_WEAKREFR, S_IS_WEAKREFD, S_IS_COMMON, S_IS_DEFINED), (S_FORCE_RELOC, S_IS_DEBUG, S_IS_LOCAL, S_IS_STABD), (symbol_previous, symbol_next, symbol_X_add_number), (symbol_get_frag, symbol_used_p, symbol_used_in_reloc_p), (symbol_mri_common_p, symbol_written_p, symbol_removed_p), (symbol_resolved_p, symbol_resolving_p, symbol_section_p), (symbol_equated_p, symbol_equated_reloc_p, symbol_constant_p), (symbol_shadow_p, symbol_same_p): Constify sym args. * symbols.h: Update prototypes. diff --git a/gas/symbols.c b/gas/symbols.c index 4df83bab0e9..b57dbfc64f4 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -2302,7 +2302,7 @@ copy_symbol_attributes (symbolS *dest, symbolS *src) } int -S_IS_FUNCTION (symbolS *s) +S_IS_FUNCTION (const symbolS *s) { flagword flags; @@ -2315,7 +2315,7 @@ S_IS_FUNCTION (symbolS *s) } int -S_IS_EXTERNAL (symbolS *s) +S_IS_EXTERNAL (const symbolS *s) { flagword flags; @@ -2332,7 +2332,7 @@ S_IS_EXTERNAL (symbolS *s) } int -S_IS_WEAK (symbolS *s) +S_IS_WEAK (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2346,7 +2346,7 @@ S_IS_WEAK (symbolS *s) } int -S_IS_WEAKREFR (symbolS *s) +S_IS_WEAKREFR (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2354,7 +2354,7 @@ S_IS_WEAKREFR (symbolS *s) } int -S_IS_WEAKREFD (symbolS *s) +S_IS_WEAKREFD (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2362,7 +2362,7 @@ S_IS_WEAKREFD (symbolS *s) } int -S_IS_COMMON (symbolS *s) +S_IS_COMMON (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2370,7 +2370,7 @@ S_IS_COMMON (symbolS *s) } int -S_IS_DEFINED (symbolS *s) +S_IS_DEFINED (const symbolS *s) { if (s->flags.local_symbol) return ((struct local_symbol *) s)->section != undefined_section; @@ -2386,7 +2386,7 @@ S_IS_DEFINED (symbolS *s) symbols or eliminated from expressions, because they may be overridden by the linker. */ int -S_FORCE_RELOC (symbolS *s, int strict) +S_FORCE_RELOC (const symbolS *s, int strict) { segT sec; if (s->flags.local_symbol) @@ -2405,7 +2405,7 @@ S_FORCE_RELOC (symbolS *s, int strict) } int -S_IS_DEBUG (symbolS *s) +S_IS_DEBUG (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2415,7 +2415,7 @@ S_IS_DEBUG (symbolS *s) } int -S_IS_LOCAL (symbolS *s) +S_IS_LOCAL (const symbolS *s) { flagword flags; const char *name; @@ -2455,7 +2455,7 @@ S_IS_LOCAL (symbolS *s) } int -S_IS_STABD (symbolS *s) +S_IS_STABD (const symbolS *s) { return S_GET_NAME (s) == 0; } @@ -2703,7 +2703,7 @@ S_SET_FORWARD_REF (symbolS *s) /* Return the previous symbol in a chain. */ symbolS * -symbol_previous (symbolS *s) +symbol_previous (const symbolS *s) { if (s->flags.local_symbol) abort (); @@ -2713,7 +2713,7 @@ symbol_previous (symbolS *s) /* Return the next symbol in a chain. */ symbolS * -symbol_next (symbolS *s) +symbol_next (const symbolS *s) { if (s->flags.local_symbol) abort (); @@ -2744,7 +2744,7 @@ symbol_set_value_expression (symbolS *s, const expressionS *exp) /* Return whether 2 symbols are the same. */ int -symbol_same_p (symbolS *s1, symbolS *s2) +symbol_same_p (const symbolS *s1, const symbolS *s2) { return s1 == s2; } @@ -2752,7 +2752,7 @@ symbol_same_p (symbolS *s1, symbolS *s2) /* Return a pointer to the X_add_number component of a symbol. */ offsetT * -symbol_X_add_number (symbolS *s) +symbol_X_add_number (const symbolS *s) { if (s->flags.local_symbol) return (offsetT *) &((struct local_symbol *) s)->value; @@ -2787,7 +2787,7 @@ symbol_set_frag (symbolS *s, fragS *f) /* Return the frag of a symbol. */ fragS * -symbol_get_frag (symbolS *s) +symbol_get_frag (const symbolS *s) { if (s->flags.local_symbol) return ((struct local_symbol *) s)->frag; @@ -2819,7 +2819,7 @@ symbol_clear_used (symbolS *s) /* Return whether a symbol has been used. */ int -symbol_used_p (symbolS *s) +symbol_used_p (const symbolS *s) { if (s->flags.local_symbol) return 1; @@ -2849,7 +2849,7 @@ symbol_clear_used_in_reloc (symbolS *s) /* Return whether a symbol has been used in a reloc. */ int -symbol_used_in_reloc_p (symbolS *s) +symbol_used_in_reloc_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2879,7 +2879,7 @@ symbol_clear_mri_common (symbolS *s) /* Return whether a symbol is an MRI common symbol. */ int -symbol_mri_common_p (symbolS *s) +symbol_mri_common_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2909,7 +2909,7 @@ symbol_clear_written (symbolS *s) /* Return whether a symbol has been written. */ int -symbol_written_p (symbolS *s) +symbol_written_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2929,7 +2929,7 @@ symbol_mark_removed (symbolS *s) /* Return whether a symbol has been marked to be removed. */ int -symbol_removed_p (symbolS *s) +symbol_removed_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2947,7 +2947,7 @@ symbol_mark_resolved (symbolS *s) /* Return whether a symbol has been resolved. */ int -symbol_resolved_p (symbolS *s) +symbol_resolved_p (const symbolS *s) { return s->flags.resolved; } @@ -2969,7 +2969,7 @@ symbol_clear_resolving (symbolS *s) /* Return whether a symbol is being resolved. */ int -symbol_resolving_p (symbolS *s) +symbol_resolving_p (const symbolS *s) { return s->flags.resolving; } @@ -2977,7 +2977,7 @@ symbol_resolving_p (symbolS *s) /* Return whether a symbol is a section symbol. */ int -symbol_section_p (symbolS *s) +symbol_section_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2987,7 +2987,7 @@ symbol_section_p (symbolS *s) /* Return whether a symbol is equated to another symbol. */ int -symbol_equated_p (symbolS *s) +symbol_equated_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -2998,7 +2998,7 @@ symbol_equated_p (symbolS *s) treated specially when writing out relocs. */ int -symbol_equated_reloc_p (symbolS *s) +symbol_equated_reloc_p (const symbolS *s) { if (s->flags.local_symbol) return 0; @@ -3017,7 +3017,7 @@ symbol_equated_reloc_p (symbolS *s) /* Return whether a symbol has a constant value. */ int -symbol_constant_p (symbolS *s) +symbol_constant_p (const symbolS *s) { if (s->flags.local_symbol) return 1; @@ -3028,7 +3028,7 @@ symbol_constant_p (symbolS *s) symbol list. */ int -symbol_shadow_p (symbolS *s) +symbol_shadow_p (const symbolS *s) { if (s->flags.local_symbol) return 0; diff --git a/gas/symbols.h b/gas/symbols.h index c61fabcbe0a..ee7ca67ac4c 100644 --- a/gas/symbols.h +++ b/gas/symbols.h @@ -95,17 +95,17 @@ extern valueT S_GET_VALUE (symbolS *); extern valueT S_GET_VALUE_WHERE (symbolS *, const char *, unsigned int); extern void S_SET_VALUE (symbolS *, valueT); -extern int S_IS_FUNCTION (symbolS *); -extern int S_IS_EXTERNAL (symbolS *); -extern int S_IS_WEAK (symbolS *); -extern int S_IS_WEAKREFR (symbolS *); -extern int S_IS_WEAKREFD (symbolS *); -extern int S_IS_COMMON (symbolS *); -extern int S_IS_DEFINED (symbolS *); -extern int S_FORCE_RELOC (symbolS *, int); -extern int S_IS_DEBUG (symbolS *); -extern int S_IS_LOCAL (symbolS *); -extern int S_IS_STABD (symbolS *); +extern int S_IS_FUNCTION (const symbolS *); +extern int S_IS_EXTERNAL (const symbolS *); +extern int S_IS_WEAK (const symbolS *); +extern int S_IS_WEAKREFR (const symbolS *); +extern int S_IS_WEAKREFD (const symbolS *); +extern int S_IS_COMMON (const symbolS *); +extern int S_IS_DEFINED (const symbolS *); +extern int S_FORCE_RELOC (const symbolS *, int); +extern int S_IS_DEBUG (const symbolS *); +extern int S_IS_LOCAL (const symbolS *); +extern int S_IS_STABD (const symbolS *); extern int S_CAN_BE_REDEFINED (const symbolS *); extern int S_IS_VOLATILE (const symbolS *); extern int S_IS_FORWARD_REF (const symbolS *); @@ -173,8 +173,6 @@ void symbol_insert (symbolS * addme, symbolS * target, void symbol_remove (symbolS * symbolP, symbolS ** rootP, symbolS ** lastP); -extern symbolS *symbol_previous (symbolS *); - extern int symbol_on_chain (symbolS *s, symbolS *rootPP, symbolS *lastPP); void verify_symbol_chain (symbolS * rootP, symbolS * lastP); @@ -182,42 +180,43 @@ void verify_symbol_chain (symbolS * rootP, symbolS * lastP); void symbol_append (symbolS * addme, symbolS * target, symbolS ** rootP, symbolS ** lastP); -extern symbolS *symbol_next (symbolS *); +extern symbolS *symbol_previous (const symbolS *); +extern symbolS *symbol_next (const symbolS *); extern expressionS *symbol_get_value_expression (symbolS *); extern void symbol_set_value_expression (symbolS *, const expressionS *); -extern offsetT *symbol_X_add_number (symbolS *); +extern offsetT *symbol_X_add_number (const symbolS *); extern void symbol_set_value_now (symbolS *); extern void symbol_set_frag (symbolS *, fragS *); -extern fragS *symbol_get_frag (symbolS *); +extern fragS *symbol_get_frag (const symbolS *); extern void symbol_mark_used (symbolS *); extern void symbol_clear_used (symbolS *); -extern int symbol_used_p (symbolS *); +extern int symbol_used_p (const symbolS *); extern void symbol_mark_used_in_reloc (symbolS *); extern void symbol_clear_used_in_reloc (symbolS *); -extern int symbol_used_in_reloc_p (symbolS *); +extern int symbol_used_in_reloc_p (const symbolS *); extern void symbol_mark_mri_common (symbolS *); extern void symbol_clear_mri_common (symbolS *); -extern int symbol_mri_common_p (symbolS *); +extern int symbol_mri_common_p (const symbolS *); extern void symbol_mark_written (symbolS *); extern void symbol_clear_written (symbolS *); -extern int symbol_written_p (symbolS *); +extern int symbol_written_p (const symbolS *); extern void symbol_mark_removed (symbolS *); -extern int symbol_removed_p (symbolS *); +extern int symbol_removed_p (const symbolS *); extern void symbol_mark_resolved (symbolS *); -extern int symbol_resolved_p (symbolS *); +extern int symbol_resolved_p (const symbolS *); extern void symbol_mark_resolving (symbolS *); extern void symbol_clear_resolving (symbolS *); -extern int symbol_resolving_p (symbolS *); -extern int symbol_section_p (symbolS *); -extern int symbol_equated_p (symbolS *); -extern int symbol_equated_reloc_p (symbolS *); -extern int symbol_constant_p (symbolS *); -extern int symbol_shadow_p (symbolS *); +extern int symbol_resolving_p (const symbolS *); +extern int symbol_section_p (const symbolS *); +extern int symbol_equated_p (const symbolS *); +extern int symbol_equated_reloc_p (const symbolS *); +extern int symbol_constant_p (const symbolS *); +extern int symbol_shadow_p (const symbolS *); extern symbolS *symbol_symbolS (symbolS *); extern asymbol *symbol_get_bfdsym (symbolS *); extern void symbol_set_bfdsym (symbolS *, asymbol *); -extern int symbol_same_p (symbolS *, symbolS *); +extern int symbol_same_p (const symbolS *, const symbolS *); #ifdef OBJ_SYMFIELD_TYPE OBJ_SYMFIELD_TYPE *symbol_get_obj (symbolS *); -- Alan Modra Australia Development Lab, IBM