|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.11] trace: fix build with gcc9
commit 45342cd88d564a7da2dfbbc921898805008b0b6c
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Thu Jun 6 14:06:29 2019 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Jun 6 14:06:29 2019 +0200
trace: fix build with gcc9
While I've not observed this myself, gcc 9 (imo validly) reportedly may
complain
trace.c: In function '__trace_hypercall':
trace.c:826:19: error: taking address of packed member of 'struct
<anonymous>' may result in an unaligned pointer value
[-Werror=address-of-packed-member]
826 | uint32_t *a = d.args;
and the fix is rather simple - remove the __packed attribute. Introduce
a BUILD_BUG_ON() as replacement, for the unlikely case that Xen might
get ported to an architecture where array alignment higher that that of
its elements.
Reported-by: Martin Liška <martin.liska@xxxxxxxx>
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx>
master commit: 3fd3b266d4198c06e8e421ca515d9ba09ccd5155
master date: 2019-05-13 09:51:23 +0200
---
xen/common/trace.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/xen/common/trace.c b/xen/common/trace.c
index 8cdc17b731..1e4a8a5c95 100644
--- a/xen/common/trace.c
+++ b/xen/common/trace.c
@@ -819,12 +819,18 @@ unlock:
void __trace_hypercall(uint32_t event, unsigned long op,
const xen_ulong_t *args)
{
- struct __packed {
+ struct {
uint32_t op;
uint32_t args[6];
} d;
uint32_t *a = d.args;
+ /*
+ * In lieu of using __packed above, which gcc9 legitimately doesn't
+ * like in combination with the address of d.args[] taken.
+ */
+ BUILD_BUG_ON(offsetof(typeof(d), args) != sizeof(d.op));
+
#define APPEND_ARG32(i) \
do { \
unsigned i_ = (i); \
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11
_______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |