mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-07 05:15:09 +00:00
54 lines
1.4 KiB
Diff
54 lines
1.4 KiB
Diff
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");
|
|
+}
|