From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id mUk1BIsExWmdEjoAWB0awg (envelope-from ) for ; Thu, 26 Mar 2026 06:03:55 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=TTeSkjPb; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id E5C2B1E0BC; Thu, 26 Mar 2026 06:03:54 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 1A30D1E04F for ; Thu, 26 Mar 2026 06:03:54 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 0482E4BA23CA for ; Thu, 26 Mar 2026 10:03:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0482E4BA23CA Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=TTeSkjPb 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 DEA6E4BA2E0A for ; Thu, 26 Mar 2026 10:03:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DEA6E4BA2E0A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DEA6E4BA2E0A 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=1774519404; cv=none; b=urprGz20llWtWBBAJwhKhxikEslQ5f/sWmKUbV464qTodx4/DDkMqTIlBRST3Gt9vkjt8WCjsyZz7lxZwvMKLfn87YDMLRky59S1gk/uLNyX20btrCRFkurH0EC7qa7xILFf0iB3AHGXDeIfrB/UtLn0i7mvHj2TjPoja+3xxuk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774519404; c=relaxed/simple; bh=DjcDW1uPbS2HyJS4NLp5+MTx7YxZgu3k6mva9Ok+T6c=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=vRvipKXhs3+2w558jJMsh2eW/CDgtZo3Z6fhM2EsHuWhGvurMjEz5TYdw35I9x6LGPKHLpGDjffzUTV3ILE6YcuJhQuO/NgYI0OwIlB0QOZBh/petCV3+m2YMRD+ofRfU8xARCqpUiDm/iNlQbr1Tva4akujUCcUZivXnrZxpOM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DEA6E4BA2E0A Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4852c9b4158so6346575e9.0 for ; Thu, 26 Mar 2026 03:03:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774519403; x=1775124203; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=aEaUuxzYFaudXuj8BA/7N1GfVPxj5B/I8XQRrzE3rwU=; b=TTeSkjPbXBi1YDGbPxaEnwoa8MjbTAHMF/BtCXXtO7ooi+eL8+9kRhwEp22xhEvFry PbIK8g6bbV8qH5aqZ8yUiSG1hhGpE7ix5XF9LI72b73JDVl1g9fzwvz4bnMAvWoRgKQr EzB7VpuMguGyMziuhXMYd/fpcXYxbWU8y6YIPimCMS4QgA5hqgI9B5HHOqU5pmPmjcml sxl2O9r3mu0SrJrqPAGUZl8fA92te/TwDV16x4adHmqh1N7ostt/IIsYNlOaTWUCDXHu NAijatiDChQ/VdLopZq6EoWi87BiG4rwEZ2awt1sh9zNFnMfJMU6JT1W/05PKY0x9z1i eYDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774519403; x=1775124203; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aEaUuxzYFaudXuj8BA/7N1GfVPxj5B/I8XQRrzE3rwU=; b=Ws520xcygMjTsWkBynnMI+zGAxEq5zbtO0itAkWkdRoulnUYtXWvREy9DMN+JI4yMo wGeQzb0NTrX3C4b+T9qD+V0ng03u3rzLti/jX5g4sGeKCViyFQDI3F79YfgxKnhzTa6r aUysL65I7Q5MnTTdZ/OCZt8UhuZY732msbf1Hhn49MAAYQkKYAipxTgfV8vpxbwVBMNi rscqQVh7vXKcn7nlvMlHlPcHbG3CaiPPmPNHIoJKmAsJ6GdcQT/mFiCpLlbWryZ6MlD5 XClR1xQkFrEj/iHkdk6xMxHljx1kx7nGdNzhlDYJhFFVq5J1qwg5DoxsVDpyeABB7roj DVcw== X-Forwarded-Encrypted: i=1; AJvYcCVApfx45Bzz8UHZm5SIOo4Yw+RcN9uoAfXNW8/knWzhf5IcB6nrrwQogtH8Dao+oYpJOaRi0+KUsccTyA==@sourceware.org X-Gm-Message-State: AOJu0YzyFOJUi2r2cppsia2950eT0rJFzcBsmEL+a95f8IHGBDWGJEaH 175GJZ7c/ASWIaNfbIlQ0/EQmBw1bayvpSDvhqftnHObS/fpyL0YLYZg X-Gm-Gg: ATEYQzyK5riDNyjHYN/tWBm3VPLB+gNH4fVkVYONlNN/TrwWHdIJzmdyLq4Dn++n7x7 xayd0WpY91DLo7tyMKpaAlcCYf5hknCP9fxoJunkQCZ8VqZ7SYWMD+3zRWMNkVhvZ+pKakTmW4D 6ap4j1PVif++9Ciwa5725WXZ7vBxijP04gSF0EiZVoHy4SD5ODRx+JncRQLV1LLVuqfKOhq//sW RxJ3W0tPtCMmldLSTMpcSzHDPuTRzdWz2xlnNGWk8tKVgg3SypASbFi4Y9up/zjN01yJofQkFRP GAXlSrRqevTh/Ro6K1mjrIzmwlqI4zzjp/LTW+DVVmUWiLQJURYSTTG0wB2SdNz11edQVOWdQCe CCg2qp+IupyY6IdvZQ+qmfQ5XhnsXq0aCVlomlkF8ZiTCj2DH/9p1WMJnzbNdNaNgQ5KpdiJJ3l PWQjIrqj1MLzq4l9LRZ2MU9JGROowv6vprBZXT X-Received: by 2002:a05:600c:4f0d:b0:485:3cf3:1010 with SMTP id 5b1f17b1804b1-48715fc325dmr109873225e9.2.1774519402514; Thu, 26 Mar 2026 03:03:22 -0700 (PDT) Received: from [192.168.0.38] ([86.12.216.189]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872090368dsm16498645e9.5.2026.03.26.03.03.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 26 Mar 2026 03:03:22 -0700 (PDT) Message-ID: <048b41a0-4cbe-45fa-ab97-ee4280d36d95@gmail.com> Date: Thu, 26 Mar 2026 10:03:21 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] [gdb/record] Fix syscall exit recording for arm Content-Language: en-US To: Tom de Vries , gdb-patches@sourceware.org References: <20260310143635.1091164-1-tdevries@suse.de> From: Luis In-Reply-To: <20260310143635.1091164-1-tdevries@suse.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Hi Tom, Sorry, I was out on time off. On 10/03/2026 14:36, Tom de Vries wrote: > [ Submitted earlier [1] with $subject: "[PATCH] [gdb/record] Fix syscall > recording for arm". ] > > On arm-linux, I run into: > ... > (gdb) continue^M > Continuing.^M > The next instruction is syscall exit_group. It will make the program exit. \ > Do you want to stop the program?([y] or n) yes^M > Process record does not support instruction 0xdf00 at address 0xf7e8f984.^M > Process record: failed to record execution log.^M > ^M > Program stopped.^M > __libc_do_syscall () at libc-do-syscall.S:46^M > warning: 46 libc-do-syscall.S: No such file or directory^M > (gdb) FAIL: gdb.reverse/sigall-reverse.exp: continue to signal exit > ... > > The problem is this bit of code here in decode_insn: > ... > ret = thumb2_record_decode_insn_handler (arm_record); > > if (ret != ARM_RECORD_SUCCESS) > { > arm_record_unsupported_insn (arm_record); > ret = -1; > } > ... > where ret == 1 is mapped to -1. > > The 1 is returned by arm_linux_syscall_record and is meant to be interpreted > using this categorization: > - res < 0: Process record: failed to record execution log. > - res == 0: No failure. > - res > 0: Process record: inferior program stopped. > > But the port interprets 1 as ARM_RECORD_FAILURE: > ... > enum arm_record_result > { > ARM_RECORD_SUCCESS = 0, > ARM_RECORD_FAILURE = 1 > }; > ... > > We could fix this confusion this by: > - adding an ARM_RECORD_UNKNOWN = 2, and > - applying translations at the appropriate points, translating: > - ARM_RECORD_UNKNOWN into 1 and vice versa, > - ARM_RECORD_FAILURE into -1 and vice versa, > similar to what we did for aarch64 and loongarch. > > But it seems easier to adopt a go-with-the-flow approach, defining > ARM_RECORD_FAILURE as -1, freeing up the 1 for ARM_RECORD_UNKNOWN = 1. > > Then the aforementioned FAIL is fixed by simply doing: > ... > if (ret == ARM_RECORD_FAILURE) > arm_record_unsupported_insn (arm_record); > ... > > Tested on arm-linux. > > Reviewed-By: Guinevere Larsen > > [1] https://sourceware.org/pipermail/gdb-patches/2026-February/225372.html > --- > gdb/arm-tdep.c | 43 +++++++++++++++++++++++++++---------------- > 1 file changed, 27 insertions(+), 16 deletions(-) > > diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c > index dabae0aec0f..7dfde6649d9 100644 > --- a/gdb/arm-tdep.c > +++ b/gdb/arm-tdep.c > @@ -11195,10 +11195,30 @@ sbo_sbz (uint32_t insn, uint32_t bit_num, uint32_t len, uint32_t sbo) > return 1; > } > > +/* The record infrastructure supports the following result values: > + 1. res < 0: Process record: failed to record execution log. > + 2. res == 0: No failure. > + 3. res > 0: Process record: inferior program stopped. > + > + For aarch64, we have two distinct failure values: > + - AARCH64_RECORD_FAILURE: > + Process record: failed to record execution log. > + - AARCH64_RECORD_UNSUPPORTED: > + Process record does not support instruction $hex at address $hex. > + Process record: failed to record execution log. > + > + For some reason for arm we don't have an UNSUPPORTED enum value, and > + instead treat ARM_RECORD_FAILURE like an UNSUPPORTED enum value. */ > + Probably historical reasons. > enum arm_record_result > { > + /* Process record does not support instruction $hex at address $hex. > + Process record: failed to record execution log. */ > + ARM_RECORD_FAILURE = -1, > + /* No failure. */ > ARM_RECORD_SUCCESS = 0, > - ARM_RECORD_FAILURE = 1 > + /* Process record: inferior program stopped. */ > + ARM_RECORD_UNKNOWN = 1, > }; > > enum arm_record_strx_t > @@ -14576,11 +14596,8 @@ decode_insn (abstract_instruction_reader &reader, > then we need not decode it anymore. */ > ret = arm_handle_insn[insn_id] (arm_record); > } > - if (ret != ARM_RECORD_SUCCESS) > - { > - arm_record_unsupported_insn (arm_record); > - ret = -1; > - } > + if (ret == ARM_RECORD_FAILURE) > + arm_record_unsupported_insn (arm_record); > } > else if (THUMB_RECORD == record_type) > { > @@ -14588,11 +14605,8 @@ decode_insn (abstract_instruction_reader &reader, > arm_record->cond = -1; > insn_id = bits (arm_record->arm_insn, 13, 15); > ret = thumb_handle_insn[insn_id] (arm_record); > - if (ret != ARM_RECORD_SUCCESS) > - { > - arm_record_unsupported_insn (arm_record); > - ret = -1; > - } > + if (ret == ARM_RECORD_FAILURE) > + arm_record_unsupported_insn (arm_record); > } > else if (THUMB2_RECORD == record_type) > { > @@ -14605,11 +14619,8 @@ decode_insn (abstract_instruction_reader &reader, > > ret = thumb2_record_decode_insn_handler (arm_record); > > - if (ret != ARM_RECORD_SUCCESS) > - { > - arm_record_unsupported_insn (arm_record); > - ret = -1; > - } > + if (ret == ARM_RECORD_FAILURE) > + arm_record_unsupported_insn (arm_record); > } > else > { > > base-commit: 1add703e09f0f8d073cde4af9d11cd59996e9763 The patch looks fine for me. Approved-By: Luis Machado