summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl')
-rwxr-xr-xbridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl9
1 files changed, 3 insertions, 6 deletions
diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl b/bridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl
index 4fe9f2fe4021..b6bd0e9ffd7f 100755
--- a/bridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl
+++ b/bridges/source/cpp_uno/gcc3_ios_arm/generate-snippets.pl
@@ -33,10 +33,9 @@ sub gen_arm ($$)
my ($funIndex, $vtableOffset) = @_;
printf ("codeSnippet%08x%d:\n", $funIndex, $vtableOffset);
printf ("\tmov ip, pc\n");
- printf ("\tldr pc, [pc, #4]\n");
+ printf ("\tb _privateSnippetExecutor\n");
printf ("\t.long %#08x\n", $funIndex);
printf ("\t.long %d\n", $vtableOffset);
- printf ("\t.long _privateSnippetExecutor\n");
}
sub gen_x86 ($$$)
@@ -48,8 +47,6 @@ sub gen_x86 ($$$)
printf ("\tjmp _privateSnippetExecutor%s\n", $executor);
}
-printf ("\t.text\n");
-
printf ("#ifdef __arm\n");
printf ("\t.align 4\n");
@@ -94,8 +91,8 @@ foreach my $funIndex (0 .. $nFunIndexes-1)
foreach my $vtableOffset (0 .. $nVtableOffsets-1)
{
printf ("#ifdef __arm\n");
- printf ("\t.long codeSnippet%08x%d\n", $funIndex, $vtableOffset);
- printf ("\t.long codeSnippet%08x%d\n", $funIndex|0x80000000, $vtableOffset);
+ printf ("\t.long codeSnippet%08x%d - _codeSnippets\n", $funIndex, $vtableOffset);
+ printf ("\t.long codeSnippet%08x%d - _codeSnippets\n", $funIndex|0x80000000, $vtableOffset);
printf ("#else\n");
foreach my $executor ('General', 'Void', 'Hyper', 'Float', 'Double', 'Class')
{