diff mbox

Define the architecture for compressed dump format.

Message ID 1391101291-50118-1-git-send-email-tumanova@linux.vnet.ibm.com
State New
Headers show

Commit Message

Ekaterina Tumanova Jan. 30, 2014, 5:01 p.m. UTC
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(-)

Comments

Laszlo Ersek Jan. 30, 2014, 5:20 p.m. UTC | #1
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
Ekaterina Tumanova Jan. 31, 2014, 1:45 p.m. UTC | #2
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 mbox

Patch

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