aboutsummaryrefslogtreecommitdiffstats
path: root/main/libmpeg2
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2013-12-25 16:00:48 +0000
committerTimo Teräs <timo.teras@iki.fi>2013-12-25 16:00:48 +0000
commitb80e8e31bd956b3a8de4d75f4fa3d1442a52aafa (patch)
treea3c79555311143517a5b60b630d9dc8f544723bc /main/libmpeg2
parentcc2431181fa85fea136f989523f99de5e5c7745a (diff)
downloadaports-b80e8e31bd956b3a8de4d75f4fa3d1442a52aafa.tar.bz2
aports-b80e8e31bd956b3a8de4d75f4fa3d1442a52aafa.tar.xz
main/libmpeg2: fix arm relocations
arm-private-symbols from da internet, arm-textrel is by me, very untested and can break everything.
Diffstat (limited to 'main/libmpeg2')
-rw-r--r--main/libmpeg2/APKBUILD23
-rw-r--r--main/libmpeg2/arm-private-symbols.patch44
-rw-r--r--main/libmpeg2/arm-textrel.patch101
3 files changed, 165 insertions, 3 deletions
diff --git a/main/libmpeg2/APKBUILD b/main/libmpeg2/APKBUILD
index 4ade978a68..748ab4fe2c 100644
--- a/main/libmpeg2/APKBUILD
+++ b/main/libmpeg2/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=libmpeg2
pkgver=0.5.1
-pkgrel=6
+pkgrel=7
pkgdesc="libmpeg2 is a library for decoding MPEG-1 and MPEG-2 video streams."
url="http://libmpeg2.sourceforge.net/"
arch="all"
@@ -9,13 +9,21 @@ license="GPL2"
subpackages="$pkgname-dev $pkgname-doc mpeg2dec"
depends=
makedepends="libx11-dev libice-dev libsm-dev libxext-dev libxv-dev"
-source="http://$pkgname.sourceforge.net/files/$pkgname-$pkgver.tar.gz"
+source="http://$pkgname.sourceforge.net/files/$pkgname-$pkgver.tar.gz
+ arm-private-symbols.patch
+ arm-textrel.patch
+ "
_builddir="$srcdir/$pkgname-$pkgver"
prepare() {
cd "$_builddir"
update_config_sub || return 1
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
}
build() {
@@ -24,6 +32,7 @@ build() {
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
+ --with-pic \
--enable-shared \
--disable-static \
|| return 1
@@ -44,4 +53,12 @@ mpeg2dec() {
mv "$pkgdir"/usr/bin/mpeg2dec "$subpkgdir"/usr/bin/
}
-md5sums="0f92c7454e58379b4a5a378485bbd8ef libmpeg2-0.5.1.tar.gz"
+md5sums="0f92c7454e58379b4a5a378485bbd8ef libmpeg2-0.5.1.tar.gz
+83eba4c3383ca4865357d400d0ec580d arm-private-symbols.patch
+68ffd36280b270c452344b121b0cd55b arm-textrel.patch"
+sha256sums="dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4 libmpeg2-0.5.1.tar.gz
+c012b21203452efc0f5bb2334e65461c45d53110c0b0e9b79efab68a7784c944 arm-private-symbols.patch
+25c9f7808d07e3cfc2663fcc00e52cb73a8997c2c606b4d4ee57e4a32093b3cc arm-textrel.patch"
+sha512sums="3648a2b3d7e2056d5adb328acd2fb983a1fa9a05ccb6f9388cc686c819445421811f42e8439418a0491a13080977f074a0d8bf8fa6bc101ff245ddea65a46fbc libmpeg2-0.5.1.tar.gz
+334e4e0b1e2877311503d2907f4f65c26d6a83ee79308c49697b2f3d2b8da9ac665e19ab419d85a944eaa34e1d43f512d1418a372cd444381d66f71df2a92c83 arm-private-symbols.patch
+888b8b4f90ece7f8dcd54895c36e2a93471de167f83cddc67d6943baf9e7ea19abd31ab055f6805629a2e176a1057e18de6a053fdea69cec90483a5165efa9c9 arm-textrel.patch"
diff --git a/main/libmpeg2/arm-private-symbols.patch b/main/libmpeg2/arm-private-symbols.patch
new file mode 100644
index 0000000000..222ff9954e
--- /dev/null
+++ b/main/libmpeg2/arm-private-symbols.patch
@@ -0,0 +1,44 @@
+Set visibility of global symbols used in ARM specific assembly file to internal
+
+--- a/libmpeg2/motion_comp_arm_s.S
++++ b/libmpeg2/motion_comp_arm_s.S
+@@ -23,7 +23,8 @@
+
+ @ ----------------------------------------------------------------
+ .align
+- .global MC_put_o_16_arm
++ .global MC_put_o_16_arm
++ .internal MC_put_o_16_arm
+ MC_put_o_16_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+ pld [r1]
+@@ -83,7 +84,8 @@
+
+ @ ----------------------------------------------------------------
+ .align
+- .global MC_put_o_8_arm
++ .global MC_put_o_8_arm
++ .internal MC_put_o_8_arm
+ MC_put_o_8_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+ pld [r1]
+@@ -152,7 +154,8 @@
+ .endm
+
+ .align
+- .global MC_put_x_16_arm
++ .global MC_put_x_16_arm
++ .internal MC_put_x_16_arm
+ MC_put_x_16_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+ pld [r1]
+@@ -244,7 +247,8 @@
+
+ @ ----------------------------------------------------------------
+ .align
+- .global MC_put_x_8_arm
++ .global MC_put_x_8_arm
++ .internal MC_put_x_8_arm
+ MC_put_x_8_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+ pld [r1]
diff --git a/main/libmpeg2/arm-textrel.patch b/main/libmpeg2/arm-textrel.patch
new file mode 100644
index 0000000000..0a75cebfbc
--- /dev/null
+++ b/main/libmpeg2/arm-textrel.patch
@@ -0,0 +1,101 @@
+--- libmpeg2-0.5.1.orig/libmpeg2/motion_comp_arm_s.S
++++ libmpeg2-0.5.1/libmpeg2/motion_comp_arm_s.S
+@@ -30,8 +30,8 @@
+ stmfd sp!, {r4-r11, lr} @ R14 is also called LR
+ and r4, r1, #3
+ adr r5, MC_put_o_16_arm_align_jt
+- add r5, r5, r4, lsl #2
+- ldr pc, [r5]
++ ldr r5, [r5, r4, lsl #2]
++ add pc, pc, r5
+
+ MC_put_o_16_arm_align0:
+ ldmia r1, {r4-r7}
+@@ -76,10 +76,10 @@
+ bne 1b
+ ldmfd sp!, {r4-r11, pc} @@ update PC with LR content.
+ MC_put_o_16_arm_align_jt:
+- .word MC_put_o_16_arm_align0
+- .word MC_put_o_16_arm_align1
+- .word MC_put_o_16_arm_align2
+- .word MC_put_o_16_arm_align3
++ .word MC_put_o_16_arm_align0-MC_put_o_16_arm_align0-8
++ .word MC_put_o_16_arm_align1-MC_put_o_16_arm_align0-8
++ .word MC_put_o_16_arm_align2-MC_put_o_16_arm_align0-8
++ .word MC_put_o_16_arm_align3-MC_put_o_16_arm_align0-8
+
+ @ ----------------------------------------------------------------
+ .align
+@@ -90,8 +90,8 @@
+ stmfd sp!, {r4-r10, lr} @ R14 is also called LR
+ and r4, r1, #3
+ adr r5, MC_put_o_8_arm_align_jt
+- add r5, r5, r4, lsl #2
+- ldr pc, [r5]
++ ldr r5, [r5, r4, lsl #2]
++ add pc, pc, r5
+ MC_put_o_8_arm_align0:
+ ldmia r1, {r4-r5}
+ add r1, r1, r2
+@@ -134,10 +134,10 @@
+ ldmfd sp!, {r4-r10, pc} @@ update PC with LR content.
+
+ MC_put_o_8_arm_align_jt:
+- .word MC_put_o_8_arm_align0
+- .word MC_put_o_8_arm_align1
+- .word MC_put_o_8_arm_align2
+- .word MC_put_o_8_arm_align3
++ .word MC_put_o_8_arm_align0-MC_put_o_8_arm_align0-8
++ .word MC_put_o_8_arm_align1-MC_put_o_8_arm_align0-8
++ .word MC_put_o_8_arm_align2-MC_put_o_8_arm_align0-8
++ .word MC_put_o_8_arm_align3-MC_put_o_8_arm_align0-8
+
+ @ ----------------------------------------------------------------
+ .macro AVG_PW rW1, rW2
+@@ -162,7 +162,8 @@
+ ldr r11, [r5]
+ mvn r12, r11
+ add r5, r5, r4, lsl #2
+- ldr pc, [r5, #4]
++ ldr r5, [r5, #4]
++ add pc, pc, r5
+
+ .macro ADJ_ALIGN_QW shift, R0, R1, R2, R3, R4
+ mov \R0, \R0, lsr #(\shift)
+@@ -237,10 +238,10 @@
+ ldmfd sp!, {r4-r11,pc} @@ update PC with LR content.
+ MC_put_x_16_arm_align_jt:
+ .word 0x01010101
+- .word MC_put_x_16_arm_align0
+- .word MC_put_x_16_arm_align1
+- .word MC_put_x_16_arm_align2
+- .word MC_put_x_16_arm_align3
++ .word MC_put_x_16_arm_align0-MC_put_x_16_arm_align0-8
++ .word MC_put_x_16_arm_align1-MC_put_x_16_arm_align0-8
++ .word MC_put_x_16_arm_align2-MC_put_x_16_arm_align0-8
++ .word MC_put_x_16_arm_align3-MC_put_x_16_arm_align0-8
+
+ @ ----------------------------------------------------------------
+ .align
+@@ -254,7 +255,8 @@
+ ldr r11, [r5]
+ mvn r12, r11
+ add r5, r5, r4, lsl #2
+- ldr pc, [r5, #4]
++ ldr r5, [r5, #4]
++ add pc, pc, r5
+
+ .macro ADJ_ALIGN_DW shift, R0, R1, R2
+ mov \R0, \R0, lsr #(\shift)
+@@ -317,7 +319,7 @@
+ ldmfd sp!, {r4-r11,pc} @@ update PC with LR content.
+ MC_put_x_8_arm_align_jt:
+ .word 0x01010101
+- .word MC_put_x_8_arm_align0
+- .word MC_put_x_8_arm_align1
+- .word MC_put_x_8_arm_align2
+- .word MC_put_x_8_arm_align3
++ .word MC_put_x_8_arm_align0-MC_put_x_8_arm_align0-8
++ .word MC_put_x_8_arm_align1-MC_put_x_8_arm_align0-8
++ .word MC_put_x_8_arm_align2-MC_put_x_8_arm_align0-8
++ .word MC_put_x_8_arm_align3-MC_put_x_8_arm_align0-8