Patchwork [meta-fsl-ppc,2/5] luajit: add bbappend to hold ppc specific patch

login
register
mail settings
Submitter Ting Liu
Date July 22, 2014, 10:32 a.m.
Message ID <1406025138-11195-2-git-send-email-ting.liu@freescale.com>
Download mbox | patch
Permalink /patch/76351/
State Accepted
Headers show

Comments

Ting Liu - July 22, 2014, 10:32 a.m.
From: Ting Liu <b28495@freescale.com>

Signed-off-by: Ting Liu <b28495@freescale.com>
---
 recipes-devtools/luajit/luajit/ppc-fixplt.patch |  105 +++++++++++++++++++++++
 recipes-devtools/luajit/luajit_%.bbappend       |    4 +
 2 files changed, 109 insertions(+), 0 deletions(-)
 create mode 100644 recipes-devtools/luajit/luajit/ppc-fixplt.patch
 create mode 100644 recipes-devtools/luajit/luajit_%.bbappend

Patch

diff --git a/recipes-devtools/luajit/luajit/ppc-fixplt.patch b/recipes-devtools/luajit/luajit/ppc-fixplt.patch
new file mode 100644
index 0000000..b9f17f4
--- /dev/null
+++ b/recipes-devtools/luajit/luajit/ppc-fixplt.patch
@@ -0,0 +1,105 @@ 
+Upstream-Status: Unknown
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+libluajit is having symbols that can't be
+resolved the reloc cannot accommodate an offset greater than 24 bits.
+
+Looking at libluajit with readelf -r, you see a bunch of entries that look like:
+	000082f0  00003c0a R_PPC_REL24       00000000   sqrt + 0
+
+These should not occur when the code is compiled and linked with -fPIC.
+
+It turns out that libluajit *is* compiled and linked with -fPIC, however...
+There is one assembler file called lj_vm.s which is generated during the build.
+This file is missing the `@plt' qualifier from external references.
+
+This file is generated by a program called buildvm.  This in turn uses tables
+in a file called buildvm_arch.h which is generated by dynasm.lua.
+
+Index: LuaJIT-2.0.1/src/host/buildvm.c
+===================================================================
+--- LuaJIT-2.0.1.orig/src/host/buildvm.c	2013-02-19 12:15:00.000000000 -0800
++++ LuaJIT-2.0.1/src/host/buildvm.c	2013-05-14 20:26:05.933444512 -0700
+@@ -107,12 +107,14 @@
+ #endif
+   sprintf(name, "%s%s%s", symprefix, prefix, suffix);
+   p = strchr(name, '@');
++#if 0
+   if (p) {
+     if (!LJ_64 && (ctx->mode == BUILD_coffasm || ctx->mode == BUILD_peobj))
+       name[0] = '@';
+     else
+       *p = '\0';
+   }
++#endif
+   p = (char *)malloc(strlen(name)+1);  /* MSVC doesn't like strdup. */
+   strcpy(p, name);
+   return p;
+Index: LuaJIT-2.0.1/src/vm_ppcspe.dasc
+===================================================================
+--- LuaJIT-2.0.1.orig/src/vm_ppcspe.dasc	2013-02-19 12:15:00.000000000 -0800
++++ LuaJIT-2.0.1/src/vm_ppcspe.dasc	2013-05-14 20:26:05.937444512 -0700
+@@ -1390,7 +1390,7 @@
+   |  checknum CARG2
+   |   evmergehi CARG1, CARG2, CARG2
+   |  checkfail ->fff_fallback
+-  |  bl extern func
++  |  bl extern func@plt
+   |  evmergelo CRET1, CRET1, CRET2
+   |  b ->fff_restv
+   |.endmacro
+@@ -1405,7 +1405,7 @@
+   |  checknum CARG1
+   |   evmergehi CARG3, CARG4, CARG4
+   |  checkanyfail ->fff_fallback
+-  |  bl extern func
++  |  bl extern func@plt
+   |  evmergelo CRET1, CRET1, CRET2
+   |  b ->fff_restv
+   |.endmacro
+@@ -1437,7 +1437,7 @@
+   |  checknum CARG2
+   |   evmergehi CARG1, CARG2, CARG2
+   |  checkfail ->fff_fallback
+-  |  bl extern log
++  |  bl extern log@plt
+   |  evmergelo CRET1, CRET1, CRET2
+   |  b ->fff_restv
+   |
+@@ -1471,7 +1471,7 @@
+   |  checknum CARG1
+   |  checkanyfail ->fff_fallback
+   |  efdctsi CARG3, CARG4
+-  |  bl extern ldexp
++  |  bl extern ldexp@plt
+   |  evmergelo CRET1, CRET1, CRET2
+   |  b ->fff_restv
+   |
+@@ -1484,7 +1484,7 @@
+   |  checkfail ->fff_fallback
+   |  la CARG3, DISPATCH_GL(tmptv)(DISPATCH)
+   |   lwz PC, FRAME_PC(BASE)
+-  |  bl extern frexp
++  |  bl extern frexp@plt
+   |   lwz TMP1, DISPATCH_GL(tmptv)(DISPATCH)
+   |  evmergelo CRET1, CRET1, CRET2
+   |   efdcfsi CRET2, TMP1
+@@ -1503,7 +1503,7 @@
+   |  checkfail ->fff_fallback
+   |  la CARG3, -8(BASE)
+   |   lwz PC, FRAME_PC(BASE)
+-  |  bl extern modf
++  |  bl extern modf@plt
+   |  evmergelo CRET1, CRET1, CRET2
+   |   la RA, -8(BASE)
+   |  evstdd CRET1, 0(BASE)
+@@ -2399,7 +2399,7 @@
+     |  checknum CARG1
+     |   evmergehi CARG3, CARG4, CARG4
+     |  checkanyfail ->vmeta_arith_vv
+-    |  bl extern pow
++    |  bl extern pow@plt
+     |  evmergelo CRET2, CRET1, CRET2
+     |  evstddx CRET2, BASE, RA
+     |  ins_next
diff --git a/recipes-devtools/luajit/luajit_%.bbappend b/recipes-devtools/luajit/luajit_%.bbappend
new file mode 100644
index 0000000..8c6138c
--- /dev/null
+++ b/recipes-devtools/luajit/luajit_%.bbappend
@@ -0,0 +1,4 @@ 
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI_append_qoriq-ppc = " file://ppc-fixplt.patch "
+