| Index: celt/arm/arm2gnu.pl
|
| diff --git a/celt/arm/arm2gnu.pl b/celt/arm/arm2gnu.pl
|
| index e3139041cc5467475d94a901e63e07a4197b5219..6c922ac819d7e0889bdbb72c4e8bec9cf6be5d4b 100644
|
| --- a/celt/arm/arm2gnu.pl
|
| +++ b/celt/arm/arm2gnu.pl
|
| @@ -26,6 +26,8 @@
|
|
|
| my $bigend; # little/big endian
|
| my $nxstack;
|
| +my $apple = 0;
|
| +my $symprefix = "";
|
|
|
| $nxstack = 0;
|
|
|
| @@ -34,11 +36,16 @@ eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
|
|
|
| while ($ARGV[0] =~ /^-/) {
|
| $_ = shift;
|
| - last if /^--/;
|
| - if (/^-n/) {
|
| + last if /^--$/;
|
| + if (/^-n$/) {
|
| $nflag++;
|
| next;
|
| }
|
| + if (/^--apple$/) {
|
| + $apple = 1;
|
| + $symprefix = "_";
|
| + next;
|
| + }
|
| die "I don't recognize this switch: $_\\n";
|
| }
|
| $printit++ unless $nflag;
|
| @@ -79,7 +86,7 @@ while (<>) {
|
| s/\bINCLUDE[ \t]*([^ \t\n]+)/.include \"$1\"/;
|
| s/\bGET[ \t]*([^ \t\n]+)/.include \"${ my $x=$1; $x =~ s|\.s|-gnu.S|; \$x }\"/;
|
| s/\bIMPORT\b/.extern/;
|
| - s/\bEXPORT\b/.global/;
|
| + s/\bEXPORT\b\s*/.global $symprefix/;
|
| s/^(\s+)\[/$1IF/;
|
| s/^(\s+)\|/$1ELSE/;
|
| s/^(\s+)\]/$1ENDIF/;
|
| @@ -135,7 +142,7 @@ while (<>) {
|
| # won't match the original source file (we could use the .line
|
| # directive, which is documented to be obsolete, but then gdb will
|
| # show the wrong line in the translated source file).
|
| - s/$/; .arch armv7-a\n .fpu neon\n .object_arch armv4t/;
|
| + s/$/; .arch armv7-a\n .fpu neon\n .object_arch armv4t/ unless ($apple);
|
| }
|
| }
|
|
|
| @@ -157,9 +164,13 @@ while (<>) {
|
| $prefix = "";
|
| if ($proc)
|
| {
|
| - $prefix = $prefix.sprintf("\t.type\t%s, %%function; ",$proc);
|
| + $prefix = $prefix.sprintf("\t.type\t%s, %%function; ",$proc) unless ($apple);
|
| + # Make sure we $prefix isn't empty here (for the $apple case).
|
| + # We handle mangling the label here, make sure it doesn't match
|
| + # the label handling below (if $prefix would be empty).
|
| + $prefix = "; ";
|
| push(@proc_stack, $proc);
|
| - s/^[A-Za-z_\.]\w+/$&:/;
|
| + s/^[A-Za-z_\.]\w+/$symprefix$&:/;
|
| }
|
| $prefix = $prefix."\t.thumb_func; " if ($thumb);
|
| s/\bPROC\b/@ $&/;
|
| @@ -172,7 +183,7 @@ while (<>) {
|
| my $proc;
|
| s/\bENDP\b/@ $&/;
|
| $proc = pop(@proc_stack);
|
| - $_ = "\t.size $proc, .-$proc".$_ if ($proc);
|
| + $_ = "\t.size $proc, .-$proc".$_ if ($proc && !$apple);
|
| }
|
| s/\bSUBT\b/@ $&/;
|
| s/\bDATA\b/@ $&/; # DATA directive is deprecated -- Asm guide, p.7-25
|
| @@ -337,6 +348,6 @@ while (<>) {
|
| }
|
| #If we had a code section, mark that this object doesn't need an executable
|
| # stack.
|
| -if ($nxstack) {
|
| +if ($nxstack && !$apple) {
|
| printf (" .section\t.note.GNU-stack,\"\",\%\%progbits\n");
|
| }
|
|
|