summaryrefslogtreecommitdiffstats
path: root/media/libtheora/bug752139-r18031.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media/libtheora/bug752139-r18031.patch')
-rw-r--r--media/libtheora/bug752139-r18031.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/media/libtheora/bug752139-r18031.patch b/media/libtheora/bug752139-r18031.patch
new file mode 100644
index 000000000..62ea87632
--- /dev/null
+++ b/media/libtheora/bug752139-r18031.patch
@@ -0,0 +1,53 @@
+diff --git a/media/libtheora/lib/arm/arm2gnu.pl b/media/libtheora/lib/arm/arm2gnu.pl
+--- a/media/libtheora/lib/arm/arm2gnu.pl
++++ b/media/libtheora/lib/arm/arm2gnu.pl
+@@ -1,11 +1,14 @@
+ #!/usr/bin/perl
+
+ my $bigend; # little/big endian
++my $nxstack;
++
++$nxstack = 0;
+
+ eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+ while ($ARGV[0] =~ /^-/) {
+ $_ = shift;
+ last if /^--/;
+ if (/^-n/) {
+@@ -77,16 +80,19 @@ while (<>) {
+ if ( /\bMEND\b/ ) {
+ s/\bMEND\b/.endm/;
+ $n=0;
+ }
+
+ # ".rdata" doesn't work in 'as' version 2.13.2, as it is ".rodata" there.
+ #
+ if ( /\bAREA\b/ ) {
++ if ( /CODE/ ) {
++ $nxstack = 1;
++ }
+ s/^(.+)CODE(.+)READONLY(.*)/ .text/;
+ s/^(.+)DATA(.+)READONLY(.*)/ .section .rdata\n .align 2/;
+ s/^(.+)\|\|\.data\|\|(.+)/ .data\n .align 2/;
+ s/^(.+)\|\|\.bss\|\|(.+)/ .bss/;
+ }
+
+ s/\|\|\.constdata\$(\d+)\|\|/.L_CONST$1/; # ||.constdata$3||
+ s/\|\|\.bss\$(\d+)\|\|/.L_BSS$1/; # ||.bss$2||
+@@ -263,9 +269,13 @@ while (<>) {
+ } continue {
+ printf ("%s", $_) if $printit;
+ if ($addPadding != 0)
+ {
+ printf (" mov r0,r0\n");
+ $addPadding = 0;
+ }
+ }
+-
++#If we had a code section, mark that this object doesn't need an executable
++# stack.
++if ($nxstack) {
++ printf (" .section\t.note.GNU-stack,\"\",\%\%progbits\n");
++}