From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by sourceware.org (Postfix) with ESMTPS id 5B1033858289 for ; Tue, 28 Jan 2025 15:31:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5B1033858289 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 5B1033858289 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::52b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738078305; cv=none; b=tydWPkXx0IPj/ff1wPnbghoeQMHTKsJSHSjaFMMRqlc24ToH2RD2mOMuZVfb5wIjMyBuZSkLk5D27iK4GCMB9wDNJUOuGYXYmKy21OOu/pn3nfksqrZJiHOl6qKsClX97miE6R88ySMq20kixJYaMwqEK2MLWH7GbqZzfgU74MU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738078305; c=relaxed/simple; bh=G7LcJYz+oLMerCySX3pFfiK2DIYulrE0PGx/Am15Qi8=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=JDnAh4MJ50Vz9pcT9xOVB/cg94Fxi5UXsGIPG1oT7AaP0ERD61bcr1te3NdnOH3MkkndFecs0yoUjaFwigP6yTmdop3WbwxVbQWXI6dbyMT8kqpIMMA1FcUJU4ZaL6e7v3W6V//8xTsLrmpbkEL1ZtKr9CJreWsmY8JPPAqnW6Y= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5B1033858289 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=b4jWuH6v Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5d96944401dso9587404a12.0 for ; Tue, 28 Jan 2025 07:31:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1738078304; x=1738683104; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=1HinmedMHabgUexZg09N7LF47GxkGbRL4VrygEfWEL8=; b=b4jWuH6vw+HfJMj/T6t619DN1h8H3iNMlj92KnRkP8jLSBhU6/IftzrOBMrJ9hpgqX ZUxg5RaQgmijQI+jRa5NGLVpRtD04BOf0FpNEjGOdGn6wAdH+ZRCYr2BBAbYMFbK1QaR 6ZAfnF7PwzNhZuizmENmILNm4xKiC9VIfYpshtGgl1KBdUzneZnGWcQStnWg15Qc/GlZ Or4p5RnNf6ajXjV5oEQctn5sPPhZGINDR5/DYTZw2E1rfRv+/meK02UR28BjmGTprb2W WWv+bCCoBsLShtx+13sWy2AkT2OfLuEkE8jsJiOGcnKwefk/u3bi8JDIuim8768C3Qgg ZOMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738078304; x=1738683104; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1HinmedMHabgUexZg09N7LF47GxkGbRL4VrygEfWEL8=; b=haRU1q/6uT1uRV6RvYZS/fHUdeVDBnkY3c/mAMQlV0aoH5AdRmv5A+rr2rz1pO0Fs7 jhGJx8+mUcR/b6l2hdCrFrIRJ+1C1E5gwYD+zpYQJlnJUfgOVIpslG6wC2zsjB9kaECd CVH9HWXJpUzVVtw8uFr3tXpVDC7ot0gj1YnzF+lFJc6PrAWsVPaIqIm0ehjVsk9RYpYW rPnxacj9ATK85kQqP3gCKKwQAV/bo3k4TvSjIT7dPmdOPOvGNZoJ4wwEYZf0nZ/eizSq Jv4QsnZYCm4EHOx3bWtiP2ECdvoa+UPWI5QCDsYVvqxj28QMYWUiqLNd5lQwZyfz6Wym 24Sw== X-Gm-Message-State: AOJu0YxzIvLOPvG+f/eNGqEgr0xZGklnk/H1nPbeQtpjht3JsNqWv46C kvtxKvFfnaVvnhqLGr/QhK7KY7SvI036fg4GqdxA7R3+EqdkzQtada6ey5RmgQLYmDJvmlOyj7k = X-Gm-Gg: ASbGncva8GL6ziX5viWCFmnw7B10AhyM8thFN86zIhHeNg88yGSu+lCRlDgJZ1Y6eEv Hrlb/ZKf4KfQqqcLQvkBSSpreTX+V3DYOHJQhWf6Kmvr3zA0aIe0qB9J8hKyCHC05hXIf1Tt6uT vJuBt5L1cgvIDkIvE2SoCMLyu4WqnNaw6k8ED/EJT5LEtMtRvpaAOkydwyPGB9D1UJMpWs8veI4 TKBvldu5ibQLT6lgu79ltB8UnIgDKP9WhASWgYxjYbVBs2reDTVJl5gIvQAn+jpwKLnX7D+Kvk1 fziBcr4UzyGyHHGwqRrt4iaQw9EFMNmR8vtt+LCYxFwCR92/9W+w7suTKeOMJs+69iLuUvTepmw 9 X-Google-Smtp-Source: AGHT+IFppJcBXSexYLHjNAZlMJQWHl2IhBqDGnPSPAGGVSE5jin+FU9afnyvDGLJk1yo3rB2dWwCNQ== X-Received: by 2002:a17:907:7d9e:b0:ab2:eb1a:9479 with SMTP id a640c23a62f3a-ab38b0b7efemr4597346966b.2.1738078303780; Tue, 28 Jan 2025 07:31:43 -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 a640c23a62f3a-ab6a2fbcca0sm425764866b.101.2025.01.28.07.31.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 28 Jan 2025 07:31:43 -0800 (PST) Message-ID: <83efd6ce-4363-4f63-89c3-7d107ab55b25@suse.com> Date: Tue, 28 Jan 2025 16:31:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] gas: sframe: partially process DWARF expressions in CFI_escape To: Indu Bhagat Cc: binutils@sourceware.org References: <20250128005722.2970354-1-indu.bhagat@oracle.com> <10038860-1fd8-4b2c-95ad-dcb215c23691@suse.com> <7cf14752-9aa3-4c7a-9293-88f493a4b475@oracle.com> Content-Language: en-US From: Jan Beulich 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: <7cf14752-9aa3-4c7a-9293-88f493a4b475@oracle.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3022.0 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,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 28.01.2025 16:24, Indu Bhagat wrote: > On 1/28/25 12:03 AM, Jan Beulich wrote: >> On 28.01.2025 01:57, Indu Bhagat wrote: >>> + switch (op) >>> + { >>> + /* Of all the possible opcodes expected here, it is safe to >>> + ignore DW_CFA_expression and DW_CFA_val_expression, provided they >>> + do not impact the SP / FP register. */ >>> + case DW_CFA_expression: >>> + case DW_CFA_val_expression: >>> + /* Both DW_CFA_expression and DW_CFA_val_expression instructions take >>> + two operands: an unsigned LEB128 value representing a register >>> + number, and a DW_FORM_block value representing a DWARF expression. >>> + For the current purpose, we simply need to know the register >>> + number. */ >>> + e = e->next; >>> + /* Keep in sync with the behaviour of cfi_parse_reg (). */ >>> + gas_assert (e->exp.X_op == O_register || e->exp.X_op == O_constant); >> >> ... you're asserting on user input here. Afaics neither is in any way >> enforced by dot_cfi_escape() / do_parse_cons_expression(). As to the >> comment - how does cfi_parse_reg() come into play for .cfi_escape? > > IIUC, the first operand of both of these opcodes (DW_CFA_expression, > DW_CFA_val_expression) will be a register. Hence, cfi_parse_reg () > behaviour is being cross-checked against. > > This function only aims to process some "simple DWARF expressions", and > if they are benign (OK to skip), we do not warn (nor error out with > SFRAME_XLATE_ERR_NOTREPRESENTED). E.g. for, > > DW_CFA_expression: r1 (rdx) (DW_OP_breg7 (rsp): 136) > DW_CFA_expression: r0 (rax) (DW_OP_breg7 (rsp): 144) Yet .cfi_escape accepts all sorts of expressions. It's okay to tell the user that for SFrame this isn't supported. But it's not okay to hide this information behind an internal error (that the failed assertion will result in). >>> + reg = e->exp.X_add_number; >>> + /* Get the scratchpad FRE. */ >>> + cur_fre = xlate_ctx->cur_fre; >>> + if (reg == SFRAME_CFA_SP_REG || reg == SFRAME_CFA_FP_REG >>> + || reg == cur_fre->cfa_base_reg) >>> + { >>> + as_warn (_("skipping SFrame FDE; .cfi_escape with reg (%#x)"), reg); >>> + err = SFRAME_XLATE_ERR_NOTREPRESENTED; >>> + } >>> + break; >>> + /* FIXME - Also add processing for DW_CFA_GNU_args_size in future? */ >>> + default: >>> + /* In all other cases (e.g., DW_CFA_def_cfa_expression or other >>> + OS-specific CFI opcodes), skip inspecting the DWARF expression. >>> + This may impact the asynchronicity due to loss of coverage. >>> + Continue to warn the user and bail out. */ >>> + as_warn (_("skipping SFrame FDE; .cfi_escape with op (%#x)"), op); >>> + err = SFRAME_XLATE_ERR_NOTREPRESENTED; >>> + break; >>> + } >>> + } >> >> Doesn't all of this need to go in a loop, as a single .cfi_escape might >> specify multiple successive DW_CFA_*? > > The function intends to process only some DWARF expressions (basically > some commonly-occurring, but safe to skip from SFrame perspective). > Going into a loop may be necessary for opcodes other than > DW_CFA_expression or DW_CFA_val_expression, but at the moment, since we > prefer to cater to only the simple expressions, parsing the complete > expression is not required. No, wait. Simple expressions or not isn't the point here. The point is that with a single .cfi_escape you can specify any number of things, i.e. also multiple operations involving multiple expressions. There's no limit to the number of operands to .cfi_escape afaics - it could literally be hundreds. Jan