From nobody Tue Sep 5 19:20:53 2023 X-Original-To: dev-commits-ports-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 4RgFj152GKz4s1xG; Tue, 5 Sep 2023 19:20:53 +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 4RgFj14Zwjz4TfW; Tue, 5 Sep 2023 19:20:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1693941653; 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=UJh5lUpA6M3IhF0YhZ32oyPCbHi54EggC0zf734wCIs=; b=o1HUx53H7nKhC64uUCxN7sp9Ys5QfwLCYyJr2FlHdMjswq42PKwnSLXfYdQAWvKWRRRVxX sTJI0cndOWO2BJswUZ5C8brHAvdxlQAMBm5yOuBluw/VWGIjVuWXVddYunmoDmxJMFr7Hp ORkINUzUDwpUkqf7pMm63KnXxLeGQ9BmNJWDyalC+GzGPpxBUh/VAHZkQgIaK2X+jQ6/6G ir+3O8A7wuibC1Bg9lIk0cXfqIo5J9WNbuRpik1uogcNECLqQgaAP8I0kUYgzVNLvXMmkm oUqToDwpfRJSe6bm9FEtuwHgCFGdEheXLiTUwKubNOI++2yE953LBFJ5NIau4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1693941653; a=rsa-sha256; cv=none; b=H2gPbN0BoUxdY81FBE5NmuOD/pAuuKF6z9rnqc1lC2W7uZkN1Pa7HNo9qORXYvsQgzK4JW 3Eo/q7ipErBNVlwqbbeLeOo5XWDkMMZdjiMwpVV/MR03Svju3hoW4z/lW5YiG4kjfWno3M pIJ3EnGkfA9o8+y6NXbJurP25FGrCLGb/hRo2v/h+N4jfIECV7HpQCszJxfcxEQb4iTUGV yp+J1xm0rt6aZiSrqixSWJKuFZ51XZHjZgCIIVMWNWYChaYSzoaqeRBs13HWX9qBXXVWB5 e6bvQ5s5eLvOJoMhqB5AIDypt+lBJ1MyPC1J0UdNpF4PrYELuet8rVwBNODJ/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1693941653; 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=UJh5lUpA6M3IhF0YhZ32oyPCbHi54EggC0zf734wCIs=; b=IIr7NldUeWCOPxbE1jxm9btdiqDX34TTHHmjPqBqDKQqBuTODvH/6An4TvyYDjBapaczxU 8ylfZ6jt1n1utmFtRPGGUQ3oTW1LEYYEi4uWtdOpYYGiVcDa3l8qo+C6OtYLCYlY1TE10T oVtWBFqkRQwgG06Kh+ZIfxKuf1hZimbFO/H7OIPvudd+VkS1EcC7OVQ6XuD+ZUK/2Z7dkA 0TpBQoosVoOk8fr3PRRauv5j3sueTAuBDMHU7Xh2HgpoP9AEFS6D0ROqqnVPQ/mzLAKYOB 2sPlB3FTQ6nMSq4JvJAO0qJtjvopFrypOEdJDWoZJbKuI9/j/iWu9fy0gX0ycQ== 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 4RgFj13LQWzlth; Tue, 5 Sep 2023 19:20:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 385JKrGw067672; Tue, 5 Sep 2023 19:20:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 385JKr2H067654; Tue, 5 Sep 2023 19:20:53 GMT (envelope-from git) Date: Tue, 5 Sep 2023 19:20:53 GMT Message-Id: <202309051920.385JKr2H067654@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org From: Kyle Evans Subject: git: eb87c8cabbb5 - 2023Q3 - devel/gdb: kgdb: Handle stoppcbs compat List-Id: Commits to the quarterly branches of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-branches@freebsd.org X-BeenThere: dev-commits-ports-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: ports X-Git-Refname: refs/heads/2023Q3 X-Git-Reftype: branch X-Git-Commit: eb87c8cabbb5a6fd99583925b7b52a242203914f Auto-Submitted: auto-generated The branch 2023Q3 has been updated by kevans: URL: https://cgit.FreeBSD.org/ports/commit/?id=eb87c8cabbb5a6fd99583925b7b52a242203914f commit eb87c8cabbb5a6fd99583925b7b52a242203914f Author: Mark Jonhston AuthorDate: 2023-09-05 18:10:40 +0000 Commit: Kyle Evans CommitDate: 2023-09-05 19:20:27 +0000 devel/gdb: kgdb: Handle stoppcbs compat Use __FreeBSD_version to decide whether to dereference the stoppcbs symbol. PORTREVISION will be bumped as part of the next commit, which fixes another KBI breakage. Reviewed by: jhb, kevans Approved by: jhb (maintainer) (cherry picked from commit 7e2852846872215c7d7ad36d9ea15d593bbf343e) --- devel/gdb/files/kgdb/fbsd-kvm.c | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/devel/gdb/files/kgdb/fbsd-kvm.c b/devel/gdb/files/kgdb/fbsd-kvm.c index b5bc0f924612..bd4f71fecddd 100644 --- a/devel/gdb/files/kgdb/fbsd-kvm.c +++ b/devel/gdb/files/kgdb/fbsd-kvm.c @@ -279,6 +279,7 @@ fbsd_kvm_target_open (const char *args, int from_tty) kvm_t *nkvm; const char *kernel; std::string filename; + int osreldate; bool writeable; if (ops == NULL || ops->supply_pcb == NULL || ops->cpu_pcb_addr == NULL) @@ -340,6 +341,14 @@ fbsd_kvm_target_open (const char *args, int from_tty) } #endif + kvm = nkvm; + vmcore = std::move(filename); + current_inferior()->push_target (&fbsd_kvm_ops); + + /* Pop the target automatically upon failure. */ + target_unpush_up unpusher; + unpusher.reset (&fbsd_kvm_ops); + /* * Determine the first address in KVA. Newer kernels export * VM_MAXUSER_ADDRESS and the first kernel address can be @@ -353,11 +362,29 @@ fbsd_kvm_target_open (const char *args, int from_tty) kernstart = kgdb_lookup("kernbase"); } + try { + CORE_ADDR osreldatesym = kgdb_lookup("osreldate"); + osreldate = read_memory_unsigned_integer(osreldatesym, 4, + gdbarch_byte_order (target_gdbarch ())); + } catch (const gdb_exception_error &e) { + error ("Failed to look up osreldate"); + } + /* - * Lookup symbols needed for stoppcbs[] handling, but don't + * Look up symbols needed for stoppcbs handling, but don't * fail if they aren't present. */ stoppcbs = kgdb_lookup("stoppcbs"); + if (osreldate > 1400088) { + /* stoppcbs is now a pointer rather than an array. */ + try { + stoppcbs = read_memory_typed_address(stoppcbs, + builtin_type(target_gdbarch())->builtin_data_ptr); + } catch (const gdb_exception_error &e) { + stoppcbs = 0; + } + } + try { pcb_size = parse_and_eval_long("pcb_size"); } catch (const gdb_exception_error &e) { @@ -379,10 +406,6 @@ fbsd_kvm_target_open (const char *args, int from_tty) } } - kvm = nkvm; - vmcore = std::move(filename); - current_inferior()->push_target (&fbsd_kvm_ops); - kgdb_dmesg(); inf = current_inferior(); @@ -406,6 +429,9 @@ fbsd_kvm_target_open (const char *args, int from_tty) reinit_frame_cache (); print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC, 1); + + /* Keep the target pushed. */ + unpusher.release (); } void