From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id H8lKOnfS0mdMNA4AWB0awg (envelope-from ) for ; Thu, 13 Mar 2025 08:41:27 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=MiI0BNt+; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id DD0511E105; Thu, 13 Mar 2025 08:41:27 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 BB2411E08E for ; Thu, 13 Mar 2025 08:41:26 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4E4983858C48 for ; Thu, 13 Mar 2025 12:41:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4E4983858C48 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=MiI0BNt+ Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTP id BF7F43858D33 for ; Thu, 13 Mar 2025 12:40:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BF7F43858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BF7F43858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741869650; cv=none; b=rNocwQ3OV5ogaEzUbvqwLMwKWJ37DqtlZrwJTdEUxjz27xmPTkpcbtsvuTpOnvVwu7B2Jf5OBgikomh2uyGkWkGmpDB8AEB2A9efk88JwDGCrE+QloVxYhJGlaFRtBcU2Xie2naDyv7GeWdIEPKJEAKJEwrFFI9llH3AfEVfGok= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741869650; c=relaxed/simple; bh=ZJMiCtOfO0YEgOIzb9cEh20fvfxk1FvJI1pjOz4SPk4=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=bZ05ncYAsPmAdxOSOXr/1qXss2ZZ9315p8oeJ/eUEvJ4K+EtgPaegMGB3bc6dpz4M7/j2n2zs00LNcXK0UkxG7q7TF5I1efqmdd0PAGd7gGa5AZvvKWplnrMfPZc/3vDA0kmYxjJfKw1ozhrPKs/v0qLzOacEAKUQn4gjypwYWI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BF7F43858D33 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741869650; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=I1H12yoZyNfWp8fAa5y3Y9IDI+kqwdkFJR0JrqKTngY=; b=MiI0BNt+SbUpqvJ2u8lrNI7MeSVsIAPUfNF4ocbJb6iWxJwYjAx7nZ8jyaPUB519eRYFSH cdp2OPbN1ICWzcie7bVjb0DzDoXptV4dCl1DVr2X2zhZ68rXqhPPtroML9j2npazD16EWe z7sLoDQp59Rjr3Xx0wLPoHGbgwkTGRQ= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-693-sP38P71QPwqNw6Yj3rJEwg-1; Thu, 13 Mar 2025 08:40:49 -0400 X-MC-Unique: sP38P71QPwqNw6Yj3rJEwg-1 X-Mimecast-MFC-AGG-ID: sP38P71QPwqNw6Yj3rJEwg_1741869649 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c54767e507so160294385a.1 for ; Thu, 13 Mar 2025 05:40:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741869649; x=1742474449; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=I1H12yoZyNfWp8fAa5y3Y9IDI+kqwdkFJR0JrqKTngY=; b=GMLNmq3R9rvhaCy+kZ3NnaJk/gZqmNJmuN9NMTTzSiM4LVnRGaeaxZzNdlZJn8Uh+z L4uNyJkWJDCx5XVaAe57jkNIybgH0udHQlXl/HCYAQlbu2gqsaID6h3ajrs9WtE/bkj1 sFgPRDMogBv3DHnTTsvZThx+vMCGzw80U0/Y9TZJpKrYc63tzrnAmnG9o+AFXQT7GErR X9048dLzOYSoQJdjpikiD5trh29NBUWrciO5JvlntDLvoxPiBHkUgb1xOo3nF0x4MvQi Y7XgAuQoa5sLvQTS+dduUnDLFD4PzNHTXN4S01DvZYKuq3xaFMdcHceXSy9ln7kpItOI Xt1A== X-Forwarded-Encrypted: i=1; AJvYcCV43owkwkYWHlXpgCz1pd4eF0RJ3s5oe6cgxeZrFUPVyECa89q8ywVeXtuME5TPrkcgdvO04ov+zJ4w0g==@sourceware.org X-Gm-Message-State: AOJu0Ywu5z8o2MOaButcEMWUGf9eDmtilGFxeilUeohnTi8wcrzsC9D4 YfIHYaMHOkON5Go4F45KBnqKaRat9qHXRndg8w5zxXO41YOLME7u6rNqetK3pobdi9M1tRKZDgh hsYQZbLrvkxUfbam+o+PvoVRFEtf69yjz44PeSmt2OmjY0WWXVMQRTKHE5LA= X-Gm-Gg: ASbGnct8jRpTZXOCmXcAXSz2CoAF+VvlSDEoOqmzCEH8U/nr4zJPes8svqEbeZ8VD5D PGXz7bWh8+FqF2v3YhFXZ9zloz+sMR4vN2/W9MvjG45SP6GvY/h79cxIvF6nVJn4TAz3Jo3l+dK l1YXyhyt2K/7jqqTKXyIZuNzc3Gjl27wUxIht+RXhqqj6vF6t8QqzG8xd/zyr8bWWpjzP39H3FJ zF3plbAJwmVY76b4nZZAR5++NGRz6LgCHOhMRQwqV1Y3Qjbd9DgGv2NAXcVDEalzotyweXlBX1z R7yZlUEip6SrGVZwMjFzw1Em/yI= X-Received: by 2002:a05:620a:2606:b0:7c5:5801:ea9a with SMTP id af79cd13be357-7c55801eba0mr2032607785a.11.1741869648720; Thu, 13 Mar 2025 05:40:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFJx0G9R7zWGQ5Z410p2wTCvu+9hcyofsHIoPGVzzGWrNPbt3jGqzfD2DhzEUy6DdSeucBjUg== X-Received: by 2002:a05:620a:2606:b0:7c5:5801:ea9a with SMTP id af79cd13be357-7c55801eba0mr2032604985a.11.1741869648349; Thu, 13 Mar 2025 05:40:48 -0700 (PDT) Received: from ?IPV6:2804:14d:8084:9a69::1001? ([2804:14d:8084:9a69::1001]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c573c545c5sm94837785a.21.2025.03.13.05.40.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Mar 2025 05:40:47 -0700 (PDT) Message-ID: <6cab43c6-85c9-4834-9f44-9cc1267621b7@redhat.com> Date: Thu, 13 Mar 2025 09:40:45 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] [gdb/tdep] Backport i386_canonicalize_syscall rewrite to gdb-16-branch To: Tom de Vries , gdb-patches@sourceware.org References: <20250313095325.23876-1-tdevries@suse.de> From: Guinevere Larsen In-Reply-To: <20250313095325.23876-1-tdevries@suse.de> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 3vD6je7vjniM1CzvD-qBv-QrTczVOyvIhrTkGdpXzc0_1741869649 X-Mimecast-Originator: redhat.com Content-Language: en-US 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 On 3/13/25 6:53 AM, Tom de Vries wrote: > Commit fbfb29b304e ("[gdb/tdep] Rewrite i386_canonicalize_syscall") fixes > PR32770, which reproduces on the gdb-16-branch, but the commit is not ideal > for backporting because it completely rewrites i386_canonicalize_syscall. > > Instead, this is a version of the patch that adds a single line entry for each > syscall value for which i386_canonicalize_syscall gives a different result > with and without the patch. > > Consequently, the two versions give identical results. I've checked this for > syscalls 0 to 466. > > Tested on x86_64-linux with target board unix/-m32, on top of gdb-16-branch. > > PR tdep/32770 > Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32770 > --- Hi! I looked over all the special cases, and it mostly looks ok. There are quite a few syscalls where we have an older or similar enough version, like execveat and execve, or faccessat and faccessat2, but I can see from the accept4 patch why you wouldn't have done that... however, for the semtimedop_time64 syscall, you just converted to the semtimedop version. What is special about that one? -- Cheers, Guinevere Larsen She/Her/Hers > gdb/i386-linux-tdep.c | 153 +++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 152 insertions(+), 1 deletion(-) > > diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c > index 9dec83ac753..c2cd594cebe 100644 > --- a/gdb/i386-linux-tdep.c > +++ b/gdb/i386-linux-tdep.c > @@ -378,7 +378,158 @@ i386_all_but_ip_registers_record (struct regcache *regcache) > static enum gdb_syscall > i386_canonicalize_syscall (int syscall) > { > - enum { i386_syscall_max = 499 }; > + enum { i386_syscall_max = 466 }; > + > + switch (syscall) > + { > + case 359 /* socket */: return gdb_sys_socket; > + case 360 /* socketpair */: return gdb_sys_socketpair; > + case 361 /* bind */: return gdb_sys_bind; > + case 362 /* connect */: return gdb_sys_connect; > + case 363 /* listen */: return gdb_sys_listen; > + case 365 /* getsockopt */: return gdb_sys_getsockopt; > + case 366 /* setsockopt */: return gdb_sys_setsockopt; > + case 367 /* getsockname */: return gdb_sys_getsockname; > + case 368 /* getpeername */: return gdb_sys_getpeername; > + case 369 /* sendto */: return gdb_sys_sendto; > + case 370 /* sendmsg */: return gdb_sys_sendmsg; > + case 371 /* recvfrom */: return gdb_sys_recvfrom; > + case 372 /* recvmsg */: return gdb_sys_recvmsg; > + case 373 /* shutdown */: return gdb_sys_shutdown; > + case 393 /* semget */: return gdb_sys_semget; > + case 394 /* semctl */: return gdb_sys_semctl; > + case 395 /* shmget */: return gdb_sys_shmget; > + case 396 /* shmctl */: return gdb_sys_shmctl; > + case 397 /* shmat */: return gdb_sys_shmat; > + case 398 /* shmdt */: return gdb_sys_shmdt; > + case 399 /* msgget */: return gdb_sys_msgget; > + case 400 /* msgsnd */: return gdb_sys_msgsnd; > + case 401 /* msgrcv */: return gdb_sys_msgrcv; > + case 402 /* msgctl */: return gdb_sys_msgctl; > + case 420 /* semtimedop_time64 */: return gdb_sys_semtimedop; > + > + case 320 /* utimensat */: return gdb_sys_no_syscall; > + case 321 /* signalfd */: return gdb_sys_no_syscall; > + case 322 /* timerfd_create */: return gdb_sys_no_syscall; > + case 323 /* eventfd */: return gdb_sys_no_syscall; > + case 325 /* timerfd_settime */: return gdb_sys_no_syscall; > + case 326 /* timerfd_gettime */: return gdb_sys_no_syscall; > + case 327 /* signalfd4 */: return gdb_sys_no_syscall; > + case 333 /* preadv */: return gdb_sys_no_syscall; > + case 334 /* pwritev */: return gdb_sys_no_syscall; > + case 335 /* rt_tgsigqueueinfo */: return gdb_sys_no_syscall; > + case 336 /* perf_event_open */: return gdb_sys_no_syscall; > + case 337 /* recvmmsg */: return gdb_sys_no_syscall; > + case 338 /* fanotify_init */: return gdb_sys_no_syscall; > + case 339 /* fanotify_mark */: return gdb_sys_no_syscall; > + case 340 /* prlimit64 */: return gdb_sys_no_syscall; > + case 341 /* name_to_handle_at */: return gdb_sys_no_syscall; > + case 342 /* open_by_handle_at */: return gdb_sys_no_syscall; > + case 343 /* clock_adjtime */: return gdb_sys_no_syscall; > + case 344 /* syncfs */: return gdb_sys_no_syscall; > + case 345 /* sendmmsg */: return gdb_sys_no_syscall; > + case 346 /* setns */: return gdb_sys_no_syscall; > + case 347 /* process_vm_readv */: return gdb_sys_no_syscall; > + case 348 /* process_vm_writev */: return gdb_sys_no_syscall; > + case 349 /* kcmp */: return gdb_sys_no_syscall; > + case 350 /* finit_module */: return gdb_sys_no_syscall; > + case 351 /* sched_setattr */: return gdb_sys_no_syscall; > + case 352 /* sched_getattr */: return gdb_sys_no_syscall; > + case 353 /* renameat2 */: return gdb_sys_no_syscall; > + case 354 /* seccomp */: return gdb_sys_no_syscall; > + case 356 /* memfd_create */: return gdb_sys_no_syscall; > + case 357 /* bpf */: return gdb_sys_no_syscall; > + case 358 /* execveat */: return gdb_sys_no_syscall; > + case 364 /* accept4 */: return gdb_sys_no_syscall; > + case 374 /* userfaultfd */: return gdb_sys_no_syscall; > + case 375 /* membarrier */: return gdb_sys_no_syscall; > + case 376 /* mlock2 */: return gdb_sys_no_syscall; > + case 377 /* copy_file_range */: return gdb_sys_no_syscall; > + case 378 /* preadv2 */: return gdb_sys_no_syscall; > + case 379 /* pwritev2 */: return gdb_sys_no_syscall; > + case 380 /* pkey_mprotect */: return gdb_sys_no_syscall; > + case 381 /* pkey_alloc */: return gdb_sys_no_syscall; > + case 382 /* pkey_free */: return gdb_sys_no_syscall; > + case 384 /* arch_prctl */: return gdb_sys_no_syscall; > + case 385 /* io_pgetevents */: return gdb_sys_no_syscall; > + case 386 /* rseq */: return gdb_sys_no_syscall; > + case 404 /* clock_settime64 */: return gdb_sys_no_syscall; > + case 405 /* clock_adjtime64 */: return gdb_sys_no_syscall; > + case 406 /* clock_getres_time64 */: return gdb_sys_no_syscall; > + case 407 /* clock_nanosleep_time64 */: return gdb_sys_no_syscall; > + case 408 /* timer_gettime64 */: return gdb_sys_no_syscall; > + case 409 /* timer_settime64 */: return gdb_sys_no_syscall; > + case 410 /* timerfd_gettime64 */: return gdb_sys_no_syscall; > + case 411 /* timerfd_settime64 */: return gdb_sys_no_syscall; > + case 412 /* utimensat_time64 */: return gdb_sys_no_syscall; > + case 413 /* pselect6_time64 */: return gdb_sys_no_syscall; > + case 414 /* ppoll_time64 */: return gdb_sys_no_syscall; > + case 416 /* io_pgetevents_time64 */: return gdb_sys_no_syscall; > + case 417 /* recvmmsg_time64 */: return gdb_sys_no_syscall; > + case 418 /* mq_timedsend_time64 */: return gdb_sys_no_syscall; > + case 419 /* mq_timedreceive_time64 */: return gdb_sys_no_syscall; > + case 421 /* rt_sigtimedwait_time64 */: return gdb_sys_no_syscall; > + case 422 /* futex_time64 */: return gdb_sys_no_syscall; > + case 423 /* sched_rr_get_interval_time64 */: return gdb_sys_no_syscall; > + case 424 /* pidfd_send_signal */: return gdb_sys_no_syscall; > + case 425 /* io_uring_setup */: return gdb_sys_no_syscall; > + case 426 /* io_uring_enter */: return gdb_sys_no_syscall; > + case 427 /* io_uring_register */: return gdb_sys_no_syscall; > + case 428 /* open_tree */: return gdb_sys_no_syscall; > + case 429 /* move_mount */: return gdb_sys_no_syscall; > + case 430 /* fsopen */: return gdb_sys_no_syscall; > + case 431 /* fsconfig */: return gdb_sys_no_syscall; > + case 432 /* fsmount */: return gdb_sys_no_syscall; > + case 433 /* fspick */: return gdb_sys_no_syscall; > + case 434 /* pidfd_open */: return gdb_sys_no_syscall; > + case 435 /* clone3 */: return gdb_sys_no_syscall; > + case 436 /* close_range */: return gdb_sys_no_syscall; > + case 437 /* openat2 */: return gdb_sys_no_syscall; > + case 438 /* pidfd_getfd */: return gdb_sys_no_syscall; > + case 439 /* faccessat2 */: return gdb_sys_no_syscall; > + case 440 /* process_madvise */: return gdb_sys_no_syscall; > + case 441 /* epoll_pwait2 */: return gdb_sys_no_syscall; > + case 442 /* mount_setattr */: return gdb_sys_no_syscall; > + case 443 /* quotactl_fd */: return gdb_sys_no_syscall; > + case 444 /* landlock_create_ruleset */: return gdb_sys_no_syscall; > + case 445 /* landlock_add_rule */: return gdb_sys_no_syscall; > + case 446 /* landlock_restrict_self */: return gdb_sys_no_syscall; > + case 447 /* memfd_secret */: return gdb_sys_no_syscall; > + case 448 /* process_mrelease */: return gdb_sys_no_syscall; > + case 449 /* futex_waitv */: return gdb_sys_no_syscall; > + case 450 /* set_mempolicy_home_node */: return gdb_sys_no_syscall; > + case 451 /* cachestat */: return gdb_sys_no_syscall; > + case 452 /* fchmodat2 */: return gdb_sys_no_syscall; > + case 453 /* map_shadow_stack */: return gdb_sys_no_syscall; > + case 454 /* futex_wake */: return gdb_sys_no_syscall; > + case 455 /* futex_wait */: return gdb_sys_no_syscall; > + case 456 /* futex_requeue */: return gdb_sys_no_syscall; > + case 457 /* statmount */: return gdb_sys_no_syscall; > + case 458 /* listmount */: return gdb_sys_no_syscall; > + case 459 /* lsm_get_self_attr */: return gdb_sys_no_syscall; > + case 460 /* lsm_set_self_attr */: return gdb_sys_no_syscall; > + case 461 /* lsm_list_modules */: return gdb_sys_no_syscall; > + case 462 /* mseal */: return gdb_sys_no_syscall; > + case 463 /* setxattrat */: return gdb_sys_no_syscall; > + case 464 /* getxattrat */: return gdb_sys_no_syscall; > + case 465 /* listxattrat */: return gdb_sys_no_syscall; > + case 466 /* removexattrat */: return gdb_sys_no_syscall; > + > + case 222 /* unused */: return gdb_sys_no_syscall; > + case 223 /* unused */: return gdb_sys_no_syscall; > + case 251 /* unused */: return gdb_sys_no_syscall; > + case 285 /* unused */: return gdb_sys_no_syscall; > + case 387 /* unused */: return gdb_sys_no_syscall; > + case 388 /* unused */: return gdb_sys_no_syscall; > + case 389 /* unused */: return gdb_sys_no_syscall; > + case 390 /* unused */: return gdb_sys_no_syscall; > + case 391 /* unused */: return gdb_sys_no_syscall; > + case 392 /* unused */: return gdb_sys_no_syscall; > + case 415 /* unused */: return gdb_sys_no_syscall; > + > + default: > + break; > + } > > if (syscall <= i386_syscall_max) > return (enum gdb_syscall) syscall; > > base-commit: 465465ce9ca4f3e6e29aeaf33f6a2220693f4e62