void-packages/srcpkgs/elfutils/patches/fix-aarch64_fregs.patch

23 lines
726 B
Diff
Raw Normal View History

2016-08-09 03:55:36 +02:00
It looks like fregs.vregs[] is an array of double?
Casting to Dwarf_Word instead of & 0xFFFFFFF should do.
--- backends/aarch64_initreg.c 2015-11-27 14:36:29.000000000 +0100
+++ backends/aarch64_initreg.c 2016-08-09 03:47:25.428560159 +0200
2016-09-17 16:53:11 +02:00
@@ -33,7 +33,6 @@
2016-08-09 03:55:36 +02:00
#include "system.h"
#include <assert.h>
#ifdef __aarch64__
2016-09-17 16:53:11 +02:00
-# include <linux/uio.h>
2016-08-09 03:55:36 +02:00
# include <sys/user.h>
# include <sys/ptrace.h>
/* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */
@@ -82,7 +82,7 @@
Dwarf_Word dwarf_fregs[32];
for (int r = 0; r < 32; r++)
- dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF;
+ dwarf_fregs[r] = (Dwarf_Word)fregs.vregs[r];
if (! setfunc (64, 32, dwarf_fregs, arg))
return false;