aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package/Makefile.in8
-rw-r--r--package/multimedia/mpg123/Config.in3
-rw-r--r--package/multimedia/mpg123/mpg123-0.66-arm-unroll.patch18
3 files changed, 17 insertions, 12 deletions
diff --git a/package/Makefile.in b/package/Makefile.in
index e9cf014f02..25aadf7a5b 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -88,6 +88,14 @@ ifeq ($(BR2_LARGEFILE),y)
TARGET_CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
endif
+# Handle bug fixes in toolchain
+ifeq ($(BR2_arm),y)
+ifeq ($(BR2_GCC_VERSION_4_3_2),y)
+# Removes segment violation in mpg123.
+TARGET_CFLAGS+=-DARM_UNROLL_FIX
+endif
+endif
+
TARGET_CXXFLAGS=$(TARGET_CFLAGS)
# else it's an external toolchain
diff --git a/package/multimedia/mpg123/Config.in b/package/multimedia/mpg123/Config.in
index 6b17dc1336..e3e8047b76 100644
--- a/package/multimedia/mpg123/Config.in
+++ b/package/multimedia/mpg123/Config.in
@@ -11,6 +11,3 @@ config BR2_PACKAGE_MPG123_ALSA
default y
depends on BR2_PACKAGE_ALSA_LIB
-config BR2_PACKAGE_MPG123_ARM_UNROLL_FIX
- bool
- default y if BR2_arm && BR2_GCC_VERSION_4_3_2
diff --git a/package/multimedia/mpg123/mpg123-0.66-arm-unroll.patch b/package/multimedia/mpg123/mpg123-0.66-arm-unroll.patch
index 6d8ff2258c..7697a03b29 100644
--- a/package/multimedia/mpg123/mpg123-0.66-arm-unroll.patch
+++ b/package/multimedia/mpg123/mpg123-0.66-arm-unroll.patch
@@ -5,7 +5,7 @@ diff -urN mpg123-0.66-0rig//src/layer2.c mpg123-0.66/src/layer2.c
}
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+static int al_table_get_d_out;
+void al_table_get_d(struct al_table * al)
+{
@@ -28,7 +28,7 @@ diff -urN mpg123-0.66-0rig//src/layer2.c mpg123-0.66/src/layer2.c
if ( (ba=*bita++) )
{
k=(alloc2 = alloc1+ba)->bits;
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+ al_table_get_d(alloc2);
+ d1 = al_table_get_d_out;
+ if( (d1) < 0)
@@ -42,7 +42,7 @@ diff -urN mpg123-0.66-0rig//src/layer2.c mpg123-0.66/src/layer2.c
if ( (ba=*bita++) )
{
k=(alloc2 = alloc1+ba)->bits;
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+ al_table_get_d(alloc2);
+ d1 = al_table_get_d_out;
+ if( (d1) < 0)
@@ -60,7 +60,7 @@ diff -urN mpg123-0.66-0rig//src/layer3.c mpg123-0.66/src/layer3.c
static int pretab1[22] = {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0};
static int pretab2[22] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+extern int arm_funroll_data;
+extern void arm_funroll_fix(short *val);
+#endif
@@ -71,7 +71,7 @@ diff -urN mpg123-0.66-0rig//src/layer3.c mpg123-0.66/src/layer3.c
step = 3;
}
}
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+ {
+ register short *val = h->table;
+ REFRESH_MASK;
@@ -104,7 +104,7 @@ diff -urN mpg123-0.66-0rig//src/layer3.c mpg123-0.66/src/layer3.c
v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
}
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+ {
+ register short *val = h->table;
+ REFRESH_MASK;
@@ -789,7 +789,7 @@ diff -urN mpg123-0.66-0rig//src/layer3.c~ mpg123-0.66/src/layer3.c~
+
+static int pretab1[22] = {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0};
+static int pretab2[22] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+extern int arm_funroll_data;
+extern void arm_funroll_fix(short *val);
+#endif
@@ -1081,7 +1081,7 @@ diff -urN mpg123-0.66-0rig//src/layer3.c~ mpg123-0.66/src/layer3.c~
+ v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
+
+ }
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+ {
+ register short *val = h->table;
+ REFRESH_MASK;
@@ -1171,7 +1171,7 @@ diff -urN mpg123-0.66-0rig//src/layer3.c~ mpg123-0.66/src/layer3.c~
+ register short *val = h->table,a;
+
+ REFRESH_MASK;
-+#if defined(MPG123_ARM_UNROLL_FIX)
++#if defined(ARM_UNROLL_FIX)
+ do {
+ arm_funroll_fix(val); val++;
+ a = arm_funroll_data;