mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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@suse.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: George Dunlap <george.dunlap@citrix.com>
master commit: 3fd3b266d4
master date: 2019-05-13 09:51:23 +0200
This commit is contained in:
1 parent
b4f291b0ca
commit
0dcd945a67
1 file changed
+7
-1
+7
-1
@@ -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); \
|
||||
|
||||