All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [git commit branch/2018.11.x] package/xen: fix build with gcc 8.1
@ 2019-03-25 16:27 Peter Korsgaard
  0 siblings, 0 replies; only message in thread
From: Peter Korsgaard @ 2019-03-25 16:27 UTC (permalink / raw)
  To: buildroot

commit: https://git.buildroot.net/buildroot/commit/?id=6f7f08e1cc31467c9d3c55e2f7e3f1f5b0310fb9
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2018.11.x

Fixes:
 - http://autobuild.buildroot.org/results/df5abe6ca8b4c8935f3d5c257aef816190771200

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit 9b2bf1b7458891ae652e3493ae87d1f7c4776a8b)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 ...-make-32-bit-gcc-8-1-non-debug-build-work.patch | 79 ++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/package/xen/0004-xenpmd-make-32-bit-gcc-8-1-non-debug-build-work.patch b/package/xen/0004-xenpmd-make-32-bit-gcc-8-1-non-debug-build-work.patch
new file mode 100644
index 0000000000..9c51c554cd
--- /dev/null
+++ b/package/xen/0004-xenpmd-make-32-bit-gcc-8-1-non-debug-build-work.patch
@@ -0,0 +1,79 @@
+From e75c9dc85fdeeeda0b98d8cd8d784e0508c3ffb8 Mon Sep 17 00:00:00 2001
+From: Wei Liu <wei.liu2@citrix.com>
+Date: Thu, 26 Jul 2018 15:58:54 +0100
+Subject: [PATCH] xenpmd: make 32 bit gcc 8.1 non-debug build work
+
+32 bit gcc 8.1 non-debug build yields:
+
+xenpmd.c:354:23: error: '%02x' directive output may be truncated writing between 2 and 8 bytes into a region of size 3 [-Werror=format-truncation=]
+     snprintf(val, 3, "%02x",
+                       ^~~~
+xenpmd.c:354:22: note: directive argument in the range [40, 2147483778]
+     snprintf(val, 3, "%02x",
+                      ^~~~~~
+xenpmd.c:354:5: note: 'snprintf' output between 3 and 9 bytes into a destination of size 3
+     snprintf(val, 3, "%02x",
+     ^~~~~~~~~~~~~~~~~~~~~~~~
+              (unsigned int)(9*4 +
+              ~~~~~~~~~~~~~~~~~~~~
+                             strlen(info->model_number) +
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             strlen(info->serial_number) +
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             strlen(info->battery_type) +
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             strlen(info->oem_info) + 4));
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+All info->* used in calculation are 32 bytes long, and the parsing
+code makes sure they are null-terminated, so the end result of the
+expression won't exceed 255, which should be able to be fit into 3
+bytes in hexadecimal format.
+
+Add an assertion to make gcc happy.
+
+Signed-off-by: Wei Liu <wei.liu2@citrix.com>
+Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Retrieved from:
+https://github.com/xen-project/xen/commit/e75c9dc85fdeeeda0b98d8cd8d784e0508c3ffb8]
+---
+ tools/xenpmd/xenpmd.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c
+index 56412a9a81c..1c801caa712 100644
+--- a/tools/xenpmd/xenpmd.c
++++ b/tools/xenpmd/xenpmd.c
+@@ -40,6 +40,7 @@
+ #include <unistd.h>
+ #include <sys/stat.h>
+ #include <xenstore.h>
++#include <assert.h>
+ 
+ /* #define RUN_STANDALONE */
+ #define RUN_IN_SIMULATE_MODE
+@@ -345,18 +346,17 @@ void write_ulong_lsb_first(char *temp_val, unsigned long val)
+ void write_battery_info_to_xenstore(struct battery_info *info)
+ {
+     char val[1024], string_info[256];
++    unsigned int len;
+ 
+     xs_mkdir(xs, XBT_NULL, "/pm");
+    
+     memset(val, 0, 1024);
+     memset(string_info, 0, 256);
+     /* write 9 dwords (so 9*4) + length of 4 strings + 4 null terminators */
+-    snprintf(val, 3, "%02x", 
+-             (unsigned int)(9*4 +
+-                            strlen(info->model_number) +
+-                            strlen(info->serial_number) +
+-                            strlen(info->battery_type) +
+-                            strlen(info->oem_info) + 4));
++    len = 9 * 4 + strlen(info->model_number) + strlen(info->serial_number) +
++          strlen(info->battery_type) + strlen(info->oem_info) + 4;
++    assert(len < 255);
++    snprintf(val, 3, "%02x", len);
+     write_ulong_lsb_first(val+2, info->present);
+     write_ulong_lsb_first(val+10, info->design_capacity);
+     write_ulong_lsb_first(val+18, info->last_full_capacity);

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2019-03-25 16:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-25 16:27 [Buildroot] [git commit branch/2018.11.x] package/xen: fix build with gcc 8.1 Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.