[redhat-lsb] fix the patch for aarch64 support to be not patch of patch but real patch (sorry, simply, fix aarch6

Ondrej Vasik ovasik at fedoraproject.org
Tue Aug 13 14:09:27 UTC 2013


commit f4d0ef2c0b05cb94663b67618139c15078e98d3b
Author: Ondřej Vašík <ovasik at redhat.com>
Date:   Tue Aug 13 16:09:15 2013 +0200

    fix the patch for aarch64 support to be not patch of patch but real patch (sorry, simply, fix aarch64 build)

 redhat-lsb-aarch64.patch |  247 +++++++++++++++++++++++-----------------------
 redhat-lsb.spec          |    6 +-
 2 files changed, 127 insertions(+), 126 deletions(-)
---
diff --git a/redhat-lsb-aarch64.patch b/redhat-lsb-aarch64.patch
index e32eac1..35e8bb3 100644
--- a/redhat-lsb-aarch64.patch
+++ b/redhat-lsb-aarch64.patch
@@ -1,125 +1,122 @@
---- a/redhat-lsb-aarch64.patch	
-+++ a/redhat-lsb-aarch64.patch	
-@@ -0,0 +1,122 @@ 
-+diff --git a/redhat_lsb_trigger.c b/redhat_lsb_trigger.c
-+index 76db260..f76e5a5 100644
-+--- a/redhat_lsb_trigger.c
-++++ b/redhat_lsb_trigger.c
-+@@ -424,6 +424,102 @@ register void *__thread_self __asm ("g7");
-+ 	   : inline_syscall_clobbers, "$20", "$21");		\
-+ 	_sc_ret = _sc_0, _sc_err = _sc_19;			\
-+ }
-++#elif defined __aarch64__
-++#undef SYS_ify
-++#define SYS_ify(syscall_name)	(__NR_##syscall_name)
-++
-++# undef INLINE_SYSCALL
-++# define INLINE_SYSCALL(name, nr, args...)				\
-++  ({ unsigned long _sys_result = INTERNAL_SYSCALL (name, , nr, args);	\
-++     if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_sys_result, ), 0))\
-++       {								\
-++	 __set_errno (INTERNAL_SYSCALL_ERRNO (_sys_result, ));		\
-++	 _sys_result = (unsigned long) -1;				\
-++       }								\
-++     (long) _sys_result; })
-++
-++# undef INTERNAL_SYSCALL_DECL
-++# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-++
-++# undef INTERNAL_SYSCALL_RAW
-++# define INTERNAL_SYSCALL_RAW(name, err, nr, args...)		\
-++  ({ unsigned long _sys_result;					\
-++     {								\
-++       LOAD_ARGS_##nr (args)					\
-++       register long _x8 asm ("x8") = (name);			\
-++       asm volatile ("svc	0	// syscall " # name     \
-++		     : "+r" (_x0), "+r" (_x8)			\
-++		     : ASM_ARGS_##nr				\
-++		     : "memory", CLOBBER_ARGS_##nr);		\
-++       _sys_result = _x0;					\
-++     }								\
-++     (long) _sys_result; })
-++
-++# undef INTERNAL_SYSCALL
-++# define INTERNAL_SYSCALL(name, err, nr, args...)		\
-++	INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
-++
-++# undef INTERNAL_SYSCALL_ERROR_P
-++# define INTERNAL_SYSCALL_ERROR_P(val, err) \
-++  ((unsigned long) (val) >= (unsigned long) -4095)
-++
-++# undef INTERNAL_SYSCALL_ERRNO
-++# define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
-++
-++# define CLOBBER_ARGS_0       CLOBBER_ARGS_1
-++# define CLOBBER_ARGS_1 "x1", CLOBBER_ARGS_2
-++# define CLOBBER_ARGS_2 "x2", CLOBBER_ARGS_3
-++# define CLOBBER_ARGS_3 "x3", CLOBBER_ARGS_4
-++# define CLOBBER_ARGS_4 "x4", CLOBBER_ARGS_5
-++# define CLOBBER_ARGS_5 "x5", CLOBBER_ARGS_6
-++# define CLOBBER_ARGS_6 "x6", CLOBBER_ARGS_7
-++# define CLOBBER_ARGS_7 \
-++  "x7", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18"
-++
-++# define LOAD_ARGS_0()				\
-++  register long _x0 asm ("x0");
-++
-++# define ASM_ARGS_0
-++# define LOAD_ARGS_1(x0)			\
-++  long _x0tmp = (long) (x0);			\
-++  LOAD_ARGS_0 ()				\
-++  _x0 = _x0tmp;
-++# define ASM_ARGS_1	"r" (_x0)
-++# define LOAD_ARGS_2(x0, x1)			\
-++  long _x1tmp = (long) (x1);			\
-++  LOAD_ARGS_1 (x0)				\
-++  register long _x1 asm ("x1") = _x1tmp;
-++# define ASM_ARGS_2	ASM_ARGS_1, "r" (_x1)
-++# define LOAD_ARGS_3(x0, x1, x2)		\
-++  long _x2tmp = (long) (x2);			\
-++  LOAD_ARGS_2 (x0, x1)				\
-++  register long _x2 asm ("x2") = _x2tmp;
-++# define ASM_ARGS_3	ASM_ARGS_2, "r" (_x2)
-++# define LOAD_ARGS_4(x0, x1, x2, x3)		\
-++  long _x3tmp = (long) (x3);			\
-++  LOAD_ARGS_3 (x0, x1, x2)			\
-++  register long _x3 asm ("x3") = _x3tmp;
-++# define ASM_ARGS_4	ASM_ARGS_3, "r" (_x3)
-++# define LOAD_ARGS_5(x0, x1, x2, x3, x4)	\
-++  long _x4tmp = (long) (x4);			\
-++  LOAD_ARGS_4 (x0, x1, x2, x3)			\
-++  register long _x4 asm ("x4") = _x4tmp;
-++# define ASM_ARGS_5	ASM_ARGS_4, "r" (_x4)
-++# define LOAD_ARGS_6(x0, x1, x2, x3, x4, x5)	\
-++  long _x5tmp = (long) (x5);			\
-++  LOAD_ARGS_5 (x0, x1, x2, x3, x4)		\
-++  register long _x5 asm ("x5") = _x5tmp;
-++# define ASM_ARGS_6	ASM_ARGS_5, "r" (_x5)
-++# define LOAD_ARGS_7(x0, x1, x2, x3, x4, x5, x6)\
-++  long _x6tmp = (long) (x6);			\
-++  LOAD_ARGS_6 (x0, x1, x2, x3, x4, x5)		\
-++  register long _x6 asm ("x6") = _x6tmp;
-++# define ASM_ARGS_7	ASM_ARGS_6, "r" (_x6)
-++
-++# undef INTERNAL_SYSCALL_NCS
-++# define INTERNAL_SYSCALL_NCS(number, err, nr, args...)	\
-++	INTERNAL_SYSCALL_RAW (number, err, nr, args)
-++
-+ #endif
-+ 
-+ #ifdef __i386__
-+@@ -539,10 +635,14 @@ int main (int argc, char **argv)
-+       p = mempcpy (p, LSBLDSO, sizeof LSBLDSO - 1);
-+       *p++ = '.';
-+       strcpy (p, LSBVER);
-++#if defined(__NR_symlink)
-+       if (is_ia64 ())
-+ 	INTERNAL_SYSCALL (symlink, err, 2, "/emul/ia32-linux/lib/" LDSO, buf);
-+       else
-+ 	INTERNAL_SYSCALL (symlink, err, 2, LDSO, buf);
-++#elif defined(__NR_symlinkat)
-++      INTERNAL_SYSCALL (symlinkat, err, 3, AT_FDCWD, LDSO, buf);
-++#endif
-+       p = NULL;
-+     }
-+   INTERNAL_SYSCALL (exit, err, 1, 0);
+diff --git a/redhat_lsb_trigger.c b/redhat_lsb_trigger.c
+index 76db260..f76e5a5 100644
+--- a/redhat_lsb_trigger.c
++++ b/redhat_lsb_trigger.c
+@@ -424,6 +424,102 @@ register void *__thread_self __asm ("g7");
+ 	   : inline_syscall_clobbers, "$20", "$21");		\
+ 	_sc_ret = _sc_0, _sc_err = _sc_19;			\
+ }
++#elif defined __aarch64__
++#undef SYS_ify
++#define SYS_ify(syscall_name)	(__NR_##syscall_name)
++
++# undef INLINE_SYSCALL
++# define INLINE_SYSCALL(name, nr, args...)				\
++  ({ unsigned long _sys_result = INTERNAL_SYSCALL (name, , nr, args);	\
++     if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_sys_result, ), 0))\
++       {								\
++	 __set_errno (INTERNAL_SYSCALL_ERRNO (_sys_result, ));		\
++	 _sys_result = (unsigned long) -1;				\
++       }								\
++     (long) _sys_result; })
++
++# undef INTERNAL_SYSCALL_DECL
++# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
++
++# undef INTERNAL_SYSCALL_RAW
++# define INTERNAL_SYSCALL_RAW(name, err, nr, args...)		\
++  ({ unsigned long _sys_result;					\
++     {								\
++       LOAD_ARGS_##nr (args)					\
++       register long _x8 asm ("x8") = (name);			\
++       asm volatile ("svc	0	// syscall " # name     \
++		     : "+r" (_x0), "+r" (_x8)			\
++		     : ASM_ARGS_##nr				\
++		     : "memory", CLOBBER_ARGS_##nr);		\
++       _sys_result = _x0;					\
++     }								\
++     (long) _sys_result; })
++
++# undef INTERNAL_SYSCALL
++# define INTERNAL_SYSCALL(name, err, nr, args...)		\
++	INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
++
++# undef INTERNAL_SYSCALL_ERROR_P
++# define INTERNAL_SYSCALL_ERROR_P(val, err) \
++  ((unsigned long) (val) >= (unsigned long) -4095)
++
++# undef INTERNAL_SYSCALL_ERRNO
++# define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
++
++# define CLOBBER_ARGS_0       CLOBBER_ARGS_1
++# define CLOBBER_ARGS_1 "x1", CLOBBER_ARGS_2
++# define CLOBBER_ARGS_2 "x2", CLOBBER_ARGS_3
++# define CLOBBER_ARGS_3 "x3", CLOBBER_ARGS_4
++# define CLOBBER_ARGS_4 "x4", CLOBBER_ARGS_5
++# define CLOBBER_ARGS_5 "x5", CLOBBER_ARGS_6
++# define CLOBBER_ARGS_6 "x6", CLOBBER_ARGS_7
++# define CLOBBER_ARGS_7 \
++  "x7", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18"
++
++# define LOAD_ARGS_0()				\
++  register long _x0 asm ("x0");
++
++# define ASM_ARGS_0
++# define LOAD_ARGS_1(x0)			\
++  long _x0tmp = (long) (x0);			\
++  LOAD_ARGS_0 ()				\
++  _x0 = _x0tmp;
++# define ASM_ARGS_1	"r" (_x0)
++# define LOAD_ARGS_2(x0, x1)			\
++  long _x1tmp = (long) (x1);			\
++  LOAD_ARGS_1 (x0)				\
++  register long _x1 asm ("x1") = _x1tmp;
++# define ASM_ARGS_2	ASM_ARGS_1, "r" (_x1)
++# define LOAD_ARGS_3(x0, x1, x2)		\
++  long _x2tmp = (long) (x2);			\
++  LOAD_ARGS_2 (x0, x1)				\
++  register long _x2 asm ("x2") = _x2tmp;
++# define ASM_ARGS_3	ASM_ARGS_2, "r" (_x2)
++# define LOAD_ARGS_4(x0, x1, x2, x3)		\
++  long _x3tmp = (long) (x3);			\
++  LOAD_ARGS_3 (x0, x1, x2)			\
++  register long _x3 asm ("x3") = _x3tmp;
++# define ASM_ARGS_4	ASM_ARGS_3, "r" (_x3)
++# define LOAD_ARGS_5(x0, x1, x2, x3, x4)	\
++  long _x4tmp = (long) (x4);			\
++  LOAD_ARGS_4 (x0, x1, x2, x3)			\
++  register long _x4 asm ("x4") = _x4tmp;
++# define ASM_ARGS_5	ASM_ARGS_4, "r" (_x4)
++# define LOAD_ARGS_6(x0, x1, x2, x3, x4, x5)	\
++  long _x5tmp = (long) (x5);			\
++  LOAD_ARGS_5 (x0, x1, x2, x3, x4)		\
++  register long _x5 asm ("x5") = _x5tmp;
++# define ASM_ARGS_6	ASM_ARGS_5, "r" (_x5)
++# define LOAD_ARGS_7(x0, x1, x2, x3, x4, x5, x6)\
++  long _x6tmp = (long) (x6);			\
++  LOAD_ARGS_6 (x0, x1, x2, x3, x4, x5)		\
++  register long _x6 asm ("x6") = _x6tmp;
++# define ASM_ARGS_7	ASM_ARGS_6, "r" (_x6)
++
++# undef INTERNAL_SYSCALL_NCS
++# define INTERNAL_SYSCALL_NCS(number, err, nr, args...)	\
++	INTERNAL_SYSCALL_RAW (number, err, nr, args)
++
+ #endif
+ 
+ #ifdef __i386__
+@@ -539,10 +635,14 @@ int main (int argc, char **argv)
+       p = mempcpy (p, LSBLDSO, sizeof LSBLDSO - 1);
+       *p++ = '.';
+       strcpy (p, LSBVER);
++#if defined(__NR_symlink)
+       if (is_ia64 ())
+ 	INTERNAL_SYSCALL (symlink, err, 2, "/emul/ia32-linux/lib/" LDSO, buf);
+       else
+ 	INTERNAL_SYSCALL (symlink, err, 2, LDSO, buf);
++#elif defined(__NR_symlinkat)
++      INTERNAL_SYSCALL (symlinkat, err, 3, AT_FDCWD, LDSO, buf);
++#endif
+       p = NULL;
+     }
+   INTERNAL_SYSCALL (exit, err, 1, 0);
diff --git a/redhat-lsb.spec b/redhat-lsb.spec
index d9416e3..e7cb9b2 100644
--- a/redhat-lsb.spec
+++ b/redhat-lsb.spec
@@ -53,7 +53,7 @@
 Summary: Implementation of Linux Standard Base specification
 Name: redhat-lsb
 Version: 4.1
-Release: 19%{?dist}
+Release: 20%{?dist}
 URL: http://www.linuxfoundation.org/collaborate/workgroups/lsb
 Source0: https://fedorahosted.org/releases/r/e/redhat-lsb/%{name}-%{version}-%{srcrelease}.tar.bz2
 Patch0: lsb-release-3.1-update-init-functions.patch
@@ -784,6 +784,10 @@ os.remove("%{_datadir}/lsb")
 
 
 %changelog
+* Tue Aug 13 2013 Ondrej Vasik <ovasik at redhat.com> - 4.1-20
+- fix the patch for aarch64 support to be not patch of
+  patch but real patch (sorry, simply, fix aarch64 build)
+
 * Thu Aug 08 2013 Ondrej Vasik <ovasik at redhat.com> - 4.1-19
 - Require sil-abyssinica-fonts in supplemental(#994341)
 - Fully specify requirements on subpackages(#971386)


More information about the scm-commits mailing list