aboutsummaryrefslogtreecommitdiffstats
path: root/main/elfutils/fix-aarch64_fregs.patch
blob: bafa8012cf9ef78a57ccad471a7df076b4232933 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
It looks like fregs.vregs[] is an array of double?
Casting to Dwarf_Word instead of & 0xFFFFFFF should do.

--- a/backends/aarch64_initreg.c	2015-11-27 14:36:29.000000000 +0100
+++ b/backends/aarch64_initreg.c	2016-08-09 03:47:25.428560159 +0200
@@ -33,7 +33,6 @@
 #include "system.h"
 #include <assert.h>
 #ifdef __aarch64__
-# include <linux/uio.h>
 # 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;