From 250aaa5d5e3c1f0809b7198823538939b032c6e4 Mon Sep 17 00:00:00 2001
From: Kedar Sovani <kedars@marvell.com>
Date: Fri, 24 Jul 2009 07:22:01 +0200
Subject: [PATCH] Build for ARM.

Signed-off-by: Kedar Sovani <kedars@marvell.com>
---
 redhat-lsb-3.2-1-arm.patch |   63 ++++++++++++++++++++++++++++++++++++++++++++
 redhat-lsb.spec            |   49 ++++++++++++++++++++++++++++++++-
 2 files changed, 110 insertions(+), 2 deletions(-)
 create mode 100644 redhat-lsb-3.2-1-arm.patch

diff --git a/redhat-lsb-3.2-1-arm.patch b/redhat-lsb-3.2-1-arm.patch
new file mode 100644
index 0000000..ca952e0
--- /dev/null
+++ b/redhat-lsb-3.2-1-arm.patch
@@ -0,0 +1,63 @@
+--- redhat-lsb-3.2.orig/redhat_lsb_trigger.c	2008-04-16 13:50:14.000000000 -0400
++++ redhat-lsb-3.2/redhat_lsb_trigger.c	2009-02-03 04:39:06.000000000 -0500
+@@ -223,6 +223,42 @@ register void *__thread_self __asm ("g7"
+ # define ASMFMT_1 , "0" (gpr2)
+ # define ASMFMT_2 , "0" (gpr2), "d" (gpr3)
+ # define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4)
++#elif defined __arm__
++# if defined (__ARM_EABI__)
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
++#undef INTERNAL_SYSCALL_RAW
++#define INTERNAL_SYSCALL_RAW(name, err, nr, args...)		\
++  ({								\
++       register int _a1 asm ("r0"), _nr asm ("r7");		\
++       LOAD_ARGS_##nr (args)					\
++       _nr = name;						\
++       asm volatile ("swi	0x0	@ syscall " #name	\
++		     : "=r" (_a1)				\
++		     : "r" (_nr) ASM_ARGS_##nr			\
++		     : "memory");				\
++       _a1; })
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...)		\
++	INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
++
++#define LOAD_ARGS_0()
++#define ASM_ARGS_0
++#define LOAD_ARGS_1(a1)				\
++  int _a1tmp = (int) (a1);			\
++  LOAD_ARGS_0 ()				\
++  _a1 = _a1tmp;
++#define ASM_ARGS_1	ASM_ARGS_0, "r" (_a1)
++#define LOAD_ARGS_2(a1, a2)			\
++  int _a2tmp = (int) (a2);			\
++  LOAD_ARGS_1 (a1)				\
++  register int _a2 asm ("a2") = _a2tmp;
++#define ASM_ARGS_2	ASM_ARGS_1, "r" (_a2)
++#undef SYS_ify
++#define SWI_BASE  (0x900000)
++#define SYS_ify(syscall_name)	(__NR_##syscall_name)
++#endif
+ #elif defined __sparc__
+ # ifndef __arch64__
+ #  define __INTERNAL_SYSCALL_STRING					\
+@@ -568,7 +568,7 @@ __stack_chk_fail (void)
+ 
+ #ifndef __powerpc__
+ 
+-int __libc_start_main (int (*main) (int argc, char **argv),
++int ___libc_start_main (int (*main) (int argc, char **argv),
+                        int argc, char **argv,
+ 		       void (*init) (void), void (*fini) (void),
+ 		       void (*rtld_fini) (void), void * stack_end)
+@@ -581,7 +581,7 @@ struct startup_info
+   void (*fini) (void);
+ };
+ 
+-int __libc_start_main (int argc, char **argv, char **ev,
++int ___libc_start_main (int argc, char **argv, char **ev,
+ 		       void *auxvec, void (*rtld_fini) (void),
+ 		       struct startup_info *stinfo,
+ 		       char **stack_on_entry)
diff --git a/redhat-lsb.spec b/redhat-lsb.spec
index bf0916b..ab9d4f6 100644
--- a/redhat-lsb.spec
+++ b/redhat-lsb.spec
@@ -36,6 +36,11 @@
 %define lsbldso ld-lsb-x86-64.so
 %endif
 
+%ifarch %{arm}
+%define ldso ld-linux.so.3
+%define lsbldso ld-lsb-arm.so
+%endif
+
 %ifarch ia64 ppc64 s390x x86_64
 %define qual ()(64bit)
 %else
@@ -49,12 +54,13 @@
 Summary: LSB support for Red Hat Linux
 Name: redhat-lsb
 Version: 3.2
-Release: 7%{?dist}
+Release: 7%{?dist}.fa1
 URL: http://www.linuxfoundation.org/collaborate/workgroups/lsb
 Source0: %{name}-%{version}-%{srcrelease}.tar.bz2
 Patch0: lsb-release-3.1-update-init-functions.patch
 Patch1: redhat-lsb-lsb_start_daemon-fix.patch
 Patch2: redhat-lsb-trigger.patch
+Patch3: redhat-lsb-3.2-1-arm.patch
 License: GPLv2
 Group: System Environment/Base
 BuildRoot: %{_tmppath}/%{name}-root
@@ -83,12 +89,16 @@ Provides: lsb = %{version}
 %ifarch x86_64
 %define archname amd64
 %endif
+%ifarch %{arm}
+%define archname arm
+%endif
+
 Provides: lsb-core-%{archname} = %{version}
 Provides: lsb-graphics-%{archname} = %{version}
 Provides: lsb-core-noarch = %{version}
 Provides: lsb-graphics-noarch = %{version}
 
-ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x
+ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm}
 
 %ifarch %{ix86}
 # archLSB IA32 Base Libraries
@@ -328,6 +338,40 @@ Requires: libutil.so.1()(64bit)
 Requires: libz.so.1()(64bit)
 %endif
 
+%ifarch %{arm}
+# archLSB ARM Base Libraries
+Requires: libatk-1.0.so.0
+Requires: libc.so.6
+Requires: libcrypt.so.1
+Requires: libdl.so.2
+Requires: libgcc_s.so.1
+Requires: libgdk-x11-2.0.so.0
+Requires: libgdk_pixbuf-2.0.so.0
+Requires: libgdk_pixbuf_xlib-2.0.so.0
+Requires: libglib-2.0.so.0
+Requires: libgmodule-2.0.so.0
+Requires: libgobject-2.0.so.0
+Requires: libgthread-2.0.so.0
+Requires: libgtk-x11-2.0.so.0
+Requires: libm.so.6
+Requires: libncurses.so.5
+Requires: libpango-1.0.so.0
+Requires: libpangoft2-1.0.so.0
+Requires: libpangoxft-1.0.so.0
+Requires: libpthread.so.0
+Requires: libqt-mt.so.3
+Requires: libQtCore.so.4
+Requires: libQtGui.so.4
+Requires: libQtNetwork.so.4
+Requires: libQtOpenGL.so.4
+Requires: libQtSql.so.4
+Requires: libQtSvg.so.4
+Requires: libQtXml.so.4
+Requires: libstdc++.so.6
+Requires: libutil.so.1
+Requires: libz.so.1
+%endif
+
 # gLSB Base/Utility/Stdc++/Graphics Libraries
 Requires: libasound.so.2%{qual}
 Requires: libatk-1.0.so.0%{qual}
@@ -530,6 +574,7 @@ installed on the system.
 %patch0 -p1
 %patch1 -p1
 %patch2 -p0 -b .triggerfix
+%patch3 -p1
 
 %build
 cd lsb-release-%{upstreamlsbrelver}
-- 
1.5.5.6

