svn commit: r459106 - in head/devel/elfutils: . files
Alexey Dokuchaev
danfe at FreeBSD.org
Mon Jan 15 17:56:56 UTC 2018
Author: danfe
Date: Mon Jan 15 17:56:55 2018
New Revision: 459106
URL: https://svnweb.freebsd.org/changeset/ports/459106
Log:
Unbreak the build on sparc64 by converting to FreeBSD ptrace(2) API.
Added:
head/devel/elfutils/files/patch-backends_sparc__initreg.c (contents, props changed)
Modified:
head/devel/elfutils/Makefile
Modified: head/devel/elfutils/Makefile
==============================================================================
--- head/devel/elfutils/Makefile Mon Jan 15 17:47:48 2018 (r459105)
+++ head/devel/elfutils/Makefile Mon Jan 15 17:56:55 2018 (r459106)
@@ -19,7 +19,6 @@ BROKEN_aarch64= fails to build: fatal error: linux/ui
BROKEN_armv6= fails to build: fails to compile i386_disasm.c
BROKEN_armv7= fails to build: fails to compile i386_disasm.c
BROKEN_powerpc64= fails to build: error: field 'r' has incomplete type
-BROKEN_sparc64= fails to build: fails to compile dwarf_begin_elf.c
LIB_DEPENDS= libargp.so:devel/argp-standalone
PATCH_DEPENDS= ${NONEXISTENT}:devel/gnulib:extract
Added: head/devel/elfutils/files/patch-backends_sparc__initreg.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/elfutils/files/patch-backends_sparc__initreg.c Mon Jan 15 17:56:55 2018 (r459106)
@@ -0,0 +1,80 @@
+--- backends/sparc_initreg.c.orig 2017-06-19 14:45:16 UTC
++++ backends/sparc_initreg.c
+@@ -33,7 +33,7 @@
+ #include "system.h"
+ #include <stdlib.h>
+ #ifdef __sparc__
+-# include <asm/ptrace.h>
++# include <sys/types.h>
+ # include <sys/ptrace.h>
+ #endif
+
+@@ -50,29 +50,29 @@ EBLHOOK (set_initial_registers_tid) (pid
+ #else /* __sparc__ */
+
+
+- /* The pt_regs structure filled in by PTRACE_GETREGS provides the
++ /* The pt_regs structure filled in by PT_GETREGS provides the
+ PC, the global registers and the output registers. Note how the
+ %g0 register is not explicitly provided in the structure (it's
+ value is always 0) and the resulting weird packing in the u_regs
+ array: the last element is not used. */
+
+- struct pt_regs regs;
+- if (ptrace (PTRACE_GETREGS, tid, ®s, 0) == -1)
++ struct reg regs;
++ if (ptrace (PT_GETREGS, tid, (caddr_t)®s, 0) == -1)
+ return false;
+
+ /* PC: no DWARF number */
+- if (!setfunc (-1, 1, (Dwarf_Word *) ®s.tpc, arg))
++ if (!setfunc (-1, 1, (Dwarf_Word *) ®s.r_tpc, arg))
+ return false;
+
+ /* Global registers: DWARF 0 .. 7 */
+ Dwarf_Word zero = 0;
+ if (!setfunc (0, 1, &zero, arg))
+ return false;
+- if (!setfunc (1, 7, (Dwarf_Word *) ®s.u_regs[0], arg))
++ if (!setfunc (1, 7, (Dwarf_Word *) ®s.r_global[0], arg))
+ return false;
+
+ /* Output registers: DWARF 8 .. 15 */
+- if (!setfunc (8, 8, (Dwarf_Word *) ®s.u_regs[7], arg))
++ if (!setfunc (8, 8, (Dwarf_Word *) ®s.r_out[0], arg))
+ return false;
+
+ /* Local and input registers must be read from the stack. They are
+@@ -80,7 +80,7 @@ EBLHOOK (set_initial_registers_tid) (pid
+ read above. */
+
+ Dwarf_Word locals_outs[16];
+- Dwarf_Word sp = regs.u_regs[13];
++ Dwarf_Word sp = regs.r_out[5];
+
+ if (sp & 1)
+ {
+@@ -91,9 +91,9 @@ EBLHOOK (set_initial_registers_tid) (pid
+
+ for (unsigned i = 0; i < 16; i++)
+ {
+- locals_outs[i] = ptrace (PTRACE_PEEKDATA, tid,
++ locals_outs[i] = ptrace (PT_READ_D, tid,
+ (void *) (uintptr_t) (sp + (i * 8)),
+- NULL);
++ 0);
+ if (errno != 0)
+ return false;
+ }
+@@ -104,9 +104,9 @@ EBLHOOK (set_initial_registers_tid) (pid
+
+ for (unsigned i = 0; i < 8; i++)
+ {
+- Dwarf_Word tuple = ptrace (PTRACE_PEEKDATA, tid,
++ Dwarf_Word tuple = ptrace (PT_READ_D, tid,
+ (void *) (uintptr_t) (sp + (i * 8)),
+- NULL);
++ 0);
+ if (errno != 0)
+ return false;
+
More information about the svn-ports-all
mailing list