Control: tags 788113 + pending

Dear maintainer,

I've prepared an NMU for proot (versioned as 5.1.0-1.1) and
uploaded it to DELAYED/10. Please feel free to tell me if I
should delay it longer.

Regards.

-- 
WBR, wRAR
diff -Nru proot-5.1.0/debian/changelog proot-5.1.0/debian/changelog
--- proot-5.1.0/debian/changelog	2015-01-27 18:29:21.000000000 +0500
+++ proot-5.1.0/debian/changelog	2016-11-26 22:12:08.000000000 +0500
@@ -1,3 +1,10 @@
+proot (5.1.0-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTBFS on arm64, patch by Sebastian Ramacher (Closes: #788113).
+
+ -- Andrey Rahmatullin <w...@debian.org>  Sat, 26 Nov 2016 22:12:08 +0500
+
 proot (5.1.0-1) unstable; urgency=low
   * Upgrade to latest PRoot version
     - PRoot is now embedding is own ELF interpreter
diff -Nru proot-5.1.0/debian/patches/arm64.patch proot-5.1.0/debian/patches/arm64.patch
--- proot-5.1.0/debian/patches/arm64.patch	1970-01-01 05:00:00.000000000 +0500
+++ proot-5.1.0/debian/patches/arm64.patch	2016-11-26 22:11:22.000000000 +0500
@@ -0,0 +1,134 @@
+diff -ru proot-5.1.0.orig/src/arch.h proot-5.1.0/src/arch.h
+--- proot-5.1.0.orig/src/arch.h
++++ proot-5.1.0/src/arch.h
+@@ -125,6 +125,9 @@
+     #define OFFSETOF_STAT_UID_32 0
+     #define OFFSETOF_STAT_GID_32 0
+ 
++    #define EXEC_PIC_ADDRESS   0x500000000000
++    #define INTERP_PIC_ADDRESS 0x6f0000000000
++
+ #elif defined(ARCH_X86)
+ 
+     #define SYSNUMS_HEADER1 "syscall/sysnums-i386.h"
+diff -ru proot-5.1.0.orig/src/loader/assembly-arm64.h proot-5.1.0/src/loader/assembly-arm64.h
+--- /dev/null
++++ proot-5.1.0/src/loader/assembly-arm64.h
+@@ -0,0 +1,93 @@
++/* -*- c-set-style: "K&R"; c-basic-offset: 8 -*-
++ *
++ * This file is part of PRoot.
++ *
++ * Copyright (C) 2014 STMicroelectronics
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301 USA.
++ */
++
++#define BRANCH(stack_pointer, destination) do {			\
++	asm volatile (						\
++		"// Restore initial stack pointer.	\n\t"	\
++		"mov sp, %0				\n\t"	\
++		"					\n\t"	\
++		"// Clear rtld_fini.			\n\t"	\
++		"mov x0, #0				\n\t"	\
++		"					\n\t"	\
++		"// Start the program.			\n\t"	\
++		"br %1					\n"	\
++		: /* no output */				\
++		: "r" (stack_pointer), "r" (destination)	\
++		: "memory", "sp", "x0");			\
++	__builtin_unreachable();				\
++	} while (0)
++
++#define PREPARE_ARGS_1(arg1_)				\
++	register word_t arg1 asm("x0") = arg1_;		\
++
++#define PREPARE_ARGS_3(arg1_, arg2_, arg3_)		\
++	PREPARE_ARGS_1(arg1_)				\
++	register word_t arg2 asm("x1") = arg2_;		\
++	register word_t arg3 asm("x2") = arg3_;		\
++
++#define PREPARE_ARGS_4(arg1_, arg2_, arg3_, arg4_)	\
++	PREPARE_ARGS_3(arg1_, arg2_, arg3_)		\
++	register word_t arg4 asm("x3") = arg4_;
++
++#define PREPARE_ARGS_6(arg1_, arg2_, arg3_, arg4_, arg5_, arg6_)	\
++	PREPARE_ARGS_3(arg1_, arg2_, arg3_)				\
++	register word_t arg4 asm("x3") = arg4_;				\
++	register word_t arg5 asm("x4") = arg5_;				\
++	register word_t arg6 asm("x5") = arg6_;
++
++#define OUTPUT_CONTRAINTS_1			\
++	"r" (arg1)
++
++#define OUTPUT_CONTRAINTS_3			\
++	OUTPUT_CONTRAINTS_1,			\
++	"r" (arg2), "r" (arg3)
++
++#define OUTPUT_CONTRAINTS_4			\
++	OUTPUT_CONTRAINTS_3,			\
++	"r" (arg4)
++
++#define OUTPUT_CONTRAINTS_6				\
++	OUTPUT_CONTRAINTS_3,				\
++	"r" (arg4), "r" (arg5), "r" (arg6)
++
++#define SYSCALL(number_, nb_args, args...)			\
++	({							\
++		register word_t number asm("w8") = number_;	\
++		register word_t result asm("x0");		\
++		PREPARE_ARGS_##nb_args(args)			\
++			asm volatile (				\
++				"svc #0x00000000	\n\t"	\
++				: "=r" (result)			\
++				: "r" (number),			\
++				OUTPUT_CONTRAINTS_##nb_args	\
++				: "memory");			\
++			result;					\
++	})
++
++#define OPENAT	56
++#define CLOSE	57
++#define MMAP	222
++#define MMAP_OFFSET_SHIFT 0
++#define EXECVE	221
++#define EXIT	93
++#define PRCTL	167
++
+diff -ru proot-5.1.0.orig/src/loader/loader.c proot-5.1.0/src/loader/loader.c
+--- proot-5.1.0.orig/src/loader/loader.c
++++ proot-5.1.0/src/loader/loader.c
+@@ -39,6 +39,8 @@
+ #    include "loader/assembly-x86_64.h"
+ #elif defined(ARCH_ARM_EABI)
+ #    include "loader/assembly-arm.h"
++#elif defined(ARCH_ARM64)
++#    include "loader/assembly-arm64.h"
+ #elif defined(ARCH_X86)
+ #    include "loader/assembly-x86.h"
+ #else
+@@ -134,7 +136,11 @@
+ 			/* Fall through.  */
+ 
+ 		case LOAD_ACTION_OPEN:
++#ifdef OPENAT
++			fd = SYSCALL(OPENAT, 4, AT_FDCWD, stmt->open.string_address, O_RDONLY, 0);
++#else
+ 			fd = SYSCALL(OPEN, 3, stmt->open.string_address, O_RDONLY, 0);
++#endif
+ 			if (unlikely((int) fd < 0))
+ 				FATAL();
+ 
diff -Nru proot-5.1.0/debian/patches/series proot-5.1.0/debian/patches/series
--- proot-5.1.0/debian/patches/series	2015-01-27 18:27:02.000000000 +0500
+++ proot-5.1.0/debian/patches/series	2016-11-26 22:11:32.000000000 +0500
@@ -1,2 +1,3 @@
 Install-proot-into-DESTDIR-usr-bin.patch
 Fix-man-syntax.diff
+arm64.patch

Attachment: signature.asc
Description: PGP signature

Reply via email to