summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoritz Angermann <moritz.angermann@gmail.com>2021-02-13 12:06:09 +0800
committerMoritz Angermann <moritz.angermann@gmail.com>2021-02-15 11:28:40 +0800
commit5fbf32fd651d761f4be357c80bc9ee480489f615 (patch)
tree4e473e50d2bcc1d5c8586ae6044825bee74f6272
parenta7d22795ed118abfe64f4fc55d96d8561007ce1e (diff)
downloadhaskell-wip/angerman/fix-warning.tar.gz
[libdw] stop cc from complainingwip/angerman/fix-warning
-rw-r--r--rts/Libdw.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/rts/Libdw.c b/rts/Libdw.c
index d45d9d0e5d..c0d7c9a4b1 100644
--- a/rts/Libdw.c
+++ b/rts/Libdw.c
@@ -133,8 +133,15 @@ int libdwLookupLocation(LibdwSession *session, Location *frame,
Dwfl_Module *mod = dwfl_addrmodule(session->dwfl, addr);
if (mod == NULL)
return 1;
+
+ // avoid unaligned pointer value
+ // Using &frame->object_file as argument to dwfl_module_info leads to
+ //
+ // error: taking address of packed member of ‘struct Location_’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
+ //
+ void *object_file = &frame->object_file;
dwfl_module_info(mod, NULL, NULL, NULL, NULL, NULL,
- &frame->object_file, NULL);
+ object_file, NULL);
// Find function name
frame->function = dwfl_module_addrname(mod, addr);