From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53755) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UJohg-0004dI-G7 for qemu-devel@nongnu.org; Sun, 24 Mar 2013 13:27:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UJohe-000138-J0 for qemu-devel@nongnu.org; Sun, 24 Mar 2013 13:27:32 -0400 Received: from mail-la0-x233.google.com ([2a00:1450:4010:c03::233]:63614) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UJohe-00012z-CS for qemu-devel@nongnu.org; Sun, 24 Mar 2013 13:27:30 -0400 Received: by mail-la0-f51.google.com with SMTP id fo13so9838287lab.24 for ; Sun, 24 Mar 2013 10:27:29 -0700 (PDT) Sender: Rabin Vincent From: Rabin Vincent Date: Sun, 24 Mar 2013 18:27:18 +0100 Message-Id: <1364146041-27041-4-git-send-email-rabin@rab.in> In-Reply-To: <1364146041-27041-1-git-send-email-rabin@rab.in> References: <1364146041-27041-1-git-send-email-rabin@rab.in> Subject: [Qemu-devel] [PATCHv2 3/6] dump: extract out get note size function List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Rabin Vincent Extract out the ELF note size function from i386 so we can use it from other targets. Signed-off-by: Rabin Vincent --- dump.c | 15 +++++++++++++++ include/sysemu/dump.h | 2 ++ target-i386/arch_dump.c | 14 ++------------ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/dump.c b/dump.c index c5e009a..4b7d76c 100644 --- a/dump.c +++ b/dump.c @@ -465,6 +465,21 @@ static hwaddr get_offset(hwaddr phys_addr, return -1; } +size_t dump_get_note_size(int class, const char *name, size_t descsz) +{ + int name_size = strlen(name) + 1; + int note_head_size; + + if (class == ELFCLASS32) { + note_head_size = sizeof(Elf32_Nhdr); + } else { + note_head_size = sizeof(Elf64_Nhdr); + } + + return ((note_head_size + 3) / 4 + (name_size + 3) / 4 + + (descsz + 3) / 4) * 4; +} + int dump_write_elf_note(int class, const char *name, uint32_t type, void *desc, size_t descsz, write_core_dump_function f, void *opaque) diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h index b07816a..a06b149 100644 --- a/include/sysemu/dump.h +++ b/include/sysemu/dump.h @@ -36,4 +36,6 @@ int dump_write_elf_note(int class, const char *name, uint32_t type, void *desc, size_t descsz, write_core_dump_function f, void *opaque); +size_t dump_get_note_size(int class, const char *name, size_t descsz); + #endif diff --git a/target-i386/arch_dump.c b/target-i386/arch_dump.c index eea7f7f..49fa024 100644 --- a/target-i386/arch_dump.c +++ b/target-i386/arch_dump.c @@ -307,18 +307,10 @@ int cpu_get_dump_info(ArchDumpInfo *info) ssize_t cpu_get_note_size(int class, int machine, int nr_cpus) { - int name_size = 5; /* "CORE" or "QEMU" */ size_t elf_note_size = 0; size_t qemu_note_size = 0; int elf_desc_size = 0; int qemu_desc_size = 0; - int note_head_size; - - if (class == ELFCLASS32) { - note_head_size = sizeof(Elf32_Nhdr); - } else { - note_head_size = sizeof(Elf64_Nhdr); - } if (machine == EM_386) { elf_desc_size = sizeof(x86_elf_prstatus); @@ -330,10 +322,8 @@ ssize_t cpu_get_note_size(int class, int machine, int nr_cpus) #endif qemu_desc_size = sizeof(QEMUCPUState); - elf_note_size = ((note_head_size + 3) / 4 + (name_size + 3) / 4 + - (elf_desc_size + 3) / 4) * 4; - qemu_note_size = ((note_head_size + 3) / 4 + (name_size + 3) / 4 + - (qemu_desc_size + 3) / 4) * 4; + elf_note_size = dump_get_note_size(class, "CORE", elf_desc_size); + qemu_note_size = dump_get_note_size(class, "QEMU", qemu_desc_size); return (elf_note_size + qemu_note_size) * nr_cpus; } -- 1.7.10.4