From patchwork Thu Dec 19 10:09:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 103416 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id F0C6A385840E for ; Thu, 19 Dec 2024 10:17:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F0C6A385840E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=google header.b=bEX5JTK5 X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id 9EED03858C32 for ; Thu, 19 Dec 2024 10:09:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9EED03858C32 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9EED03858C32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::332 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734602978; cv=none; b=ZvJ6qu6R5VUZIrMKqjKitV25ivWEQcMu0xn7dN1mXNjqDqK6vdSs4C08fG8C0kusOzBnVMggBkF99lpWGWzdb3lG0NwbBDwRCQD5c6zEN19LYrfe6v7o9FfC/SRygpuA42lOlpZkFsuCkN2HMcDo4EzGiECjjDHZHQU9GwLM+6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734602978; c=relaxed/simple; bh=0LU0fw2IJpM2PEdd0XBn2uUhppPMtadoya046ukZ3qw=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=KPV6r0w/NGuNHNqNuJddHfEhShD369hWV4774QfmqjDDUgkW82N5JglwYzHsluhmEqvLcSiZrNzZyWl/cb1fIsezErOd1/yAetVKt3pF9QQTa/l8aoc4mqSxMwXr8NMcBYSGwH50T3U5bfmFPUlnhTWBqT7ppBe9x40S1LSQ9pU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9EED03858C32 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-436281c8a38so4093175e9.3 for ; Thu, 19 Dec 2024 02:09:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1734602977; x=1735207777; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=hxsfRUIgCFrkYmfiNCe6t92V10mTj0ibf9MaoIqbbOc=; b=bEX5JTK5NfvF31A0kb9AAmjq6k8VftNoYLxQSGA98nF1eCgtewQGVqsltCm1YzbzPO 9zylYNXtLIVZhCVJPY84v/QYxIWMfDc5w66BXGHISoY28wlJSd/BXjPlqK7DmVWL2ckP yh5cPyepLwGgn1r2+FwUAuY28KwcgOkOVAEGA4usnhY1KDaUhTkSKJ5OjWtQ9U2MqaTW 96g6FfLw2bZoPnfhbhLhddXS6+jBh+CF4C7f7IZf/GOR6bL+iGmv416BaSjuAM+YuIKd XFMD+6BCQ7OyagV7I/cr4h26xlNRAh5Yz7KcDxCsF3AvI3RMDYyCmnp9g3gtbs1HrosJ QpuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734602977; x=1735207777; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hxsfRUIgCFrkYmfiNCe6t92V10mTj0ibf9MaoIqbbOc=; b=gkPQ6eWWKsfFn63WdUEHy1eQ1bC7i+cy4kRuMYVZvxvos7Mh7x565jjBlEZXwD9CiN qKJEyxvuDzUcpSUadHYvQqbxKdAsPp/tokg8sA0OjhWxfnUBMnfhL34ok2IrG5d+k9E+ HAs5MUu0elkoegFpwVFBKoP0rbzbwsad0HClcvpWFdYtr4RbzEdoR0ZB6G+sxf7ab6AA VddwJX0GdWWlXXHjkNUQp/0b2HWXMXOhADRhnCUQRRAFYZPamW5yiqz4LAvo/0mC+Ts7 cCxqrSyhhNXXi4vLZC6DN0HHEe2BYZpqYrNusxax8K3d4n2oWUGS1/5+kuCkftpJ5F2O NxHw== X-Gm-Message-State: AOJu0YyTlYWWMtxjYL0VXcO9Mes+BBY7dylePnzTyZu4OWEwVKqX6fzm NxcEZcn/WgAd1rHi51CMaU3QU91z+VWP2TSd38l+kH0Ct/U1eFk8YwB1VOWRtfK+9l3hqIDVzCU = X-Gm-Gg: ASbGncvf2+hdOgwjYB3s/QUokI9iyV3RyxvqJAatVbxkTMGzloIqTkFav0jRg9FhwbZ r2rxGclcV+uIKkD8aL75B1+05e+U2kem2GkGOXZdPKM2aSkzuk7DBpWQzb+JeEhZtg9bNbrzFCe MJAWrCeQoOqiYkAXFSIfD3Jw8SZo58MmPNAn8BuQDYlmUoucGXsz9KQdgqBWad49WVnrC4w3KT1 QuS9R6hJ4gxw/bHWMBSrd0CqB/VuWVHW5tV0wTf7YmH7hNDEv+/jbbvFafJ3VTidZRBftgesWtu E5KWvLcRlcqWEoirJb5Iqr3XuK7YMQkK9u5wiyEk4w== X-Google-Smtp-Source: AGHT+IESc1rb15i6XvxILB9qVLLh1Tpqp+x8+ahKrCiepbOUZ9AU09M4VxrCaGkZkFDeTAdOyKwBcA== X-Received: by 2002:a05:600c:190f:b0:434:9e1d:7626 with SMTP id 5b1f17b1804b1-436553f4992mr49131295e9.25.1734602977247; Thu, 19 Dec 2024 02:09:37 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43656b00cf6sm48563505e9.10.2024.12.19.02.09.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 19 Dec 2024 02:09:36 -0800 (PST) Message-ID: <19b57e8a-1295-4d7e-ab70-fa8a082868fc@suse.com> Date: Thu, 19 Dec 2024 11:09:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 3/3] gas: consolidate . latching From: Jan Beulich To: Binutils Cc: Nick Clifton , "Maciej W. Rozycki" References: <1b2e3ae2-142d-43cc-8672-2c3aa04477ca@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <1b2e3ae2-142d-43cc-8672-2c3aa04477ca@suse.com> X-Spam-Status: No, score=-3022.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org ... by purging dot_{frag,value}. Right now these two and dot_symbol are updated independently, which can't be quite right. Centralize .-related information in dot_symbol, updating it also where previously dot_{frag,value} were updated. Since S_GET_VALUE() can't be used to retrieve what used to be dot_value, introduce a new helper to fetch both frag and offset. --- v2: New. --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -4082,12 +4082,14 @@ md_assemble (char *str) a label attached to the instruction. By "attached" we mean on the same source line as the instruction and without any intervening semicolons. */ - dot_value = frag_now_fix (); - dot_frag = frag_now; + symbol_set_value_now (&dot_symbol); for (l = insn_labels; l != NULL; l = l->next) { - symbol_set_frag (l->label, dot_frag); - S_SET_VALUE (l->label, dot_value); + addressT value; + + symbol_set_frag (l->label, + symbol_get_frag_and_value (&dot_symbol, &value)); + S_SET_VALUE (l->label, value); } } --- a/gas/expr.c +++ b/gas/expr.c @@ -1849,10 +1849,7 @@ expr (int rankarg, /* Larger # is highe /* Save the value of dot for the fixup code. */ if (rank == 0) - { - dot_value = frag_now_fix (); - dot_frag = frag_now; - } + symbol_set_value_now (&dot_symbol); retval = operand (resultP, mode); --- a/gas/read.c +++ b/gas/read.c @@ -4483,8 +4483,7 @@ emit_expr_with_reloc (expressionS *exp, return; frag_grow (nbytes); - dot_value = frag_now_fix (); - dot_frag = frag_now; + symbol_set_value_now (&dot_symbol); #ifndef NO_LISTING #ifdef OBJ_ELF --- a/gas/write.c +++ b/gas/write.c @@ -110,12 +110,6 @@ int symbol_table_frozen; symbolS *abs_section_sym; -/* Remember the value of dot when parsing expressions. */ -addressT dot_value; - -/* The frag that dot_value is based from. */ -fragS *dot_frag; - /* Relocs generated by ".reloc" pseudo. */ struct reloc_list* reloc_list; @@ -162,8 +156,8 @@ fix_new_internal (fragS *frag, /* Which fixP->fx_addsy = add_symbol; fixP->fx_subsy = sub_symbol; fixP->fx_offset = offset; - fixP->fx_dot_value = dot_value; - fixP->fx_dot_frag = dot_frag; + fixP->fx_dot_frag = symbol_get_frag_and_value (&dot_symbol, + &fixP->fx_dot_value); fixP->fx_pcrel = pcrel; fixP->fx_r_type = r_type; fixP->fx_pcrel_adjust = 0; --- a/gas/write.h +++ b/gas/write.h @@ -170,8 +170,6 @@ struct reloc_list extern int finalize_syms; extern symbolS *abs_section_sym; -extern addressT dot_value; -extern fragS *dot_frag; extern struct reloc_list* reloc_list; extern void append (char **, char *, unsigned long); --- a/gas/symbols.c +++ b/gas/symbols.c @@ -2814,6 +2814,23 @@ symbol_get_frag (const symbolS *s) return s->frag; } +/* Return the frag of a symbol and the symbol's offset into that frag. */ + +fragS *symbol_get_frag_and_value (const symbolS *s, addressT *value) +{ + if (s->flags.local_symbol) + { + const struct local_symbol *locsym = (const struct local_symbol *) s; + + *value = locsym->value; + return locsym->frag; + } + + gas_assert (s->x->value.X_op == O_constant); + *value = s->x->value.X_add_number; + return s->frag; +} + /* Mark a symbol as having been used. */ void --- a/gas/symbols.h +++ b/gas/symbols.h @@ -189,6 +189,7 @@ extern offsetT *symbol_X_add_number (con extern void symbol_set_value_now (symbolS *); extern void symbol_set_frag (symbolS *, fragS *); extern fragS *symbol_get_frag (const symbolS *); +extern fragS *symbol_get_frag_and_value (const symbolS *, addressT *); extern void symbol_mark_used (symbolS *); extern void symbol_clear_used (symbolS *); extern int symbol_used_p (const symbolS *);