From nobody Wed Jul 13 16:47:49 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 53B3917FD1E7; Wed, 13 Jul 2022 16:47:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Ljk7p1W2Yz3X7v; Wed, 13 Jul 2022 16:47:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657730870; 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; bh=4cGofwfdq7zLWibUbocr06nLit2pVRfIrNudrPLYBo4=; b=XDrO9b4HswV3PJoEdV2CcOXIHHWVzVy1QhvFLHhVr99VrXskfsn22kVstgT580dlMpt7d+ 3kQ3syJVVsDFXLV0fTlraXytucWfGCOKXLAyIxYk2OPiGl2epzB5UxTnh0dvCI9lrEFtWH n2BeAV8C5iywr+vrkQf2JlSzPvQOIMAJ8q0fKG44qusqCL0skd6WMvsiyxrHkS7Y894aB6 FhcvL+iQmzJQXG19qh2IQU5CrsA6iSSxaNQ7x8wL7qbGrDW3v4kFPSZQeJ6Lu3I1q08gyC 0In2Mxl3q4UzeXa938ZrxULih+F9j15Y4TI1ZP+rbtBwr6dr0xrW8sFn5/D1qA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ljk7p0YhszWC4; Wed, 13 Jul 2022 16:47:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 26DGlnDS052455; Wed, 13 Jul 2022 16:47:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 26DGln0k052454; Wed, 13 Jul 2022 16:47:49 GMT (envelope-from git) Date: Wed, 13 Jul 2022 16:47:49 GMT Message-Id: <202207131647.26DGln0k052454@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 6ab064ac064f - stable/13 - gcore: Use PT_GETREGSET for NT_THRMISC and NT_PTLWPINFO. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 6ab064ac064f7b8efcfccba656c56438ac7fcb96 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657730870; 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; bh=4cGofwfdq7zLWibUbocr06nLit2pVRfIrNudrPLYBo4=; b=pPazktzOmJYXztSDYbaOfhjAOEl39Z9TbfmVyNLO7GfM9V60UgT63VcFz2rRbxJ7u5zvGk IkRraneGZmn23lqCZzBVuYlgLDfxodLTFoS++N1xC1+CnFQtl0MGXrrds9fbU48n1pgQ1v ZxRTWNDL1yDx/ywMFmBzI8SsSXZqwDlM82aJBTaw6ptnV37nUr/D6rmcoqt7Rh1YvM86hE TF0+dSEQ+aXOCzjtJYebXcXa2vf3XqEzog3lG5afwVqyNkwemyOkrLWOvaCB5YojL7dcZz PwcHcPV893ftgXqOuMo1tgR5h6g7bYCgNz2Jd2128NOQ7v7d1jlZ6Tbpm9gcZQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1657730870; a=rsa-sha256; cv=none; b=HatxYYv1VrLIZF3lbZvIlOMrouBORsBuoaX3fqMe+Vv031GuS19zBZPE5TecHVxLCohx6t 7I/4NlxpZm8v9+b1Vn3FGurrsR8YWDwQ1kNqDlGQT9lIy474BkEw7F2YTMY3c+Uezkf9SH TxJK1RMIZC92AAQL8wE1s23YDsfwSpdv/af4jJ/AnpshhKGKIBXRYTifMPFyxKeUC7p2t+ W0x0oha0KQ1eiqqqjNicDxFu/2tqh/oltFftqt8YQXAPFc7xHezK8CS1Zc37dD97sTVUhj o289eOpLzs6dagWeXThCdVMZyZvZDmZaaLdzcII9hv746RUP1aBkGKjo2qadYw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6ab064ac064f7b8efcfccba656c56438ac7fcb96 commit 6ab064ac064f7b8efcfccba656c56438ac7fcb96 Author: John Baldwin AuthorDate: 2022-06-30 17:04:19 +0000 Commit: John Baldwin CommitDate: 2022-07-13 16:25:02 +0000 gcore: Use PT_GETREGSET for NT_THRMISC and NT_PTLWPINFO. This avoids the need for dealing with converting lwpinfo for alternate ABIs in gcore itself. Reviewed by: markj MFC after: 2 weeks Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D35667 (cherry picked from commit d95657a1a758e8d993a0eb92259f8c860a309207) --- usr.bin/gcore/elf32core.c | 38 ---------------------------------- usr.bin/gcore/elfcore.c | 52 ++--------------------------------------------- 2 files changed, 2 insertions(+), 88 deletions(-) diff --git a/usr.bin/gcore/elf32core.c b/usr.bin/gcore/elf32core.c index 98e2408c4aa9..29fb7d3608b4 100644 --- a/usr.bin/gcore/elf32core.c +++ b/usr.bin/gcore/elf32core.c @@ -12,41 +12,3 @@ #define ELFCORE_COMPAT_32 1 #include "elfcore.c" -static void -elf_convert_siginfo(struct siginfo32 *sid, siginfo_t *sis) -{ - - bzero(sid, sizeof(*sid)); - sid->si_signo = sis->si_signo; - sid->si_errno = sis->si_errno; - sid->si_code = sis->si_code; - sid->si_pid = sis->si_pid; - sid->si_uid = sis->si_uid; - sid->si_status = sis->si_status; - sid->si_addr = (uintptr_t)sis->si_addr; -#if _BYTE_ORDER == _BIG_ENDIAN - if (sis->si_value.sival_int == 0) - sid->si_value.sival_ptr = (uintptr_t)sis->si_value.sival_ptr; - else -#endif - sid->si_value.sival_int = sis->si_value.sival_int; - sid->si_timerid = sis->si_timerid; - sid->si_overrun = sis->si_overrun; -} - -static void -elf_convert_lwpinfo(struct ptrace_lwpinfo32 *pld, struct ptrace_lwpinfo *pls) -{ - - pld->pl_lwpid = pls->pl_lwpid; - pld->pl_event = pls->pl_event; - pld->pl_flags = pls->pl_flags; - pld->pl_sigmask = pls->pl_sigmask; - pld->pl_siglist = pls->pl_siglist; - elf_convert_siginfo(&pld->pl_siginfo, &pls->pl_siginfo); - memcpy(pld->pl_tdname, pls->pl_tdname, sizeof(pld->pl_tdname)); - pld->pl_child_pid = pls->pl_child_pid; - pld->pl_syscall_code = pls->pl_syscall_code; - pld->pl_syscall_narg = pls->pl_syscall_narg; -} - diff --git a/usr.bin/gcore/elfcore.c b/usr.bin/gcore/elfcore.c index 8a6fdb642aeb..b01adb9a73b4 100644 --- a/usr.bin/gcore/elfcore.c +++ b/usr.bin/gcore/elfcore.c @@ -85,13 +85,8 @@ struct sseg_closure { #ifdef ELFCORE_COMPAT_32 typedef struct prpsinfo32 elfcore_prpsinfo_t; -typedef struct ptrace_lwpinfo32 elfcore_lwpinfo_t; -static void elf_convert_lwpinfo(struct ptrace_lwpinfo32 *pld, - struct ptrace_lwpinfo *pls); #else typedef prpsinfo_t elfcore_prpsinfo_t; -typedef struct ptrace_lwpinfo elfcore_lwpinfo_t; -#define elf_convert_lwpinfo(d,s) *d = *s #endif typedef void* (*notefunc_t)(void *, size_t *); @@ -102,8 +97,6 @@ static void each_dumpable_segment(struct map_entry *, segment_callback, void *closure); static void elf_detach(void); /* atexit() handler. */ static void *elf_note_prpsinfo(void *, size_t *); -static void *elf_note_thrmisc(void *, size_t *); -static void *elf_note_ptlwpinfo(void *, size_t *); #if defined(__i386__) || defined(__amd64__) static void *elf_note_x86_xstate(void *, size_t *); #endif @@ -366,8 +359,8 @@ elf_putnotes(pid_t pid, struct sbuf *sb, size_t *sizep) for (i = 0; i < threads; ++i) { elf_putregnote(NT_PRSTATUS, tids[i], sb); elf_putregnote(NT_FPREGSET, tids[i], sb); - elf_putnote(NT_THRMISC, elf_note_thrmisc, tids + i, sb); - elf_putnote(NT_PTLWPINFO, elf_note_ptlwpinfo, tids + i, sb); + elf_putregnote(NT_THRMISC, tids[i], sb); + elf_putregnote(NT_PTLWPINFO, tids[i], sb); #if defined(__aarch64__) || defined(__arm__) elf_putregnote(NT_ARM_TLS, tids[i], sb); #endif @@ -682,47 +675,6 @@ elf_note_prpsinfo(void *arg, size_t *sizep) return (psinfo); } -static void * -elf_note_thrmisc(void *arg, size_t *sizep) -{ - lwpid_t tid; - struct ptrace_lwpinfo lwpinfo; - thrmisc_t *thrmisc; - - tid = *(lwpid_t *)arg; - thrmisc = calloc(1, sizeof(*thrmisc)); - if (thrmisc == NULL) - errx(1, "out of memory"); - ptrace(PT_LWPINFO, tid, (void *)&lwpinfo, - sizeof(lwpinfo)); - memset(&thrmisc->_pad, 0, sizeof(thrmisc->_pad)); - strcpy(thrmisc->pr_tname, lwpinfo.pl_tdname); - - *sizep = sizeof(*thrmisc); - return (thrmisc); -} - -static void * -elf_note_ptlwpinfo(void *arg, size_t *sizep) -{ - lwpid_t tid; - elfcore_lwpinfo_t *elf_info; - struct ptrace_lwpinfo lwpinfo; - void *p; - - tid = *(lwpid_t *)arg; - p = calloc(1, sizeof(int) + sizeof(elfcore_lwpinfo_t)); - if (p == NULL) - errx(1, "out of memory"); - *(int *)p = sizeof(elfcore_lwpinfo_t); - elf_info = (void *)((int *)p + 1); - ptrace(PT_LWPINFO, tid, (void *)&lwpinfo, sizeof(lwpinfo)); - elf_convert_lwpinfo(elf_info, &lwpinfo); - - *sizep = sizeof(int) + sizeof(struct ptrace_lwpinfo); - return (p); -} - #if defined(__i386__) || defined(__amd64__) static void * elf_note_x86_xstate(void *arg, size_t *sizep)