From patchwork Tue Jan 8 13:02:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jon Doron X-Patchwork-Id: 1021891 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LFYetb9R"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43YstG3mpLz9sDT for ; Wed, 9 Jan 2019 00:04:54 +1100 (AEDT) Received: from localhost ([127.0.0.1]:58844 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ggr3s-0003kL-K7 for incoming@patchwork.ozlabs.org; Tue, 08 Jan 2019 08:04:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36647) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ggr1t-0002mV-KS for qemu-devel@nongnu.org; Tue, 08 Jan 2019 08:02:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ggr1r-0003Uu-SP for qemu-devel@nongnu.org; Tue, 08 Jan 2019 08:02:49 -0500 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:45780) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ggr1r-0003M1-HD for qemu-devel@nongnu.org; Tue, 08 Jan 2019 08:02:47 -0500 Received: by mail-wr1-x444.google.com with SMTP id t6so3920699wrr.12 for ; Tue, 08 Jan 2019 05:02:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2DXEDHlayEDOW9cCB1gAZSgFKCLKz6YilXUnC5AKR1E=; b=LFYetb9RGLQqzwLqVBsrd/xACxcGIaVLaXmpaGeD1BclStTz37XIsUBxwRKJVtS6kO wwVYUDGatV5GqfEcgC7NSAGinovp2YyDFTpFkPJ6b36NUGTedh9dmu3QsgsKULzq/bXc hqQb+er7KharrQR3WTwjySi4jI8v9pbVwMzDKK3+e8Fik6s+efNMoEfTrho1gCWYXj9y SZN0UYaSAlFv5BUhmU76UiRTRCPXEQc01M4fm042xy0b6HlFbEQNhiVwPKChM9/4PVum PyDLTxSFFBriWDaqbXD7b2WsM9ucsPPDWgkr3QAdLFT2IcpcJvO5XsyRhYBxggMAibao kMDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2DXEDHlayEDOW9cCB1gAZSgFKCLKz6YilXUnC5AKR1E=; b=R9K83ixCfT49fayw4sx/Wd0MSZ3DD8wTzhZOC1Hkvd7OIOoLfbano+hEOq2wuBY8wB dw/4ybcIv6K3Onw5VUvEwBHTZ5u+bJ9DWt/6QyKCGOInt+1kCgewVMZjImsQDJSsBsoS jXxyTiVEdg9OViKek3NhH3YZeXSzfNRxF0NVRs0Y2qQ5TUGZ9wSPzB+Vo5pRS4LoSnp/ GSSmxkIgG1xerI3BVL4I0Xy8rHIE8SEvBDyaHqdCSM8GO4h+kFJGWlKZNarRt8nhQd2H dWLcyXb/LtOjHRCPYgtAIJb7kxPJ1cX+yazJU6xgZykrY3wIsb/9yQo9MkwHL7f+k5Nu 46uw== X-Gm-Message-State: AJcUukdlfskqSBj6/Eg4bNCPWPlllCTNcjrwu8M8atvDQ7ejIwDyTL2Z rO4jfoG2sRoQfDlydwTSDShHSbJ2SKU= X-Google-Smtp-Source: ALg8bN71OffAHOocQaMZ2toIbtzp3c+5f8j20n2jbaFD3sn5wG/R7xPV5J2OiVFRhQ5khho1ohRoiA== X-Received: by 2002:adf:fdc2:: with SMTP id i2mr1464059wrs.117.1546952563934; Tue, 08 Jan 2019 05:02:43 -0800 (PST) Received: from linux.local ([82.166.99.178]) by smtp.gmail.com with ESMTPSA id i13sm52646874wrw.32.2019.01.08.05.02.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 08 Jan 2019 05:02:42 -0800 (PST) From: Jon Doron To: qemu-devel@nongnu.org Date: Tue, 8 Jan 2019 15:02:19 +0200 Message-Id: <20190108130219.18550-1-arilou@gmail.com> X-Mailer: git-send-email 2.19.2 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 Subject: [Qemu-devel] [PATCH v2] dump: Set correct vaddr for ELF dump X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, lersek@redhat.com, Jon Doron Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" vaddr needs to be equal to the paddr since the dump file represents the physical memory image. Without setting vaddr correctly, GDB would load all the different memory regions on top of each other to vaddr 0, thus making GDB showing the wrong memory data for a given address. Signed-off-by: Jon Doron Tested-by: Marc-André Lureau Reviewed-by: Marc-André Lureau Acked-by: Laszlo Ersek --- dump.c | 5 +++-- scripts/dump-guest-memory.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dump.c b/dump.c index 4ec94c5e25..7a56e254d4 100644 --- a/dump.c +++ b/dump.c @@ -192,7 +192,7 @@ static void write_elf64_load(DumpState *s, MemoryMapping *memory_mapping, phdr.p_paddr = cpu_to_dump64(s, memory_mapping->phys_addr); phdr.p_filesz = cpu_to_dump64(s, filesz); phdr.p_memsz = cpu_to_dump64(s, memory_mapping->length); - phdr.p_vaddr = cpu_to_dump64(s, memory_mapping->virt_addr); + phdr.p_vaddr = cpu_to_dump64(s, memory_mapping->virt_addr) ? : phdr.p_paddr; assert(memory_mapping->length >= filesz); @@ -216,7 +216,8 @@ static void write_elf32_load(DumpState *s, MemoryMapping *memory_mapping, phdr.p_paddr = cpu_to_dump32(s, memory_mapping->phys_addr); phdr.p_filesz = cpu_to_dump32(s, filesz); phdr.p_memsz = cpu_to_dump32(s, memory_mapping->length); - phdr.p_vaddr = cpu_to_dump32(s, memory_mapping->virt_addr); + phdr.p_vaddr = + cpu_to_dump32(s, memory_mapping->virt_addr) ? : phdr.p_paddr; assert(memory_mapping->length >= filesz); diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py index 198cd0fe40..2c587cbefc 100644 --- a/scripts/dump-guest-memory.py +++ b/scripts/dump-guest-memory.py @@ -163,6 +163,7 @@ class ELF(object): phdr = get_arch_phdr(self.endianness, self.elfclass) phdr.p_type = p_type phdr.p_paddr = p_paddr + phdr.p_vaddr = p_paddr phdr.p_filesz = p_size phdr.p_memsz = p_size self.segments.append(phdr)