Message ID | 1391101291-50118-1-git-send-email-tumanova@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 01/30/14 18:01, Ekaterina Tumanova wrote: > If you apply this patch on top of your changes, your patches will work > on s390x as well. > > --- > dump.c | 8 ++++++-- > target-i386/cpu.h | 2 ++ > target-s390x/cpu.h | 1 + > 3 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/dump.c b/dump.c > index 8f64aab..12ad114 100644 > --- a/dump.c > +++ b/dump.c > @@ -32,6 +32,10 @@ > #ifdef CONFIG_SNAPPY > #include <snappy-c.h> > #endif > +#ifndef ELF_MACHINE_UNAME > +#define ELF_MACHINE_UNAME "Unknown" > +#warning "Compressed dump is not supported on this architecture" > +#endif > > static uint16_t cpu_convert_to_target16(uint16_t val, int endian) > { > @@ -817,7 +821,7 @@ static int create_header32(DumpState *s) > dh->nr_cpus = cpu_convert_to_target32(s->nr_cpus, endian); > bitmap_blocks = DIV_ROUND_UP(s->len_dump_bitmap, block_size) * 2; > dh->bitmap_blocks = cpu_convert_to_target32(bitmap_blocks, endian); > - memcpy(&(dh->utsname.machine), "i686", 4); > + strncpy(&(dh->utsname.machine), ELF_MACHINE_UNAME, sizeof(dh->utsname.machine)); > > if (s->flag_compress & DUMP_DH_COMPRESSED_ZLIB) { > status |= DUMP_DH_COMPRESSED_ZLIB; > @@ -924,7 +928,7 @@ static int create_header64(DumpState *s) > dh->nr_cpus = cpu_convert_to_target32(s->nr_cpus, endian); > bitmap_blocks = DIV_ROUND_UP(s->len_dump_bitmap, block_size) * 2; > dh->bitmap_blocks = cpu_convert_to_target32(bitmap_blocks, endian); > - memcpy(&(dh->utsname.machine), "x86_64", 6); > + strncpy(&(dh->utsname.machine), ELF_MACHINE_UNAME, sizeof(dh->utsname.machine)); > > if (s->flag_compress & DUMP_DH_COMPRESSED_ZLIB) { > status |= DUMP_DH_COMPRESSED_ZLIB; > diff --git a/target-i386/cpu.h b/target-i386/cpu.h > index 1fcbc82..198743c 100644 > --- a/target-i386/cpu.h > +++ b/target-i386/cpu.h > @@ -38,8 +38,10 @@ > > #ifdef TARGET_X86_64 > #define ELF_MACHINE EM_X86_64 > +#define ELF_MACHINE_UNAME "x86_64" > #else > #define ELF_MACHINE EM_386 > +#define ELF_MACHINE_UNAME "i686" > #endif > > #define CPUArchState struct CPUX86State > diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h > index 68b5ab7..bf7ae4c 100644 > --- a/target-s390x/cpu.h > +++ b/target-s390x/cpu.h > @@ -28,6 +28,7 @@ > #define TARGET_LONG_BITS 64 > > #define ELF_MACHINE EM_S390 > +#define ELF_MACHINE_UNAME "S390X" > > #define CPUArchState struct CPUS390XState > > Looks good to me, but I wonder if the #warning will break builds on other architectures. From the configure script it appears that -Werror is the default when: - building a git working copy on Linux, and - no relevant configure switch has been passed. Laszlo
You're right about the warning. I removed it. I also added the cast for the destination argument, which caused a warning as well. I tested on s390 and i386 laptop. If you ok with the patch, can you push it on top of this series? Thank you, Regards, Kate. Ekaterina Tumanova (1): Define the architecture for compressed dump format. dump.c | 7 +++++-- target-i386/cpu.h | 2 ++ target-s390x/cpu.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/dump.c b/dump.c index 8f64aab..12ad114 100644 --- a/dump.c +++ b/dump.c @@ -32,6 +32,10 @@ #ifdef CONFIG_SNAPPY #include <snappy-c.h> #endif +#ifndef ELF_MACHINE_UNAME +#define ELF_MACHINE_UNAME "Unknown" +#warning "Compressed dump is not supported on this architecture" +#endif static uint16_t cpu_convert_to_target16(uint16_t val, int endian) { @@ -817,7 +821,7 @@ static int create_header32(DumpState *s) dh->nr_cpus = cpu_convert_to_target32(s->nr_cpus, endian); bitmap_blocks = DIV_ROUND_UP(s->len_dump_bitmap, block_size) * 2; dh->bitmap_blocks = cpu_convert_to_target32(bitmap_blocks, endian); - memcpy(&(dh->utsname.machine), "i686", 4); + strncpy(&(dh->utsname.machine), ELF_MACHINE_UNAME, sizeof(dh->utsname.machine)); if (s->flag_compress & DUMP_DH_COMPRESSED_ZLIB) { status |= DUMP_DH_COMPRESSED_ZLIB; @@ -924,7 +928,7 @@ static int create_header64(DumpState *s) dh->nr_cpus = cpu_convert_to_target32(s->nr_cpus, endian); bitmap_blocks = DIV_ROUND_UP(s->len_dump_bitmap, block_size) * 2; dh->bitmap_blocks = cpu_convert_to_target32(bitmap_blocks, endian); - memcpy(&(dh->utsname.machine), "x86_64", 6); + strncpy(&(dh->utsname.machine), ELF_MACHINE_UNAME, sizeof(dh->utsname.machine)); if (s->flag_compress & DUMP_DH_COMPRESSED_ZLIB) { status |= DUMP_DH_COMPRESSED_ZLIB; diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 1fcbc82..198743c 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -38,8 +38,10 @@ #ifdef TARGET_X86_64 #define ELF_MACHINE EM_X86_64 +#define ELF_MACHINE_UNAME "x86_64" #else #define ELF_MACHINE EM_386 +#define ELF_MACHINE_UNAME "i686" #endif #define CPUArchState struct CPUX86State diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h index 68b5ab7..bf7ae4c 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -28,6 +28,7 @@ #define TARGET_LONG_BITS 64 #define ELF_MACHINE EM_S390 +#define ELF_MACHINE_UNAME "S390X" #define CPUArchState struct CPUS390XState