media/libtheora/bug752139-r18031.patch
author Cosmin Malutan <cosmin.malutan@softvision.ro>
Mon, 28 Jul 2014 06:28:00 +0200
changeset 208285 1b581df81c9bd32339f3e5c3bb0e8bf11e160132
parent 97353 7a7c6d1e67e00fd1e712cdcdfcb939c01c3ba9a4
permissions -rw-r--r--
Bug 1032255 - TPS has to exit with code != 0 in case of failures. r=aeftimie, dhunt a=testonly DONTBUILD

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");
+}