From patchwork Fri Mar 7 14:22:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 107508 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 59A1C3858C52 for ; Fri, 7 Mar 2025 14:24:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 59A1C3858C52 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=ciIgfRgs X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by sourceware.org (Postfix) with ESMTPS id 2F0F83858CD9 for ; Fri, 7 Mar 2025 14:22:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2F0F83858CD9 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 2F0F83858CD9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::436 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357349; cv=none; b=CZSlmq0iPDFSDwZYtTR+JJnr50/j4r0twbVmsJ2M6L3Hc7dDFIW4nij4tGUIMF2bP4TmTSVMAc7chZ1a5n+xo4r+AhjzXCIkqynWnF0PrrGLRLo5aKgsrZ8UAmGK15An9m2OVrn5zCIK5qZ5zmw4krrFvIc9k+qpNqaQnutDZ68= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357349; c=relaxed/simple; bh=cIQlZ+C9lqKGG0m6riuOmhDISCbDdbvrFTBXjuszKNI=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=xgfm/JFKAMYSqrw8apvIJgSaXyQoVuhKed8XUkcY92n9Y728E43nxJnG6HNOYzDDcqzNvNzuRK48r+xbRrpzXu6Scg1xoUVr51vEtItcx/3MT4Z+wFL1lAnAr72frd5z4jyi4OOLT5OAo9FPXrQnsPaYpeQJkJBRtDUy7Q0xKFM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2F0F83858CD9 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-391342fc148so474906f8f.2 for ; Fri, 07 Mar 2025 06:22:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1741357348; x=1741962148; 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=C9JlQCBpqWVKA6+gBIzQgUxKvPlXGlzFokKFpDmQMdw=; b=ciIgfRgsDm/FPmVZ/GIuQdjNu6o4UJAYUY4aOAyaeL1vCSwRETbD7HBb+rlFuMmS8y 9E531zueJv6xwzQwWNB4oklCcyHxCk8pbgtnnVkqBXMNq5UsYLDF1eSyBi5e3tSWE21w 197FqpsNQiy7wwcEtsCTry6lOrxZS0hcO+Soc/W8gsM/VD7xgYldsFQiUFgoIfNY3PcF 6aUv6imDAhgIi/4urqfxUXJzG4aJvDHYiROmjmWLKfOI3C3C4JBf6XUhOwN0CxcDrpni mkyVe8WgkpzU+r3ZFEgDp4WNqGyLVSCv0x4/kRl46tDZOyqzKr/u+zATogfKqh8YfkVi hrRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741357348; x=1741962148; 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=C9JlQCBpqWVKA6+gBIzQgUxKvPlXGlzFokKFpDmQMdw=; b=njs3qD3NHCoI/niDzcCeFFVqhcQXleu04IUkhp7POTFYiu1qyHq80qa6vEScGechVs ocuf+3i2ilxQZJi4ma2OlzAMyjrGOojDvEuz8pf2YNTzZm3BTRtqJUTV98xVn5mGUEB/ c2+0hLjvoC7Yb7m5vyfPFX0IT674+eD2WvYhGBzQwTG7nns6nJ4WO5hMChTOMaYES5J6 r4ep8fojsubKnrkXjCLFZEPvWDo27X+zXnMvqDCX0CGLp8t9liDUPoygeTh6XiVX4Y0r GB9aneMSwCJenGLy0ceTCWE2d1mLd6D/bXVlABobJNC8mHB2Ms91nksJ24/SjswUcA5y lwWw== X-Gm-Message-State: AOJu0Yw7zfFkHANt6fNkeaT5wz5wFqOHWGNdf6DCVSfOkfEPibysMdsX mohimIGdmAeeLvUzNNHGOZIfLdDskvWsmLCc0bpleewBvEHfbUMwW447hUaDYperjiP7O9AHSLY = X-Gm-Gg: ASbGncvhEmbJebuLTDBXXJ8pV72wEndpCyGDP/3WCrvouF9uLSudi4w020Npdyx1R1G rKbKpTZQzCD9iTGczECm7fTHoZD8HRvO9N7rgYNJir6BZKweaq5N47XFiiXNw2KIzqEwWQ5cirM rFhAWI84TcHDKVgm8XSqGlV9bTOdMsrfSpc+tUeNSnkwb0DrNdTn0Ocd4yAgy7HaRLFDQS7deyS noT9hLh8Mfx6FGnC6k3cVWQhk9FfmURDZUo4sMTGzV44W2tm+27OaBO4qHM8LeWrCbung22Ifh8 MCJ02mIOAQXuCZFO/oeh1x/4Ze+J6g3jO4Aox1MksEnnMhQCgLmx84zp2O0DVI+4wIdPHV/0C9Y Z2YkeVySC3jc7KAwAE1F7ypVQasRLkA== X-Google-Smtp-Source: AGHT+IG4lSqfOCAgUhRKEPjTXubHr/cciWdFaPTvSBMy6LS/pYgVPJbXEMJvN5OWRgDAYaKLE2XjCA== X-Received: by 2002:a5d:47a2:0:b0:38f:28dc:db58 with SMTP id ffacd0b85a97d-39132d66aecmr2382584f8f.10.1741357347682; Fri, 07 Mar 2025 06:22:27 -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 ffacd0b85a97d-3912bfdfdfdsm5634826f8f.34.2025.03.07.06.22.27 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Mar 2025 06:22:27 -0800 (PST) Message-ID: <88a3782d-0cfd-46eb-8796-5081e70dadce@suse.com> Date: Fri, 7 Mar 2025 15:22:26 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 1/5] gas: deal with the need for relocations from .cfi_{escape,fde_data} From: Jan Beulich To: Binutils References: 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: X-Spam-Status: No, score=-3021.5 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 Ignoring return values often isn't a good idea. The Sparc assembler in particular would report an internal error if an expression with relocation specifier is used with .cfi_escape, when the same works fine with .byte. Propagate the relocation indicator up from do_parse_cons_expression(), and eventually into emit_expr_with_reloc(). dot_cfi_fde_data(), only retaining the expression's X_add_number, would require further work. Simply report the lack of support there. While there, also check that what we were dealt is actually a constant. --- Really value truncation better would also be reported for .cfi_fde_data. Question is whether dot_cfi_fde_data() wouldn't better share parsing code with dot_cfi_escape(), for data to then be emitted for both via emit_expr_with_reloc(). Problem is I know nothing about EH_COMPACT_*, and hence I'd be at risk of breaking stuff if I blindly did such a conversion. --- v2: Re-base. --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -947,7 +947,7 @@ dot_cfi_escape (int ignored ATTRIBUTE_UN do { e = notes_alloc (sizeof (*e)); - do_parse_cons_expression (&e->exp, 1); + e->reloc = do_parse_cons_expression (&e->exp, 1); *tail = e; tail = &e->next; } @@ -1419,7 +1419,10 @@ dot_cfi_fde_data (int ignored ATTRIBUTE_ do { e = XNEW (struct cfi_escape_data); - do_parse_cons_expression (&e->exp, 1); + e->reloc = do_parse_cons_expression (&e->exp, 1); + if (e->reloc != TC_PARSE_CONS_RETURN_NONE + || e->exp.X_op != O_constant) + as_bad (_("only constants may be used with .cfi_fde_data")); *tail = e; tail = &e->next; num_ops++; @@ -1761,7 +1764,7 @@ output_cfi_insn (struct cfi_insn_data *i { struct cfi_escape_data *e; for (e = insn->u.esc; e ; e = e->next) - emit_expr (&e->exp, 1); + emit_expr_with_reloc (&e->exp, 1, e->reloc); break; } --- a/gas/dw2gencfi.h +++ b/gas/dw2gencfi.h @@ -97,6 +97,7 @@ struct cfi_escape_data { struct cfi_escape_data *next; expressionS exp; + TC_PARSE_CONS_RETURN_TYPE reloc; }; struct cfi_insn_data --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -1345,7 +1345,10 @@ sframe_xlate_do_escape_expr (const struc if ((i == 2 && (items[1] != 2)) /* Expected len of 2 in DWARF expr. */ /* We do not care for the exact values of items[2] and items[3], so an explicit check for O_constant isnt necessary either. */ - || i >= CFI_ESC_NUM_EXP || (i < 2 && e->exp.X_op != O_constant)) + || i >= CFI_ESC_NUM_EXP + || (i < 2 + && (e->exp.X_op != O_constant + || e->reloc != TC_PARSE_CONS_RETURN_NONE))) goto warn_and_exit; items[i] = e->exp.X_add_number; i++; @@ -1408,7 +1411,8 @@ sframe_xlate_do_escape_val_offset (const while (e->next) { e = e->next; - if (i >= CFI_ESC_NUM_EXP || e->exp.X_op != O_constant) + if (i >= CFI_ESC_NUM_EXP || e->exp.X_op != O_constant + || e->reloc != TC_PARSE_CONS_RETURN_NONE) goto warn_and_exit; items[i] = e->exp.X_add_number; i++; @@ -1482,7 +1486,7 @@ sframe_xlate_do_cfi_escape (const struct if (!e) return SFRAME_XLATE_ERR_INVAL; - if (e->exp.X_op != O_constant) + if (e->exp.X_op != O_constant || e->reloc != TC_PARSE_CONS_RETURN_NONE) return SFRAME_XLATE_ERR_NOTREPRESENTED; firstop = e->exp.X_add_number; @@ -1493,7 +1497,8 @@ sframe_xlate_do_cfi_escape (const struct while (e->next) { e = e->next; - if (e->exp.X_op != O_constant || e->exp.X_add_number != DW_CFA_nop) + if (e->exp.X_op != O_constant || e->exp.X_add_number != DW_CFA_nop + || e->reloc != TC_PARSE_CONS_RETURN_NONE) { warn_p = true; break; --- a/gas/read.c +++ b/gas/read.c @@ -4186,14 +4186,15 @@ parse_mri_cons (expressionS *exp, unsign /* This function is used by .cfi_* directive handling, and hence must not invoke parse_repeat_cons(). */ -void +TC_PARSE_CONS_RETURN_TYPE do_parse_cons_expression (expressionS *exp, int nbytes ATTRIBUTE_UNUSED) { #ifdef TC_PARSE_CONS_EXPRESSION - (void) TC_PARSE_CONS_EXPRESSION (exp, nbytes); + return TC_PARSE_CONS_EXPRESSION (exp, nbytes); #else expression (exp); + return TC_PARSE_CONS_RETURN_NONE; #endif } --- a/gas/read.h +++ b/gas/read.h @@ -159,7 +159,7 @@ extern void stabs_begin (void); extern void stabs_end (void); extern void do_repeat (size_t, const char *, const char *, const char *); extern void end_repeat (int); -extern void do_parse_cons_expression (expressionS *, int); +extern TC_PARSE_CONS_RETURN_TYPE do_parse_cons_expression (expressionS *, int); extern void generate_lineno_debug (void); extern void do_align (unsigned int align, char *fill, unsigned int length, unsigned int max); --- a/gas/testsuite/gas/cfi/cfi.exp +++ b/gas/testsuite/gas/cfi/cfi.exp @@ -105,6 +105,7 @@ if { [istarget "i*86-*-*"] || [istarget set nm_status [gas_host_run "$NM $NMFLAGS --help" ""] run_dump_test "cfi-sparc-1" + run_dump_test "cfi-sparc-2" if { [regexp "elf64\[_-\]sparc" [lindex $nm_status 1]] } then { run_dump_test "cfi-sparc64-1" } --- /dev/null +++ b/gas/testsuite/gas/cfi/cfi-sparc-2.d @@ -0,0 +1,12 @@ +#readelf: -r +#name: .cfi_escape on SPARC w/ reloc specifier +#as: -32 + +Relocation section '.rela.data' at offset 0x[0-9a-f]+ contains 1 entry: + Offset Info Type Sym\.Value Sym\. Name \+ Addend +[0-9a-f]+ +[0-9a-f]+ R_SPARC_DISP8 +[0-9a-f]+ +\.data \+ 1 + +Relocation section '.rela.eh_frame' at offset 0x[0-9a-f]+ contains 2 entries: + Offset Info Type Sym\.Value Sym\. Name \+ Addend +[0-9a-f]+ +[0-9a-f]+ R_SPARC_DISP32 +[0-9a-f]+ +\.text \+ 0 +[0-9a-f]+ +[0-9a-f]+ R_SPARC_DISP8 +[0-9a-f]+ +\.eh_frame \+ [0-9a-f]+ --- /dev/null +++ b/gas/testsuite/gas/cfi/cfi-sparc-2.s @@ -0,0 +1,16 @@ + .data + .byte %r_disp8(1f-1) + .byte 0x50 +1: + + .text +func: + .cfi_startproc + nop + .cfi_escape 0x10 ! DW_CFA_expression + .cfi_escape 0 ! reg0 + .cfi_escape %r_disp8(.Lend-1) + .cfi_escape 0x50 ! DW_OP_reg0 + .cfi_label .Lend + ret + .cfi_endproc From patchwork Fri Mar 7 14:23:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 107509 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 993F43858D39 for ; Fri, 7 Mar 2025 14:25:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 993F43858D39 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=PYTuMBQH X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by sourceware.org (Postfix) with ESMTPS id A178D3858CD9 for ; Fri, 7 Mar 2025 14:23:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A178D3858CD9 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 A178D3858CD9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357399; cv=none; b=b1zs0VKUGM3PshcEA7FOMRKrOLtVUsEmZPX/FekN8Zx2S36KEFD8y7bGndGpJJVzP+iV2+0DeNg2NHsUHg1E7eVeDER8/Bzf176Ha2gRdnRjE7EnCgVUOgUmYSbmPxBfWO9aRWY68ZVsHG5joa8zTxX3zKf3+dukpEoItbIGSDU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357399; c=relaxed/simple; bh=q/TWLxSzBojP9gAXuFeb2WQO4cXSPHt9kavFNpQH7qQ=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=l+dDhTNMFC6W/4N7loEaW36OvmB21QWz+OQA8+5G6kt68MurLVAliWs1ftsHTM5LQSAvS0uAgeUraKEtCfO5+rFI0ZRUtrZeyv+h5+qpNbBvcX8kQRwJM+m+2bSaS7RXDufWlTeu45rF6ERcEae8PAbHovRTUXjIaU7SNkSlNTg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A178D3858CD9 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-43bd87f7c2eso10964445e9.3 for ; Fri, 07 Mar 2025 06:23:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1741357397; x=1741962197; 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=zXecwx2fqXzBHenVh3pYpidh8mc7E3+AmMpkiawGJV4=; b=PYTuMBQHzf79Q/uUkdAsoT/Tde1BPsyXDc+gchOvecj/vbLmqdyZO8KROH2FPp9aHg vr+SXddswAnjl1S/kJ6zPXiZiZxJEaSDSK48aFBxgYzzCqUPn8gRUTAhHFjjQWVR24Pw FMyCmUuWX/sv9lfMu33RAYR3AAf7P9MxMtAz4kB1pv58nSMbl706JJMQXKG8SqnHXc6D O8V27knBPZ0x2HBErAfoqIAXJ/bBLAqzaZTrG4yJa3GviZeSBb3E85taL7HiTf0Gqo2w JtSBSDBqGwYhkWr4DfXviJX3NEeU1odYpdouzI/HDFqqZOc42OZxwNyyJruwRfEXn2oq itWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741357397; x=1741962197; 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=zXecwx2fqXzBHenVh3pYpidh8mc7E3+AmMpkiawGJV4=; b=TnPLl8sYGSIE/C7Rgwl1D2NvQZisipo0e9Y3vd/LhivzkcadSQcI2OFDjyPohXZIOV cz0C1dYsXfk9e+EqhLwXJfYxlIW/VHzuWzfDWB9AvgQBcr5RqaAz0gNmUrx81rv5iH3t 1jppEd3JBCq1YEusVDpdiraJHcnCLm1PGzwvwQqY+uahu6VyUaCbqPU2DWzwGpJ4EMk3 HzwHzjvEyGoyuWMCMa2CpnLFLIg1suyExzcIq3EQ0EeDNe4pNqC8gVQlS2SH2Lsbi+8v RHER3lz6hyoPMn32Q6MIt1afDjgQjIbZJvKNQcWU6JbH2Eco5uasKOglDjpCIgX8uNOp gh3g== X-Gm-Message-State: AOJu0YzMchvsc/efd6hZ+uWF9WDzOuJGSNg7Hv5Xy7ch3An3lqUBK0Rs kaAqq3oO8kZA78DBZjOm7CvKKkdTZU1Zv97t1J/Cwdg8NoClU6L76HQNTrycd+ww1HyPXpoh9d0 = X-Gm-Gg: ASbGncsaeecqaIkfmDUTZOyCCm7n9Zb3Gd9EAM7LTbXeIn9AwAGfNlnUDQLmewOHpTM XpH/GwE3Y+4OWU4koD0eEk2QdSGFvufuxCrLqojqU+a2lyKLPNgytwmcQy+4uGk06yVEsGTBPFy 3RbtR0mmFtIbph0PiG3XGOyKyiblcF18UI3M/EI1zuo/NUISDC4F+/+KnHSGBYKjq0P/5Xre3C+ Af/wzRKgv4dVUazYJlULe4jkMfgysl2JIFljj4+LKoRknEdGF4ehfqcKAs6VGXS8EGxoJG9sIrZ +bwTCldxmQHYVpCKRlPHNdlmdeEQgZkcKNqdGC0HCsEjFK5Rd4Y7dCFcrXsKVP8NU3efdnbd/gN 0AWKGxveZTsa3aZEuhnilpWj1+8wnCw== X-Google-Smtp-Source: AGHT+IGEHyXulFZsjYzB2uFrxHgQhUL7rU5xw3u/MJVAZwAVoPJ/XNNzrcM/3NaPHTQXQlxrLGqaRQ== X-Received: by 2002:a05:600c:468a:b0:43a:ed4d:716c with SMTP id 5b1f17b1804b1-43c5a631741mr23534145e9.22.1741357397047; Fri, 07 Mar 2025 06:23:17 -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-43bd4293250sm81835885e9.16.2025.03.07.06.23.16 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Mar 2025 06:23:16 -0800 (PST) Message-ID: <3245e758-3165-4355-baf5-6eb10955cd50@suse.com> Date: Fri, 7 Mar 2025 15:23:16 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 2/5] gas: include .cfi_* generated data in listing From: Jan Beulich To: Binutils References: 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: X-Spam-Status: No, score=-3021.5 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 These are data generating directives not overly different from e.g. .byte and .long. Whatever (directly) results from should also be represented in the listing, if one was requested. It's just that the output data is generated much later than the parsing of the directive arguments. --- a/gas/config/tc-alpha.c +++ b/gas/config/tc-alpha.c @@ -4059,7 +4059,8 @@ alpha_elf_md_finish (void) function symbol. This prevents problems with globals. */ cfi_new_fde (symbol_temp_new (S_GET_SEGMENT (p->func_sym), symbol_get_frag (p->func_sym), - S_GET_VALUE (p->func_sym))); + S_GET_VALUE (p->func_sym)), + false); cfi_set_sections (); cfi_set_return_column (p->ra_regno); --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -440,16 +440,25 @@ alloc_cfi_insn_data (void) *cur_fde_data->last = insn; cur_fde_data->last = &insn->next; SET_CUR_SEG (insn, is_now_linkonce_segment ()); +#ifndef NO_LISTING + insn->listing_ctxt = cur_fde_data->listing_ctxt ? listing_tail : NULL; +#endif return insn; } /* Construct a new FDE structure that begins at LABEL. */ void -cfi_new_fde (symbolS *label) +cfi_new_fde (symbolS *label, bool do_listing) { struct fde_entry *fde = alloc_fde_entry (); fde->start_address = label; + if (do_listing) + { +#ifndef NO_LISTING + fde->listing_ctxt = listing_tail; +#endif + } frchain_now->frch_cfi_data->last_address = label; } @@ -458,7 +467,12 @@ cfi_new_fde (symbolS *label) void cfi_end_fde (symbolS *label) { - frchain_now->frch_cfi_data->cur_fde_data->end_address = label; + struct fde_entry *cur_fde_data = frchain_now->frch_cfi_data->cur_fde_data; + + cur_fde_data->end_address = label; +#ifndef NO_LISTING + cur_fde_data->listing_end = cur_fde_data->listing_ctxt ? listing_tail : NULL; +#endif frchain_now->frch_cfi_data = NULL; } @@ -1279,7 +1293,7 @@ dot_cfi_startproc (int ignored ATTRIBUTE return; } - cfi_new_fde (symbol_temp_new_now ()); + cfi_new_fde (symbol_temp_new_now (), listing & LISTING_LISTING); SKIP_WHITESPACE (); if (is_name_beginner (*input_line_pointer) || *input_line_pointer == '"') @@ -2058,7 +2072,19 @@ output_fde (struct fde_entry *fde, struc for (; first; first = first->next) if (CUR_SEG (first) == CUR_SEG (fde)) - output_cfi_insn (first); + { +#ifndef NO_LISTING + if (eh_frame) + listing_override_tail (first->listing_ctxt); +#endif + output_cfi_insn (first); + } + +#ifndef NO_LISTING + /* Associate any padding with .cfi_endproc. */ + if (eh_frame) + listing_override_tail (fde->listing_end); +#endif frag_align (align, DW_CFA_nop, 0); symbol_set_value_now (end_address); @@ -2305,6 +2331,12 @@ cfi_finish (void) segT cfi_seg, ccseg; struct fde_entry *fde; struct cfi_insn_data *first; +#ifndef NO_LISTING + /* We may temporarily replace listing_tail, which otherwise isn't supposed + to be changing anymore. Play safe and restore the original value + afterwards. */ + struct list_info_struct *saved_listing_tail = NULL; +#endif int save_flag_traditional_format, seek_next_seg; if (all_fde_data == 0) @@ -2387,6 +2419,16 @@ cfi_finish (void) fde->end_address = fde->start_address; } +#ifndef NO_LISTING + { + struct list_info_struct *listing_prev + = listing_override_tail (fde->listing_ctxt); + + if (!saved_listing_tail) + saved_listing_tail = listing_prev; + } +#endif + cie = select_cie_for_fde (fde, true, &first, 2); fde->eh_loc = symbol_temp_new_now (); output_fde (fde, cie, true, first, @@ -2593,6 +2635,11 @@ cfi_finish (void) htab_delete (dwcfi_hash); dwcfi_hash = NULL; } + +#ifndef NO_LISTING + if (saved_listing_tail) + listing_tail = saved_listing_tail; +#endif } #else /* TARGET_USE_CFIPOP */ --- a/gas/dw2gencfi.h +++ b/gas/dw2gencfi.h @@ -52,7 +52,7 @@ extern void dot_cfi_sections (int); extern void cfi_finish (void); /* Entry points for backends to add unwind information. */ -extern void cfi_new_fde (struct symbol *); +extern void cfi_new_fde (struct symbol *, bool); extern void cfi_end_fde (struct symbol *); extern void cfi_set_last_fde (struct fde_entry *fde); extern void cfi_set_return_column (unsigned); @@ -106,6 +106,9 @@ struct cfi_insn_data #if MULTIPLE_FRAME_SECTIONS segT cur_seg; #endif +#ifndef NO_LISTING + struct list_info_struct *listing_ctxt; +#endif int insn; union { @@ -193,6 +196,10 @@ struct fde_entry symbolS *end_address; struct cfi_insn_data *data; struct cfi_insn_data **last; +#ifndef NO_LISTING + struct list_info_struct *listing_ctxt; + struct list_info_struct *listing_end; +#endif unsigned char per_encoding; unsigned char lsda_encoding; int personality_id; --- a/gas/scfidw2gen.c +++ b/gas/scfidw2gen.c @@ -133,7 +133,7 @@ scfi_dot_cfi_startproc (const symbolS *s return; } - cfi_new_fde ((symbolS *)start_sym); + cfi_new_fde ((symbolS *)start_sym, false); cfi_set_sections (); --- a/gas/listing.c +++ b/gas/listing.c @@ -431,6 +431,51 @@ listing_newline (char *ps) #endif } +/* Set listing context back to where it was when input was parsed, to allow + associating late code/data emission to segments with their origin. */ + +struct list_info_struct *listing_override_tail (struct list_info_struct *info) +{ + struct list_info_struct *prev = listing_tail; + const fragS *frag; + + if (!info) + return NULL; + + listing_tail = info; + + /* The first frag created by listing_newline() is still associated with the + earlier line. For the adjustment done below this property doesn't hold, + though. */ + frag = info->frag; + if (frag->line != info) + frag = frag->fr_next; + + /* Check whether there's any other output data already for this line. Replace + info->frag only if there's none. This is to cover for contributions to + multiple sections from a single line not being properly represented in the + listing, at the time of writing. Prefer the listing to show any "ordinary" + code/data contributions over any .eh_frame ones. (This way multiple .cfi_* + on a single line will also have all their contributions listed, rather + than just those from the last such directive.) */ + for (; frag; frag = frag->fr_next) + if (frag->line != info + || (frag->fr_type != rs_dummy + && (frag->fr_type != rs_fill + || frag->fr_fix + || (frag->fr_var && frag->fr_offset)))) + break; + + if (!frag || frag->line != info) + { + new_frag (); + info->frag = frag_now; + new_frag (); + } + + return prev; +} + /* Attach all current frags to the previous line instead of the current line. This is called by the MIPS backend when it discovers that it needs to add some NOP instructions; the added NOP --- a/gas/listing.h +++ b/gas/listing.h @@ -47,6 +47,7 @@ void listing_error (const char *message) void listing_file (const char *name); void listing_list (int on); void listing_newline (char *ps); +struct list_info_struct *listing_override_tail (struct list_info_struct *); void listing_prev_line (void); void listing_print (char *, char **); void listing_psize (int); --- a/gas/testsuite/gas/cfi/cfi.exp +++ b/gas/testsuite/gas/cfi/cfi.exp @@ -116,6 +116,11 @@ if { [istarget "i*86-*-*"] || [istarget run_list_test "cfi-diag-1" "" +# ARC and HPPA use ';' as comment char rather than as statement separator. +if { ![istarget "arc*-*-*"] && ![istarget "hppa*-*"] } then { + run_list_test "listing" "-aln --listing-cont-lines=1" +} + # HPPA64 uses 64-bit relocations, which results in all of the dump # offset numbers not matching up. if { ![istarget "hppa64*-*"] } then { --- /dev/null +++ b/gas/testsuite/gas/cfi/listing.l @@ -0,0 +1,27 @@ +[ ]*[0-9]*[ ]+\.text +[ ]*[0-9]*[ ]+func: +[ ]*[0-9]*[ ]+0000 (1[04]00 ?0000|0000 ?001[04])[ ]+\.cfi_startproc +[ ]*[0-9]*[ ]+0000 ?0000 * +[ ]*[0-9]*[ ]+[0-9a-f]{4} 0A[ ]+\.cfi_remember_state +[ ]*[0-9]*[ ]+0000 .*[ ]\.nop +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.0A[ ]+\.cfi_escape 0x0a +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.02 ?0002[ ]+\.cfi_escape 0x02, 0x00, 0x02, 0x00 +[ ]*[0-9]*[ ]+00 +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.03 ?0000[ ]+\.cfi_escape 0x03; .cfi_escape 0x00, 0x00 +[ ]*[0-9]*[ ]+[0-9a-f]{4} 0400 ?0000[ ]+\.cfi_escape 0x04; .cfi_escape 0x00, 0x00, 0x00, 0x00 +[ ]*[0-9]*[ ]+00 +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.0B[ ]+\.cfi_escape 0x0b +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.0B[ ]+\.cfi_restore_state +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+([0-9a-f]{4} [0 ]+)?\.cfi_endproc +[ ]*[0-9]*[ ]* +[ ]*[0-9]*[ ]+func2: +[ ]*[0-9]*[ ]+[0-9a-f]{4} (1[048]00 ?0000|0000 ?001[048])[ ]+\.cfi_startproc +[ ]*[0-9]*[ ]+(4[048]00 ?0000|0000 ?004[048]) * +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+([0-9a-f]{4} [0 ]+)?\.cfi_endproc +#pass --- /dev/null +++ b/gas/testsuite/gas/cfi/listing.s @@ -0,0 +1,22 @@ + .text +func: + .cfi_startproc + .cfi_remember_state + .nop + .cfi_escape 0x0a + .nop + .cfi_escape 0x02, 0x00, 0x02, 0x00 + .nop + .cfi_escape 0x03; .cfi_escape 0x00, 0x00 + .cfi_escape 0x04; .cfi_escape 0x00, 0x00, 0x00, 0x00 + .nop + .cfi_escape 0x0b + .nop + .cfi_restore_state + .nop + .cfi_endproc + +func2: + .cfi_startproc + .nop + .cfi_endproc From patchwork Fri Mar 7 14:23:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 107510 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 6F7C23858402 for ; Fri, 7 Mar 2025 14:28:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6F7C23858402 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=Nzi46QZ8 X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by sourceware.org (Postfix) with ESMTPS id 319EC3858408 for ; Fri, 7 Mar 2025 14:23:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 319EC3858408 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 319EC3858408 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357429; cv=none; b=CLLvve3n83fq2Z0n4J3W4bLSl0Mc1E310eKJ8g9DCQQNMO33S06clHHy/YI9qxi4jdP67QpRkBP9ZdTX37msktGgagNfXLYHXDYWZsdldp7vFoVrkYQ9Zt6BLI35fK0FsDuxNRTm+6j8hvSKiQP6lWQqy5TBHw3V7IOUX5rScQA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357429; c=relaxed/simple; bh=WY/KGPbgcI8Bd2m7g82K+G9fqmalg7CGR5/R1Vqt8cY=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=KXblPoa8mcorVE04y81792NWcOZBB1VdzLOtau6TspOgzr4X79jFTMZIQ3KSEMFw8jANfAnw3paAVnoXu/j7HFGR0igCix43dsgekcdbitwrfzNOgsLgiV3VxPbz3Qnvy1uyq/aC8snyJgWp8sxaf6UEuA+a4uzGaQyTLwYhFpw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 319EC3858408 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-43948021a45so16283905e9.1 for ; Fri, 07 Mar 2025 06:23:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1741357428; x=1741962228; 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=9iUM1n96NdLuFHHTQR3gAt2DIbab464g6sdoT2lJoG8=; b=Nzi46QZ8z0k3mBUeH1TIcuR2v+moTHhHJwoPjpjwYM3DzN/Axvd20Qk/OklCfI8qwe 5ILks2BT9Jkdat1SXYpxSP+Bygi1agIaFz+U5X3N8T7EVCvJmuexjpSLdZb/JAp52FYz SwWLQmALyUY8KNvmu0d1xdFGiYNrIxORrRAPjRZl7rxeAWH1g9ByD0rfYj5UuRbjfCws 71RQ7l987oRibhrh6fDxzX2D8Iy40j5CsLoZT0iBiOzo8ER2SoP+f9R5AgFQFOM2d4GM LTohHwZjRGWh8gVb91OCobSdYMtaw6aJn7P5Zg4AXHvREChRIt62lUeDS29xE/1VDV/c Argg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741357428; x=1741962228; 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=9iUM1n96NdLuFHHTQR3gAt2DIbab464g6sdoT2lJoG8=; b=LqHCzPVnUWPb0F4ikXQ0tNiqSd08JfiLH1/NZK0SQjvFCmJoLarzVqp4zCijLnZ6X7 bqtHBH2ew/vsy2Q4/J/mAoj4SflAdzy6Xrq4kONlvmBGWQhzq/DDtq7MCAR22hHa68iX WiG1WZANFpg7ecytF0y7WyyPsPpe8G0Ap6DY4t3FrIGuCl6ISqla3jkmrxf9AS5ACXoO 18gMICLwsdsxATiTQlKqCzNj6hbPV/DC0z4oDr/OLGbSeSFBzZd5kEOQctZL3BfQPz6E hei6JbvO75Loso5mzsYUpZC6uUPyOWXoTrKbRiL9rAnN8ul5+M95yDAYbHSs6a0a/Hta GvdQ== X-Gm-Message-State: AOJu0YwXT9Ti+m7rl95KkfnUUxtSIx0ylbE/2BwcuFi0ggj5anUUi0yx leGKQwsSInfgyxqXhr3jSeft/Jne4GK/1qqO5Eq8eHzhA8jM8PoAkdWXt37/wuKTJIat20b56gg = X-Gm-Gg: ASbGncuizD60WcsQvcLPgk3kDJMwyzCbuESjAGtEar34W+pGcM6Tji4W2woRIRlFvL6 3bVvs2QTZhAgadYN+2EnTOxm7e+UF/M0n2ofxoc+EI4DmGep2lUWXrMa6jar9ZKRybLbeLeUxLI cJ9A/0JmLLcdQg/He5UZAEU/LKul31kOxrDc8JDLH3InJWZCSj2VmdxZVv9/8UL+HxKIhP2ulqS n5gtVHmMPAhlkbDp6FSWHmm3Y4TmBh/RnFhjLWBYKXevj8dsPOCZTfi+Dj2kjK3Q+75Mrz2lqZC FfJURqlqhSwxFWJWQvUJvlCIWqWY1aFrMwlBPCOhxagpQuhPPARNS5gCciWzjPhqHxLSVJQOKlA p/l/LVk7/DBKI530cNStVGyeyaSOstA== X-Google-Smtp-Source: AGHT+IHX0Kp1DQfvroGIgnOcbGKrS0tm0ySyaEzxlS9kqcDwg4IGasjQDfHFL5of5RbPXRL8IzX7zQ== X-Received: by 2002:a5d:47cc:0:b0:390:f0ff:2c11 with SMTP id ffacd0b85a97d-39132d30b96mr2202557f8f.2.1741357427730; Fri, 07 Mar 2025 06:23:47 -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-43bd4293250sm81846555e9.16.2025.03.07.06.23.47 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Mar 2025 06:23:47 -0800 (PST) Message-ID: <559d82da-de29-4c92-b209-ed70912dbd1c@suse.com> Date: Fri, 7 Mar 2025 15:23:46 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 3/5] gas: make NO_LISTING work again From: Jan Beulich To: Binutils References: 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: X-Spam-Status: No, score=-3021.5 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 Presumably since no target enables this and there's also no configure control, builds with NO_LISTING defined didn't really work anymore. Convert fallback functions to macros and add #ifndef in a few places. (Behavior is different for affected command line options vs directives: The former are rejected as unrecognized, while the latter are silently ignored. I think that's fair enough.) --- Of course the testsuite will have lots of failures, for all the listing tests. --- a/gas/as.c +++ b/gas/as.c @@ -469,10 +469,12 @@ parse_args (int * pargc, char *** pargv) OPTION_EMULATION, OPTION_DEBUG_PREFIX_MAP, OPTION_DEFSYM, +#ifndef NO_LISTING OPTION_LISTING_LHS_WIDTH, OPTION_LISTING_LHS_WIDTH2, /* = STD_BASE + 10 */ OPTION_LISTING_RHS_WIDTH, OPTION_LISTING_CONT_LINES, +#endif OPTION_DEPFILE, OPTION_GSTABS, OPTION_GSTABS_PLUS, @@ -573,10 +575,12 @@ parse_args (int * pargc, char *** pargv) ports use -k to enable PIC assembly. */ ,{"keep-locals", no_argument, NULL, 'L'} ,{"keep-locals", no_argument, NULL, 'L'} +#ifndef NO_LISTING ,{"listing-lhs-width", required_argument, NULL, OPTION_LISTING_LHS_WIDTH} ,{"listing-lhs-width2", required_argument, NULL, OPTION_LISTING_LHS_WIDTH2} ,{"listing-rhs-width", required_argument, NULL, OPTION_LISTING_RHS_WIDTH} ,{"listing-cont-lines", required_argument, NULL, OPTION_LISTING_CONT_LINES} +#endif ,{"MD", required_argument, NULL, OPTION_DEPFILE} ,{"mri", no_argument, NULL, 'M'} ,{"nocpp", no_argument, NULL, OPTION_NOCPP} @@ -918,6 +922,7 @@ This program has absolutely no warranty. flag_keep_locals = 1; break; +#ifndef NO_LISTING case OPTION_LISTING_LHS_WIDTH: listing_lhs_width = atoi (optarg); if (listing_lhs_width_second < listing_lhs_width) @@ -937,6 +942,7 @@ This program has absolutely no warranty. case OPTION_LISTING_CONT_LINES: listing_lhs_cont_lines = atoi (optarg); break; +#endif /* NO_LISTING */ case 'M': flag_mri = 1; @@ -1382,7 +1388,9 @@ gas_init (void) int main (int argc, char ** argv) { +#ifndef NO_LISTING char ** argv_orig = argv; +#endif struct stat sob; gas_early_init (&argc, &argv); --- a/gas/listing.c +++ b/gas/listing.c @@ -1658,58 +1658,4 @@ listing_source_file (const char *file) listing_tail->hll_file = file_info (file); } -#else - -/* Dummy functions for when compiled without listing enabled. */ - -void -listing_list (int on) -{ - s_ignore (0); -} - -void -listing_eject (int ignore) -{ - s_ignore (0); -} - -void -listing_psize (int ignore) -{ - s_ignore (0); -} - -void -listing_nopage (int ignore) -{ - s_ignore (0); -} - -void -listing_title (int depth) -{ - s_ignore (0); -} - -void -listing_file (const char *name) -{ -} - -void -listing_newline (char *name) -{ -} - -void -listing_source_line (unsigned int n) -{ -} - -void -listing_source_file (const char *n) -{ -} - #endif --- a/gas/listing.h +++ b/gas/listing.h @@ -58,6 +58,18 @@ void listing_title (int depth); void listing_warning (const char *message); void listing_width (unsigned int x); +#ifdef NO_LISTING +#define listing_list s_ignore +#define listing_eject s_ignore +#define listing_psize s_ignore +#define listing_nopage s_ignore +#define listing_title s_ignore +#define listing_file(name) ((void)(name)) +#define listing_newline(ps) ((void)(ps)) +#define listing_source_file(file) ((void)(file)) +#define listing_source_line(line) ((void)(line)) +#endif + extern int listing_lhs_width; extern int listing_lhs_width_second; extern int listing_lhs_cont_lines; From patchwork Fri Mar 7 14:24:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 107512 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 1EB413858D26 for ; Fri, 7 Mar 2025 14:32:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1EB413858D26 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=Wmd17liB X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by sourceware.org (Postfix) with ESMTPS id 385F53858C56 for ; Fri, 7 Mar 2025 14:24:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 385F53858C56 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 385F53858C56 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357471; cv=none; b=oG4gUmHA+YaQwOCL+A4oC6vpuyDrrIElwAmjWR2ukjezl8c9+3xIPmjHGrUDTJIPmr9s2cewmuTkpmLJwvo3/08IHz80OV5kTPTtGJkQkXDhDl1/Y4IWeWe2hqIXnwa6XIo1/KTZH0vCSBcly89ARdERkFDy8BzeIZKxXfvc/ZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357471; c=relaxed/simple; bh=XinBrsuOd81Pii7ZN0QlwyKCrTS5zEGAGokyoLjrHM4=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=Ms7InN+Bp3xT9cJG7sFDtbt6vlc3+xzc0Ge7EYzZIkYRzs4WpgGIUDYytyp80cb8iqx/Cv2Eb9jrUIDZ7sfyyIWI376RKoRJhlEvMpoExuOw+txut/Z20Q0mVdwltMhcFJNHoSX8kch1y1DHU/IJb248LMQ0ZVtkOX1eHwlhHTI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 385F53858C56 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4394a823036so16088795e9.0 for ; Fri, 07 Mar 2025 06:24:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1741357470; x=1741962270; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=j3Glx/O0C8s2OXZQqUbpRbpzVmJ4HNvO1NT+0+ZdXj0=; b=Wmd17liBR0/Ae1mOd+OBnmG9CYg3hF5v8ec38qUX29zCvFi8emkIK8XFzq1mD26Srn +bVo/K0PGJgClIkZF+2KLdtUqUOOq1LaY7bclMtpUk6DfROA0XQdX3kgRt3pvBM66ahX F+jZN1p1NH1SGHjakvC8hV5QaHgYFx7bsS13F0ZJFiyL74xAEbiH7lflvfJjq5bTPKUB 5SjetqOANlDe4kWXvH4NYhYETNPZ58BH+c4THjjLIRQK176RgBwG2ZzyimAjRMQYygmC g2NlSCs+c54y55wTI4tiyGI1GoOguBBuvHY3bFPdyMO8h6nAzOhl/7JFhgdqbnh0hkUY Bcyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741357470; x=1741962270; h=content-transfer-encoding:in-reply-to:autocrypt:cc: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=j3Glx/O0C8s2OXZQqUbpRbpzVmJ4HNvO1NT+0+ZdXj0=; b=Epx2NrEzonSwwJ3g4/Eq4H1H18LcS1HYZspDAS8dr6xKttkHV62cAy3/41bW6PEbfv DI/msX3lwTa3V0ZswHlWqupv/YZWhsaC8yxRQG/HbZnibXPT+Ae8Oq2zDEtLL7Vq98o/ 1PchQHq6D7EfzA0GxKdZTKUiCt3wXB2PUp85HzGsz7eiaVxaCD+dPaQ3PzdmjRnEDmtB owAG6DrX5KuWMiKgQFoge4tF81C6/bLRtsEA/IAzyY8fhXVnHHi/vHe5GHf8x6hMT6el HgYX/oZsI9h00WXowZvSqxwDJ7JtBqAqALX2jE+IDhVK1s1gU0T265RPJEH6Pb0sYziD CUNA== X-Gm-Message-State: AOJu0YyRPkqkT3I+GWDniO1eceURNZVNdPHmDyPg8HdZUMjOyeH0CDgc a+Rq6qGA9wlRPiKmKca6fmkEXYmLt5DT5h+hMZkp9TvucI8QyrDnmsn11d3Ivt7UEyGdM9DQKfk = X-Gm-Gg: ASbGncuUIzx1bpa+ZXcPwKAc7FdcZ4gMGPQzyRaBY3hg3uuC3VOmc5/osZEyJHkBQqs 0o5lDwu/Vi6tJVvMIfffkD+gh6r0e2saChLRWOF6U6gwChWqQxnERnEReL206jyZOUHEEZStj9D OxqG7ObIDgqglXBT+gLNir6vGo9BHNrnmq0BWPqcNQ8q8qJ2621xITL8cySSI9SX2OzZCG3t+Bf 5AjQod7Wz9CceFC50EvC1R0cwtJoIKNhHKM2BLgL/WDpQ/7itBdMhK25X5qNzRSGZhtQjkjzXbK 3djOwKGiXOLPw+gBThCzmTvxs+3yXlvk0x1LJGJ0QlNeOO0W8Z+mDD+gcGgV6QENaNz3/nH4vKE AbWOa+qbsTSKAgcxISqhXOGIKyR4aHA== X-Google-Smtp-Source: AGHT+IG7qtPynj99ukFVh+xqN+13wGmpC/iZipGJculS0pFPfBrr0IbEVGg0KWNG7L6VcQTZcKHoQw== X-Received: by 2002:a05:6000:1aca:b0:391:268:64a1 with SMTP id ffacd0b85a97d-39132da9209mr2629427f8f.48.1741357469919; Fri, 07 Mar 2025 06:24:29 -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 ffacd0b85a97d-3912bfdfdb9sm5436267f8f.27.2025.03.07.06.24.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Mar 2025 06:24:29 -0800 (PST) Message-ID: <4f32d7f9-bd0f-440d-aaa2-88cce2e59188@suse.com> Date: Fri, 7 Mar 2025 15:24:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 4/5] gas: permit LEB128 operands for .cfi_escape From: Jan Beulich To: Binutils References: Content-Language: en-US Cc: Indu Bhagat 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: X-Spam-Status: No, score=-3021.5 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 Many DW_CFA_* and DW_OP_* take LEB128 operands. Having to hand-encode such when needing to resort to .cfi_escape isn't very helpful. --- Permitting only CFI_ESC_byte in gen-sframe.c is likely overly restrictive, yet relaxing this would probably better be a separate patch (much like special-casing some .cfi_escape was). --- v2: Correct a doc copy-and-paste mistake. Re-base. --- a/gas/doc/as.texi +++ b/gas/doc/as.texi @@ -5176,7 +5176,18 @@ SPARC register window has been saved. @subsection @code{.cfi_escape} @var{expression}[, @dots{}] Allows the user to add arbitrary bytes to the unwind info. One might use this to add OS-specific CFI opcodes, or generic CFI -opcodes that GAS does not yet support. +opcodes that GAS does not yet support. To emit multi-byte data one may +also use extended kind-of-expression forms: + +@itemize @bullet + +@item @code{sleb128(@var{expression})} +to emit a SLEB128 item, + +@item @code{uleb128(@var{expression})} +to emit a ULEB128 item. + +@end itemize @subsection @code{.cfi_val_encoded_addr @var{register}, @var{encoding}, @var{label}} The current value of @var{register} is @var{label}. The value of @var{label} --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -941,7 +941,7 @@ dot_cfi (int arg) static void dot_cfi_escape (int ignored ATTRIBUTE_UNUSED) { - struct cfi_escape_data *head, **tail, *e; + struct cfi_escape_data *head, **tail; struct cfi_insn_data *insn; if (frchain_now->frch_cfi_data == NULL) @@ -960,8 +960,39 @@ dot_cfi_escape (int ignored ATTRIBUTE_UN tail = &head; do { - e = notes_alloc (sizeof (*e)); - e->reloc = do_parse_cons_expression (&e->exp, 1); + struct cfi_escape_data *e = notes_alloc (sizeof (*e)); + char *id, *ilp_save = input_line_pointer; + char c = get_symbol_name (&id); + + if (strcmp (id, "sleb128") == 0) + e->type = CFI_ESC_sleb128; + else if (strcmp (id, "uleb128") == 0) + e->type = CFI_ESC_uleb128; + else + e->type = CFI_ESC_byte; + + c = restore_line_pointer (c); + + if (e->type != CFI_ESC_byte) + { + if (is_whitespace (c)) + c = *++input_line_pointer; + if (c != '(') + { + input_line_pointer = ilp_save; + e->type = CFI_ESC_byte; + } + } + + if (e->type == CFI_ESC_sleb128 || e->type == CFI_ESC_uleb128) + { + /* We're still at the opening parenthesis. Leave it to expression() + to parse it and find the matching closing one. */ + expression (&e->exp); + } + else + e->reloc = do_parse_cons_expression (&e->exp, 1); + *tail = e; tail = &e->next; } @@ -1778,7 +1809,12 @@ output_cfi_insn (struct cfi_insn_data *i { struct cfi_escape_data *e; for (e = insn->u.esc; e ; e = e->next) - emit_expr_with_reloc (&e->exp, 1, e->reloc); + { + if (e->type == CFI_ESC_sleb128 || e->type == CFI_ESC_uleb128) + emit_leb128_expr (&e->exp, e->type == CFI_ESC_sleb128); + else + emit_expr_with_reloc (&e->exp, 1, e->reloc); + } break; } --- a/gas/dw2gencfi.h +++ b/gas/dw2gencfi.h @@ -97,6 +97,11 @@ struct cfi_escape_data { struct cfi_escape_data *next; expressionS exp; + enum { + CFI_ESC_byte, + CFI_ESC_sleb128, + CFI_ESC_uleb128, + } type; TC_PARSE_CONS_RETURN_TYPE reloc; }; --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -1348,6 +1348,7 @@ sframe_xlate_do_escape_expr (const struc || i >= CFI_ESC_NUM_EXP || (i < 2 && (e->exp.X_op != O_constant + || e->type != CFI_ESC_byte || e->reloc != TC_PARSE_CONS_RETURN_NONE))) goto warn_and_exit; items[i] = e->exp.X_add_number; @@ -1412,6 +1413,7 @@ sframe_xlate_do_escape_val_offset (const { e = e->next; if (i >= CFI_ESC_NUM_EXP || e->exp.X_op != O_constant + || e->type != CFI_ESC_byte || e->reloc != TC_PARSE_CONS_RETURN_NONE) goto warn_and_exit; items[i] = e->exp.X_add_number; @@ -1486,7 +1488,9 @@ sframe_xlate_do_cfi_escape (const struct if (!e) return SFRAME_XLATE_ERR_INVAL; - if (e->exp.X_op != O_constant || e->reloc != TC_PARSE_CONS_RETURN_NONE) + if (e->exp.X_op != O_constant + || e->type != CFI_ESC_byte + || e->reloc != TC_PARSE_CONS_RETURN_NONE) return SFRAME_XLATE_ERR_NOTREPRESENTED; firstop = e->exp.X_add_number; @@ -1498,6 +1502,7 @@ sframe_xlate_do_cfi_escape (const struct { e = e->next; if (e->exp.X_op != O_constant || e->exp.X_add_number != DW_CFA_nop + || e->type != CFI_ESC_byte || e->reloc != TC_PARSE_CONS_RETURN_NONE) { warn_p = true; --- a/gas/testsuite/gas/cfi/listing.l +++ b/gas/testsuite/gas/cfi/listing.l @@ -20,8 +20,20 @@ [ ]*[0-9]*[ ]+([0-9a-f]{4} [0 ]+)?\.cfi_endproc [ ]*[0-9]*[ ]* [ ]*[0-9]*[ ]+func2: -[ ]*[0-9]*[ ]+[0-9a-f]{4} (1[048]00 ?0000|0000 ?001[048])[ ]+\.cfi_startproc +[ ]*[0-9]*[ ]+[0-9a-f]{4} ((1C|2[048])00 ?0000|0000 ?00(1C|2[048]))[ ]+\.cfi_startproc [ ]*[0-9]*[ ]+(4[048]00 ?0000|0000 ?004[048]) * [ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop +[ ]*[0-9]*[ ]+/\* DW_CFA_register reg127, reg129. \*/ +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.09 ?7F81[ ]+\.cfi_escape 0x09, uleb128\(127\), uleb128\(129\) +[ ]*[0-9]*[ ]+01 +[ ]*[0-9]*[ ]+/\* DW_CFA_val_expression reg250, ... \*/ +[ ]*[0-9]*[ ]+[0-9a-f]{4} 16FA ?01[ ]+\.cfi_escape 0x16, uleb128\(250\) +[ ]*[0-9]*[ ]+/\* ... . \*/ +[ ]*[0-9]*[ ]+[0-9a-f]{4} 03[ ]+\.cfi_escape uleb128\(.LE0e - .LE0s\) +[ ]*[0-9]*[ ]+\.cfi_label .LE0s +[ ]*[0-9]*[ ]+/\* DW_OP_breg3. \*/ +[ ]*[0-9]*[ ]+[0-9a-f]{4} 7380 ?78[ ]+\.cfi_escape 0x73, sleb128\(-1024\) +[ ]*[0-9]*[ ]+\.cfi_label .LE0e +[ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop [ ]*[0-9]*[ ]+([0-9a-f]{4} [0 ]+)?\.cfi_endproc #pass --- a/gas/testsuite/gas/cfi/listing.s +++ b/gas/testsuite/gas/cfi/listing.s @@ -19,4 +19,15 @@ func: func2: .cfi_startproc .nop + /* DW_CFA_register reg127, reg129. */ + .cfi_escape 0x09, uleb128(127), uleb128(129) + /* DW_CFA_val_expression reg250, ... */ + .cfi_escape 0x16, uleb128(250) + /* ... . */ + .cfi_escape uleb128(.LE0e - .LE0s) + .cfi_label .LE0s + /* DW_OP_breg3. */ + .cfi_escape 0x73, sleb128(-1024) + .cfi_label .LE0e + .nop .cfi_endproc From patchwork Fri Mar 7 14:25:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 107511 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 0303A3858402 for ; Fri, 7 Mar 2025 14:29:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0303A3858402 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=Uc5rNUv3 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 F17C23858D1E for ; Fri, 7 Mar 2025 14:25:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F17C23858D1E 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 F17C23858D1E 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=1741357510; cv=none; b=flHmlvYdpUsoTujzxOY7AdLCQLNTdsaskMjLVsPoyqFBd4iITQMCPF6sLPmOT8PhpiwpZMCuMOYGzRWx6n04Fz5/JxToBqn8pdVRgrJplicB4PCbELPqwf33HevQYvEaFjYGG58yfXdYZlMU6gMUT3rI+6KpuYPHXXxpoHz7G+Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741357510; c=relaxed/simple; bh=Yc+EhHOAXfsnc2c1DnWO5Zr39FLF0FFklYxFA/PiOfA=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=REdX8L2OHHcKiDMQO9UBZSpuOuc6vcUcB2pWwRZm4PAl05wFTkMXhLNGLbf2ua5baNd51cIzOA/l2ZiaYDJIdMf2wHPGXKXSUGz8GoU00neHb24uJ/M8trgdIEXO0hHFZrXc5g/bFyPh7/RTOHkGCUX0966p5OgySaXqY6BeKGw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F17C23858D1E Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-43bc48ff815so11827195e9.0 for ; Fri, 07 Mar 2025 06:25:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1741357508; x=1741962308; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=z1vHg01mwdUW8ganXdyj34eYf03wxuPC+r39Z4QMJpU=; b=Uc5rNUv3tde5nJZigkYd73cTLp7/Nu5k/TsUgIWIolEnUkmDjRFiw15BNn/RJKCPYr ORUE6ddf+60oinEhjCagkxLooRJMYUu+3Rond0hPtFfL/iq9pe9OgOheaVmfVEDg0rWE FhZIcfSd+7tYMh37dRcLC14hjNpebaR5Ki4UZDoYi0mBWkrfNeF9ux6YKOFHB8RAEn82 Yn8SrpeD0ICM+sfrRrdyHGMYMLN5Rt9RTcthqErQiVIqaMuCn2f2oTv7p3R7sDE6dHn7 ZZWUgSNbWmqMuqGmNCOGxkTows04fWOhURvCh30ea+R+tX4hXnTB8OOQFe7akTbvnB/H fs5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741357508; x=1741962308; h=content-transfer-encoding:in-reply-to:autocrypt:cc: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=z1vHg01mwdUW8ganXdyj34eYf03wxuPC+r39Z4QMJpU=; b=ZrM9rZ4ZIHcPLIxDOQSJ0hAkIB9BQrMGeIbGwn00Oe2AupdNmo8OZmctBUSxjU6OT5 kGQcXIz08+505Fc+acVqh1XH3HT6aG97KkX1moUvtnOsxkwW/EyEwQJOubJY42j73vaa GDnn+6MDZXh61J2A5V7RhNmJfPT66tzBc/C2290xS7WuwQwggvgeqrg1dlbMAsTKY36P D1rWJnPKholV/jlJP1u04CCqEy4KVnAmuMBsXhfwW83tMRtrayTHvUl6plUivGaD1cON 0NIqukUy4zLQhHQXkgrIY3rh2OJuyhmtobUUExvn8bWn2m6RgjbqV5CZun41jSfyBlSZ ck9Q== X-Gm-Message-State: AOJu0YwXOxZrPxeH+qXPvWGTpbqkuPZCCVcKYJ1DPV16zKQXCURzU0xc 1jKBwrrTAoUErN5VdYtBvorAqnTS8ZnX0BKfUNYvvLaxCqPEFrY6CFznDwdwAFlMb6NW40wpAf8 = X-Gm-Gg: ASbGncsTw8udoTk1hzuQdvCZe87Ie+NGg4O8G3wFlFfRw77EKvbdME8P4pWKACj2iyK MErqGxq0Z/jWuWabO2Fg8BtjYbr270DprFPxc4ijZz12Z8unaoBJcuKDi+eAral13IORzCox2oh 4DyM491PNf71nFhL4iu28dFFz4/4VbHxPNeidrjL2kaAo36Yz6lHn7VbCyCHSAQBJ829cLIr+mn noaCKOGK+89+5iA4a/4WAAc70pjBWD9KxEWgreMwzs4KbtEM9wJm5u7YPnpj1davA+qwHThDozN btXWcXlKmkKQUwZWAhwOUaLwnNH6b2AFm7I2C/aFkyy7dKdi2VBG988cmZN7GLDvuxbB1P2AyAD dV3Vir1mc8D8pQu+xqVj+3XAXqS0C+g== X-Google-Smtp-Source: AGHT+IHSotvuMspq1Wy5aH7q6cffVdDQEVcnAdDYi/8eWfeXlzBnrfSAIc1o7UegXE8AYfTfK4wpcA== X-Received: by 2002:a05:600c:4384:b0:439:8490:d1e5 with SMTP id 5b1f17b1804b1-43bdb37b516mr55809825e9.4.1741357508383; Fri, 07 Mar 2025 06:25:08 -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 ffacd0b85a97d-3912c0e3099sm5623625f8f.69.2025.03.07.06.25.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Mar 2025 06:25:08 -0800 (PST) Message-ID: Date: Fri, 7 Mar 2025 15:25:07 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 5/5] gas: permit wider-than-byte operands for .cfi_escape From: Jan Beulich To: Binutils References: Content-Language: en-US Cc: Indu Bhagat 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: X-Spam-Status: No, score=-3021.5 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 Some DW_CFA_* and DW_OP_* take wider than byte, but non-LEB128 operands. Having to hand-encode such when needing to resort to .cfi_escape isn't very helpful. --- I was wondering whether there's a need to distinguish signed and unsigned forms. .dc. as well as .long et al don't normally do, with x86'es .slong being an exception (there it matters for picking the correct relocation type). The support for that special directive is a little bit of a hack, hence it doesn't easily lend itself to extending to .cfi_escape. Perhaps something to be sorted later, when an actual need arises. I was further wondering whether endian-ness also needs to be encodable in the directive operands; I sincerely hope native endian-ness will suffice. Should we also permit data1()? --- v2: Re-base. --- a/gas/doc/as.texi +++ b/gas/doc/as.texi @@ -5181,6 +5181,18 @@ also use extended kind-of-expression for @itemize @bullet +@item @code{data2(@var{expression})} +to emit a 2-byte item, + +@item @code{data4(@var{expression})} +to emit a 4-byte item (provided address size is at least 32 bits), + +@item @code{data8(@var{expression})} +to emit an 8-byte item (provided address size is at least 64 bits), + +@item @code{addr(@var{expression})} +to emit an address-sized item, + @item @code{sleb128(@var{expression})} to emit a SLEB128 item, --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -938,6 +938,21 @@ dot_cfi (int arg) demand_empty_rest_of_line (); } +#ifndef TC_ADDRESS_BYTES +#define TC_ADDRESS_BYTES address_bytes + +static inline unsigned int +address_bytes (void) +{ + /* Choose smallest of 1, 2, 4, 8 bytes that is large enough to + contain an address. */ + unsigned int n = (stdoutput->arch_info->bits_per_address - 1) / 8; + n |= n >> 1; + n |= n >> 2; + return n + 1; +} +#endif + static void dot_cfi_escape (int ignored ATTRIBUTE_UNUSED) { @@ -968,6 +983,14 @@ dot_cfi_escape (int ignored ATTRIBUTE_UN e->type = CFI_ESC_sleb128; else if (strcmp (id, "uleb128") == 0) e->type = CFI_ESC_uleb128; + else if (strcmp (id, "data2") == 0) + e->type = 2; + else if (TC_ADDRESS_BYTES () >= 4 && strcmp (id, "data4") == 0) + e->type = 4; + else if (TC_ADDRESS_BYTES () >= 8 && strcmp (id, "data8") == 0) + e->type = 8; + else if (strcmp (id, "addr") == 0) + e->type = TC_ADDRESS_BYTES (); else e->type = CFI_ESC_byte; @@ -991,7 +1014,11 @@ dot_cfi_escape (int ignored ATTRIBUTE_UN expression (&e->exp); } else - e->reloc = do_parse_cons_expression (&e->exp, 1); + { + /* We may still be at the opening parenthesis. Leave it to expression() + to parse it and find the matching closing one. */ + e->reloc = do_parse_cons_expression (&e->exp, e->type); + } *tail = e; tail = &e->next; @@ -1813,7 +1840,7 @@ output_cfi_insn (struct cfi_insn_data *i if (e->type == CFI_ESC_sleb128 || e->type == CFI_ESC_uleb128) emit_leb128_expr (&e->exp, e->type == CFI_ESC_sleb128); else - emit_expr_with_reloc (&e->exp, 1, e->reloc); + emit_expr_with_reloc (&e->exp, e->type, e->reloc); } break; } --- a/gas/dw2gencfi.h +++ b/gas/dw2gencfi.h @@ -98,7 +98,14 @@ struct cfi_escape_data struct cfi_escape_data *next; expressionS exp; enum { - CFI_ESC_byte, + /* "Plain" data is indicated just by their size, such that values can be + easily passed to other functions. The CFI_ESC_data enumerators exist + here only as placeholders. */ + CFI_ESC_byte = 1, + CFI_ESC_data2 = 2, + CFI_ESC_data4 = 4, + CFI_ESC_data8 = 8, + /* LEB128 data needs dedicated enumerators. */ CFI_ESC_sleb128, CFI_ESC_uleb128, } type; --- a/gas/testsuite/gas/cfi/listing.l +++ b/gas/testsuite/gas/cfi/listing.l @@ -9,8 +9,8 @@ [ ]*[0-9]*[ ]+[0-9a-f]{4} 4.02 ?0002[ ]+\.cfi_escape 0x02, 0x00, 0x02, 0x00 [ ]*[0-9]*[ ]+00 [ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop -[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.03 ?0000[ ]+\.cfi_escape 0x03; .cfi_escape 0x00, 0x00 -[ ]*[0-9]*[ ]+[0-9a-f]{4} 0400 ?0000[ ]+\.cfi_escape 0x04; .cfi_escape 0x00, 0x00, 0x00, 0x00 +[ ]*[0-9]*[ ]+[0-9a-f]{4} 4.03 ?0000[ ]+\.cfi_escape 0x03; .cfi_escape data2\(0\) +[ ]*[0-9]*[ ]+[0-9a-f]{4} 0400 ?0000[ ]+\.cfi_escape 0x04; .cfi_escape data4\(0\) [ ]*[0-9]*[ ]+00 [ ]*[0-9]*[ ]+[0-9a-f]{4} .*[ ]\.nop [ ]*[0-9]*[ ]+[0-9a-f]{4} 4.0B[ ]+\.cfi_escape 0x0b --- a/gas/testsuite/gas/cfi/listing.s +++ b/gas/testsuite/gas/cfi/listing.s @@ -7,8 +7,8 @@ func: .nop .cfi_escape 0x02, 0x00, 0x02, 0x00 .nop - .cfi_escape 0x03; .cfi_escape 0x00, 0x00 - .cfi_escape 0x04; .cfi_escape 0x00, 0x00, 0x00, 0x00 + .cfi_escape 0x03; .cfi_escape data2(0) + .cfi_escape 0x04; .cfi_escape data4(0) .nop .cfi_escape 0x0b .nop