From patchwork Wed Jan 9 08:22:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jon Doron X-Patchwork-Id: 1022319 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="ToW+eHKC"; 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 43ZMZc5XdRz9sDn for ; Wed, 9 Jan 2019 19:23:04 +1100 (AEDT) Received: from localhost ([127.0.0.1]:38466 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gh98g-0001BO-NT for incoming@patchwork.ozlabs.org; Wed, 09 Jan 2019 03:23:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58527) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gh98N-0001B4-7B for qemu-devel@nongnu.org; Wed, 09 Jan 2019 03:22:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gh98M-0005pu-Fd for qemu-devel@nongnu.org; Wed, 09 Jan 2019 03:22:43 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:45206) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gh98M-0005pX-3p for qemu-devel@nongnu.org; Wed, 09 Jan 2019 03:22:42 -0500 Received: by mail-wr1-x441.google.com with SMTP id t6so6640695wrr.12 for ; Wed, 09 Jan 2019 00:22:41 -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=oLbrshlJGlKKO4FSekSUxYGKGmmFqc06/xWa47UDTL8=; b=ToW+eHKCx5Z7hFB3u7mr1ke+OJ3Gdmk6b5IPT+jaxjjME2YmVuSQBurrXNBSS8l25W iNosiIlHuuNZzAFV+Eq7wjWN6vjo11BeY3GK9WjubzOmkhTEyyyj+Ml2WsneEV4MaZX2 OA11KZ5ra1cyTFe29fWewsmR7m/byIVSPooBVrjk/ZNHH2uzJ9cdf1S3CD4IRlxNhdmX aYqAqHTGSz6xnITty8k5jQpEQmcxPCiEME4NFE0rxS3sFHJVqxUL/HdQrXWIXc6MFiq0 9sC1yB/CKeYhe/JVnwOlVhi4I+DJnLOqVCF0wOAfPFOb6E3WKzkVK62LrsHPgZdh90QK H8+A== 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=oLbrshlJGlKKO4FSekSUxYGKGmmFqc06/xWa47UDTL8=; b=Ve77jcvhOuj2bsMd564W+vwDH2E5bVw73p/YwsnR08RC2QOvukWuHNCZHO1ymZjrUc /4U+VNkzOhwz6b60pUThvmgc7W9ifAV2lB0GTiMFa8tpLrDT5230t5/bHUbMnxeCGuui l+jBj1kQuovaKJXYqPOz6iToNXgd3zp5FeTwcVNOtmSBbinG/tDd+UxEDu1oyTsW8dxe 6eF6MJIoLguyld+4i863BoCFbaprclLkOcOS2zPTAO+vQPkLvhs61A0sC5uSuO8Qv5VK t5LPGkDYzW9cKwxGgR7ss1G1PxbX0b7KzO/E18d85b0SIrFQTJgy8P0/qccfpkfKRGdL 0dDg== X-Gm-Message-State: AJcUukft6GE8UV1P9twnZ4kynBkrg66Qln8ml3icv1qFg+7gKVNojWfS chKo9YihsN29ICroox5gLIkc/jw4 X-Google-Smtp-Source: ALg8bN5gMeP10XlIYBPFCb5KtGfBUWJQY32X387QBPyZxBZulHitft74T2WnRyH5hFTeROAfmthtwA== X-Received: by 2002:a05:6000:12c4:: with SMTP id l4mr3974216wrx.134.1547022159686; Wed, 09 Jan 2019 00:22:39 -0800 (PST) Received: from linux.local ([82.166.99.178]) by smtp.gmail.com with ESMTPSA id 202sm15749453wmt.8.2019.01.09.00.22.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 09 Jan 2019 00:22:38 -0800 (PST) From: Jon Doron To: qemu-devel@nongnu.org Date: Wed, 9 Jan 2019 10:22:03 +0200 Message-Id: <20190109082203.27142-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::441 Subject: [Qemu-devel] [PATCH v3] 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..de7f70f099 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)