diff options
Diffstat (limited to 'media/libtheora/bug752139-r18031.patch')
-rw-r--r-- | media/libtheora/bug752139-r18031.patch | 53 |
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"); ++} |