From patchwork Wed Jan 22 09:09:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 105219 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 D903F3857BA5 for ; Wed, 22 Jan 2025 09:11:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D903F3857BA5 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=Q5b7CY6p X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by sourceware.org (Postfix) with ESMTPS id 541F0385843B for ; Wed, 22 Jan 2025 09:09:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 541F0385843B 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 541F0385843B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::333 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737536995; cv=none; b=ZSDgibW8X8RMKHQZGUvrxjdnsVtJEpceIHawFqn93iBapZQ+MJh7suVuMpLdqylOK55Ry4GY6QMJ0uzIgAjroN04fUqicliGzujCW3asIPIUVGnSQ7YO+65nnI/P43JW6aREFYK0SXxHho07SPxZQSyvC38yFapc1TtB5iq9Rw4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737536995; c=relaxed/simple; bh=wbvKGpjzDYUxryBlKPA+2d4HmksNDHQ4DlBAhc8JnGY=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=Lx8PWhok+FhUoJ3nPmZTkFcbANPSNuTZ/sKJX+movWZwMmcWHoCVzpqcmf8aAAaNgMegRsGRGQdXUZxudltDA7cv1VEt8A3QfE+1D/HwgCnT6BHe2ECMzIp6BexQifci9yl34oZzyg9d+uXaf2Q53Oim2O5MHxfzpM/ePcxGV4Q= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 541F0385843B Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-436a03197b2so46022715e9.2 for ; Wed, 22 Jan 2025 01:09:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1737536994; x=1738141794; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=GPOOnE6nSzp7OTz4jUqG4enY8N7aq7zMhCM1Ryk4d3w=; b=Q5b7CY6pghYcz+/ur6YmwE/adoVHWDVsqKgrckCNYpdRg8nbio502kdZBxPJKMKBMH pihK2+Catb09wE9W1azC3UITFUkNSkdyzkDkqmnx1VBlOSG9JnF0CI0lGbv1jTBmdq9H hxJutf5cmBfvr0+ltNlT+0vDn1W6bMaQxzwe8h3Cm0Qy5vIXvOFK5MNMYzLz+D64uk+E SF9Dq1AvRxmwX3PgTuFbyWkK5bm5OpDitY0bJu/bHboI5UolI2ORI2Iqedog7knDIHYx BpEzK0tVlt5NJjp014XcSfmflLWKIhxKLmJfvmTHg9dbyLeep22fqxHviM7Nu1qYqKjU X6gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737536994; x=1738141794; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=GPOOnE6nSzp7OTz4jUqG4enY8N7aq7zMhCM1Ryk4d3w=; b=L+jp8/rqFnmVOgda1qkbut1yjnnKX5akvn/7XtRtL43pKTW6GNyLJVObIcK0pm1X5T TcfN/BiAAAuP8ZZr1EymBsbl+fxO1Ru0O1+xDi/SdzJouwU5JfcQEjVafeEqhOSWmzlS bvbBTAYta4Ih5jxzAhjPFH+4PA1t5Xw1xymbKiWd/R8t2LaHwummzQlJ6UXqCo0SdYES kMXbLE48iVMxBQAPuaR2DCoxus+qbWmP3AcMBmDfz5yiOtnbSVNBczrDJpAV8D/vWZuX KHRKefzx87QoepliFaa+JJzO2Y3xuAyz6FjN3qSfU/lGtvq88H7BDnO+VTtt6iXc1QY1 B6eQ== X-Gm-Message-State: AOJu0YwdrP2rUVV5SfakzVIHXSvHJ4Z8CvOo/ojNPQLz/khm3JM34qwT z9UW8HTCbjqlRfwkjdRhvLplU7blOlKWibYIzOYAPS7l37ofuWPyVWlWzBNuYqEpqMPzkZ5AJeY = X-Gm-Gg: ASbGncsKT5iyhpKP63fDulByQSjrHQyy04jJgEljtmkqsp5ypLqlKjsglhKxQa5/0bY TGY1sJUzRZ9qdoN6W8mVba2xyLNtRG5uhVU+3FmIKVF+1ulEfLAMZrTKBn3hZ/nSr8YRg6Tyg0c VwRVCy454MW1SQW9Ypj95Ve+3WNMDuMOepje6orehKmsNpwyJpZcQCMj4eWkuihcW2UjblHa/kQ 84fnx66627x2fW5Z1jgN8OBK5fqOfIWbhCcfCodeF3Wuw6G/3B+Xqt9Q8HU0C22UVhi2WypOe50 rpstjm8vPwV03GATjs+I2kHHXnksaNPIGHq3IgR5s5jOivEgY1SSp4c= X-Google-Smtp-Source: AGHT+IH0OVUPmrWxVlSZV0deQx3A49ie5ShQL2/D050a5i25qAL8VBaABDDpGyVf3yXk4+2/9Iq9CQ== X-Received: by 2002:a05:600c:46cc:b0:434:a468:4a57 with SMTP id 5b1f17b1804b1-43891436f39mr162117725e9.26.1737536993944; Wed, 22 Jan 2025 01:09:53 -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-438b31a1e69sm16747215e9.11.2025.01.22.01.09.53 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Jan 2025 01:09:53 -0800 (PST) Message-ID: <3808733b-a63f-45fa-b53f-568f9bb5b14c@suse.com> Date: Wed, 22 Jan 2025 10:09:52 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH RFC 1/2] gas: also maintain signed-ness for O_big expressions From: Jan Beulich To: Binutils References: <8792933c-6130-435e-80de-98fbb89fbada@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: <8792933c-6130-435e-80de-98fbb89fbada@suse.com> X-Spam-Status: No, score=-3022.3 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 Interestingly emit_leb128_expr() already assumes X_unsigned is properly set for O_big. Adjust its conversion-to-bignum to respect the incoming flag, and have convert_to_bignum() correctly set it on output. It further can't be quite right that convert_to_bignum() depends on anything other than the incoming expression. Therefore adjust emit_expr_with_reloc() to be in line with the other invocation. This also requires an adjustment for SH, which really should have been part of 762acf217c40 ("gas: maintain O_constant signedness in more cases"). --- While for some more values .octa now emits correct data, for some other inputs its behavior remains questionable. Furthermore while .octa and .sleb128 now emit the same (wrong) numerical value for e.g. "0x7fffffffffffffff * -2", this is effectively a regression for .octa (if we were to assume that .octa with such expressions is supposed to work in the first place). The problem, aiui, is that X_unsigned and X_extrabit aren't properly updated when constant expressions are resolved right away (i.e. while still parsing the expression), unlike for unary operators. See also https://sourceware.org/pipermail/binutils/2024-December/138146.html. --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -544,6 +544,7 @@ sh_optimize_expr (expressionS *l, operat add_to_result (l, symval_diff, symval_diff < 0); l->X_op = O_constant; l->X_add_symbol = 0; + l->X_unsigned = 0; return 1; } return 0; --- a/gas/expr.c +++ b/gas/expr.c @@ -632,6 +632,7 @@ integer_constant (int radix, expressionS /* Not a small number. */ expressionP->X_op = O_big; expressionP->X_add_number = number; /* Number of littlenums. */ + expressionP->X_unsigned = 1; input_line_pointer--; /* -> char following number. */ } } @@ -707,6 +708,7 @@ mri_char_constant (expressionS *expressi { expressionP->X_op = O_big; expressionP->X_add_number = i; + expressionP->X_unsigned = 1; } else { @@ -1154,6 +1156,8 @@ operand (expressionS *expressionP, enum if (generic_bignum[i]) break; } + + expressionP->X_unsigned = 0; } else if (op == O_logical_not) { --- a/gas/expr.h +++ b/gas/expr.h @@ -131,10 +131,12 @@ typedef struct expressionS unsigned char X_op; #endif - /* Non-zero if X_add_number should be regarded as unsigned. This is - only valid for O_constant expressions. It is only used when an - O_constant must be extended into a bignum (i.e., it is not used - when performing arithmetic on these values). + /* Non-zero if the expression value should be regarded as unsigned. This is + only valid for + - O_constant expressions, where it is only used when an O_constant must be + extended into a bignum (i.e., it is not used when performing arithmetic + on these values), + - O_big integer expressions, i.e. when X_add_number is positive. FIXME: This field is not set very reliably. */ unsigned int X_unsigned : 1; /* This is used to implement "word size + 1 bit" arithmetic, so that e.g. --- a/gas/read.c +++ b/gas/read.c @@ -1477,6 +1477,7 @@ convert_to_bignum (expressionS *exp, int generic_bignum[i++] = sign ? LITTLENUM_MASK : 0; exp->X_op = O_big; exp->X_add_number = i; + exp->X_unsigned = !sign; } /* For most MRI pseudo-ops, the line actually ends at the first @@ -4646,8 +4647,8 @@ emit_expr_with_reloc (expressionS *exp, pass to md_number_to_chars, handle it as a bignum. */ if (op == O_constant && nbytes > sizeof (valueT)) { - extra_digit = exp->X_unsigned ? 0 : -1; - convert_to_bignum (exp, !exp->X_unsigned); + extra_digit = exp->X_unsigned ? 0 : -exp->X_extrabit; + convert_to_bignum (exp, -extra_digit); op = O_big; } @@ -5366,12 +5367,14 @@ emit_leb128_expr (expressionS *exp, int } else if (op == O_constant && sign - && (exp->X_add_number < 0) == !exp->X_extrabit) + && (exp->X_unsigned + ? exp->X_add_number < 0 + : (exp->X_add_number < 0) != exp->X_extrabit)) { /* We're outputting a signed leb128 and the sign of X_add_number doesn't reflect the sign of the original value. Convert EXP to a correctly-extended bignum instead. */ - convert_to_bignum (exp, exp->X_extrabit); + convert_to_bignum (exp, !exp->X_unsigned && exp->X_extrabit); op = O_big; } --- a/gas/testsuite/gas/all/octa.d +++ b/gas/testsuite/gas/all/octa.d @@ -14,3 +14,11 @@ Contents of section .data: [^ ]* (00000000 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 00000000) .* [^ ]* (00000080 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 80000000) .* [^ ]* (01000000 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 00000001) .* + [^ ]* (00000000 000000f0 ffffffff ffffffff|ffffffff ffffffff f0000000 00000000) .* + [^ ]* (00000000 00000010 00000000 00000000|00000000 00000000 10000000 00000000) .* + [^ ]* (ffffffff ffffffef ffffffff ffffffff|ffffffff ffffffff efffffff ffffffff) .* + [^ ]* (01000000 00000010 00000000 00000000|00000000 00000000 10000000 00000001) .* + [^ ]* (01000000 000000f0 ffffffff ffffffff|ffffffff ffffffff f0000000 00000001) .* + [^ ]* (feffffff ffffff0f 00000000 00000000|00000000 00000000 0fffffff fffffffe) .* + [^ ]* (02000000 000000f0 ffffffff ffffffff|ffffffff ffffffff f0000000 00000002) .* + [^ ]* (fdffffff ffffff0f 00000000 00000000|00000000 00000000 0fffffff fffffffd) .* --- a/gas/testsuite/gas/all/octa.s +++ b/gas/testsuite/gas/all/octa.s @@ -9,3 +9,13 @@ .octa ~0xffffffff .octa 0 - 0x80000000 .octa 0 - 0xffffffff + + .octa ~0xfffffffffffffff + .octa -~0xfffffffffffffff + .octa ~-~0xfffffffffffffff + .octa -~-~0xfffffffffffffff + + .octa -0xfffffffffffffff + .octa ~-0xfffffffffffffff + .octa -~-0xfffffffffffffff + .octa ~-~-0xfffffffffffffff From patchwork Wed Jan 22 09:10:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 105220 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 A54053858019 for ; Wed, 22 Jan 2025 09:13:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A54053858019 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=Y3W/qchs X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by sourceware.org (Postfix) with ESMTPS id 62C173857BA7 for ; Wed, 22 Jan 2025 09:10:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 62C173857BA7 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 62C173857BA7 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737537058; cv=none; b=TZ1IAuhsmmWTgPzCSye/B1KUtVds8NJIVOGO1u1vAE1H4/JWP9Mfbpkj53jT8JrazvSEVfcsI6kl2N1Y7WYazAvjD5xNRFIuKwLQ4tl72e/RWvkk6nSY8774fwpnuIaE5zc4+RzXJ+BG9vBSu3X8zoE6gdpTWMW5fAPhkDW0ftI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737537058; c=relaxed/simple; bh=P6cWQGQg+1ZTJyWT6PccGmCtupsF86onhpRBPOBe+Og=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=okNxe/1SHZlQsagX04sz/XalBrZwrrGKAczgwtdGvGNzkZyD+lWUduuHHJAaWCgPcx8rkHJB5K8oK2teu/jGzy/gfFxs2VIxDBX/0IlRxHUMUx6eevnDpl8Bvs3FsNviorYHwGuACtEcb28/c6H5sgvXbfwGrEGAAHk+SrqvhFs= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 62C173857BA7 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-43618283d48so47375525e9.1 for ; Wed, 22 Jan 2025 01:10:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1737537057; x=1738141857; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=EV/2nccVU+fr5R8MX7KUPkSKCInZ5jZHjC8N+MNEk6o=; b=Y3W/qchsZTMXDBjMEaNNB+KTN33ZdR1xDnklfhP5mSVD5j3WE3BnEktHutoBeatpAB VyW9sGiNXAehsDnYoIujRdpMbKAuLDStNDcbbqtzT4iuvTmL76bcG2V17ySmmW9fIFgz nOCGrHklnsqdony/E9ThLjkz1Q5ojfjUllbn0Yh0sLklmnobT3VQro8mwfgzkOWkXJ5m peSryKKCyBFdcKwAFrc/imiq+5+AuBKNkbanLoV0H86/qhhXqHA+hRB3fmTYiPXqBTCC WRIcoZKUSDr/S1d2lDsCFahSuT+lxe5NvM3brKYGQfd9f7I6+DnrPu7yvygxbkwLezp0 PPoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737537057; x=1738141857; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EV/2nccVU+fr5R8MX7KUPkSKCInZ5jZHjC8N+MNEk6o=; b=gydrkXYGVzdAI6U9P7h/D6fyFy0ZowWYh8YDrGlrq47UnuMwedHU9yQJrMz7JXL04s X4Qoz9YMCun6nyIvmRlUUDHhtZMZghhprkWUJi1IMmGVYXrsERuu6MlAMAyjBDHKHfVz XHX92V0H2B9D/Qau9PX69UpUU7okR6MXBizmO3uRJvSzDLUFgC5adMVxQECsztfI2OOP OBukqENymUNC3G/RFgIFOqyxFIGp0gq2lh82M7oP2wYaKOaEtyb7nvw4Uc+au7z2Meae 4wYv7dqUsor+LPCx/Gf4k5L34uOfsyogs5+D7n5chyILFIKWJzImil4zd3XCkNZDxy1E NM5w== X-Gm-Message-State: AOJu0YyY7MjJsGA0CWDgmF0noQzHWoulpkyV8XttdJYpyQcoxATC2FmN qfgtTFTnVPmuRB/og+yLQpEV2GBflBjTkYQMrUmJu1wqCa5LQafAv8W/yc3YUXEiyFb7TXn4xOU = X-Gm-Gg: ASbGncsDFW6N/afzL/yaKz45S5XI1mmoJR4tW80K/T6uqlI8W0lG8t9h1M536Oqhkbg 6JtSoW/U3ldwXrndc2FeYAzAAyO3uOUAGUxRc+bGWJIuKZ7tUlCxS6Q59XZnjAmpjj5ScsOJv4F J5Wcn7XBSOjKwSFxOyjAd8xkreFGYj3ZDZX+aejbNq9OY3nAOky+50Ra1c9kXrQlrWcPGv5FIYD bgfqbT7Lnblb23vKxxnGPfDRJnJjk7Qyyh2R0vd9fl/0GZ57LDmHLARy23Y37nw7g9fWs7Vyd5b YAdEozwthJW0QfgwrCkrFG3Jf5Oh1lPSWxzYCbXNMgZsJZjG/P7JOAw= X-Google-Smtp-Source: AGHT+IG9WxHFDEsqb/R06eNpIIlAwycuTo66dAuqFGB8xHItBAYHisjW01asrD66lY7pbCpElNYC7g== X-Received: by 2002:a05:600c:a03:b0:434:fe3c:c67c with SMTP id 5b1f17b1804b1-43891437530mr176698635e9.26.1737537057017; Wed, 22 Jan 2025 01:10:57 -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-438b31adcc3sm16818975e9.18.2025.01.22.01.10.56 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Jan 2025 01:10:56 -0800 (PST) Message-ID: <93aa767b-8761-40f0-b735-edc10d52b116@suse.com> Date: Wed, 22 Jan 2025 10:10:56 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 2/2] gas: switch convert_to_bignum() to taking just an expression From: Jan Beulich To: Binutils References: <8792933c-6130-435e-80de-98fbb89fbada@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: <8792933c-6130-435e-80de-98fbb89fbada@suse.com> X-Spam-Status: No, score=-3022.3 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 Both callers, despite spelling things differently, now pass the same input for its 2nd parameter. Therefore, as was supposed to be the case anyway, this 2nd parameter isn't needed anymore - the function can calculate "sign" all by itself from the incoming expression. Instead make the function return the resulting value, for emit_expr_with_reloc() to consume for setting its "extra_digit" local variable. --- a/gas/read.c +++ b/gas/read.c @@ -1456,14 +1456,15 @@ read_a_source_file (const char *name) #endif } -/* Convert O_constant expression EXP into the equivalent O_big representation. - Take the sign of the number from SIGN rather than X_add_number. */ +/* Convert O_constant expression EXP into the equivalent O_big + representation. */ -static void -convert_to_bignum (expressionS *exp, int sign) +static bool +convert_to_bignum (expressionS *exp) { valueT value; unsigned int i; + bool sign = !exp->X_unsigned && exp->X_extrabit; value = exp->X_add_number; for (i = 0; i < sizeof (exp->X_add_number) / CHARS_PER_LITTLENUM; i++) @@ -1478,6 +1479,8 @@ convert_to_bignum (expressionS *exp, int exp->X_op = O_big; exp->X_add_number = i; exp->X_unsigned = !sign; + + return sign; } /* For most MRI pseudo-ops, the line actually ends at the first @@ -4647,8 +4650,7 @@ emit_expr_with_reloc (expressionS *exp, pass to md_number_to_chars, handle it as a bignum. */ if (op == O_constant && nbytes > sizeof (valueT)) { - extra_digit = exp->X_unsigned ? 0 : -exp->X_extrabit; - convert_to_bignum (exp, -extra_digit); + extra_digit = -convert_to_bignum (exp); op = O_big; } @@ -5374,7 +5376,7 @@ emit_leb128_expr (expressionS *exp, int /* We're outputting a signed leb128 and the sign of X_add_number doesn't reflect the sign of the original value. Convert EXP to a correctly-extended bignum instead. */ - convert_to_bignum (exp, !exp->X_unsigned && exp->X_extrabit); + convert_to_bignum (exp); op = O_big; }