At 06/21/2012 01:28 AM, Rabin Vincent Wrote: > Extract out the ELF note size function from i386 so we can use it from > other targets. > > Signed-off-by: Rabin Vincent <ra...@rab.in>
This patch looks fine to me. Thanks Wen Congyang > --- > dump.c | 15 +++++++++++++++ > 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 be96c6c..d3ca953 100644 > --- a/dump.c > +++ b/dump.c > @@ -468,6 +468,21 @@ static target_phys_addr_t get_offset(target_phys_addr_t > 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/dump.h b/dump.h > index b07816a..a06b149 100644 > --- a/dump.h > +++ b/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 dbc94bc..e2d18a0 100644 > --- a/target-i386/arch_dump.c > +++ b/target-i386/arch_dump.c > @@ -305,18 +305,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); > @@ -328,10 +320,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; > }