From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1p5iNH-0007Th-AF for mharc-grub-devel@gnu.org; Thu, 15 Dec 2022 02:09:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5iND-0007T4-0R for grub-devel@gnu.org; Thu, 15 Dec 2022 02:09:43 -0500 Received: from mail-qt1-x834.google.com ([2607:f8b0:4864:20::834]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p5iNB-000820-JM for grub-devel@gnu.org; Thu, 15 Dec 2022 02:09:42 -0500 Received: by mail-qt1-x834.google.com with SMTP id jr11so4484584qtb.7 for ; Wed, 14 Dec 2022 23:09:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficientek-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6KAH6yRiQHEBLQi3Z4PzpJfT7qz5WMqX6ubaKG21PzU=; b=nzx9TjT2Gi6LCw5f3AQBstc25ilfWBkA9UNwRopba0CdfFIECNJzz0ygD5L9g0ai/i bpkLa+bEuWUBs6vtO+tcfeBPxYqZve4mO4/dsBMy7YQdabFGaSv2J9l2cIxQXL3aPRnG Vr/5gLWOctB/GhN8OZbKtr+FrOU7CCZlfh9vAfm8oejAr5LAVaAeBq+jxHFyTn5d+gm0 alJGVqE14zTiL8PZlqT7xtaybCoQTXDahR8P+Tu8MVXBPt/OL/rt+L39U/bJ6Kqtzggd hyjSYn4l8JQPEHTyXIE7l8S2hiUyEb/zFfFlyai0Nbk9JF5Mqw3O1TcJdJTA+HGMQXt+ wkHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6KAH6yRiQHEBLQi3Z4PzpJfT7qz5WMqX6ubaKG21PzU=; b=6gN9WDInwuu2+kEepYnMk99AsBu7lGQxvSJeSpijdQJRwx61J2OHxUYI7RlOVnpg0l 76lBjyey11RWv08yqPwHYL9F0YmRg/Y1V3BMhsaCzJ1ECD92Y+CP+y+hmlodkJQ9iRPR 6pbMzmvS0sHHgnycV+opNFom4CBisK/RhH5664eHacLA29jAXh0+SWgqDntTo4HC/DO0 8viCU23vPhTRq2bmCKIDUTg33u79i1bQGNh1bj9yCBY7MHnBXWfOcQ0zUNTQPDMTs7sD jXpiG3sXG6yUsV79oM7wE4sTHc8KTTYquJrhbuDSFqROoD9eVUxU77PaGBbn4QYMwyG2 iJ6w== X-Gm-Message-State: ANoB5pmwHEpbtl8egen4LZ7jFRAtFQZjR5F6z7Xnn2Cj/iNER/hLJD7W 5mfjWK6xWhYOCNTXFI1IZDFodeK5lQmIh+8i X-Google-Smtp-Source: AA0mqf7FdUqL/ZRSZNBxvAPZ4QY1WQVUouLY8O1sGfqTMN804tIs+sKakcxjpmV1B1TypW2/7MhSDA== X-Received: by 2002:a05:622a:2511:b0:3a8:1291:a664 with SMTP id cm17-20020a05622a251100b003a81291a664mr29360237qtb.54.1671088180607; Wed, 14 Dec 2022 23:09:40 -0800 (PST) Received: from crass-HP-ZBook-15-G2.lan ([37.218.244.251]) by smtp.gmail.com with ESMTPSA id fy16-20020a05622a5a1000b003a7ec97c882sm3125068qtb.6.2022.12.14.23.09.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Dec 2022 23:09:39 -0800 (PST) From: Glenn Washburn To: grub-devel@gnu.org, Daniel Kiper Cc: Glenn Washburn Subject: [PATCH v3 05/15] gdb: Get correct mod variable value Date: Thu, 15 Dec 2022 01:07:40 -0600 Message-Id: <20221215070750.102591-6-development@efficientek.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221215070750.102591-1-development@efficientek.com> References: <20221215070750.102591-1-development@efficientek.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::834; envelope-from=development@efficientek.com; helo=mail-qt1-x834.google.com X-Spam_score_int: 14 X-Spam_score: 1.4 X-Spam_bar: + X-Spam_report: (1.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Dec 2022 07:09:43 -0000 For some reason, GDB is breaking on grub_dl_add() before the function has setup its stack frame, but GDB thinks it has. So the value of mod is bogus. To get the correct value, create a one-time break on grub_dl_get(), which is the first line of grub_dl_add(). When this break point hits, grub_dl_add() will have finished setting up it stack frame. But at this point we will be in grub_dl_get()'s stack frame. So go one frame up, which will be grub_dl_add(), to get mod's value. Signed-off-by: Glenn Washburn --- grub-core/gdb_grub.in | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/grub-core/gdb_grub.in b/grub-core/gdb_grub.in index 61dc4644fb..78219ea36e 100644 --- a/grub-core/gdb_grub.in +++ b/grub-core/gdb_grub.in @@ -74,7 +74,17 @@ define runtime_load_module break grub_dl_add commands silent - load_module mod + # GDB has stopped before the call frame is setup, so mod does + # not have the correct value. Create a one-time break on the + # next function call and then go one frame up, back to the + # grub_dl_add frame, to get the correct value for mod. + tbreak grub_dl_get + commands + silent + fr 1 + load_module mod + cont + end cont end end -- 2.34.1