]> granicus.if.org Git - libx264/commitdiff
* common/i386/i386inc.asm: got PIC to work for real on OS X x86.
authorSam Hocevar <sam@videolan.org>
Sat, 4 Mar 2006 02:49:44 +0000 (02:49 +0000)
committerSam Hocevar <sam@videolan.org>
Sat, 4 Mar 2006 02:49:44 +0000 (02:49 +0000)
git-svn-id: svn://svn.videolan.org/x264/trunk@452 df754926-b1dd-0310-bc7b-ec298dee348c

common/i386/i386inc.asm

index 888fdab52d51da01cbe49757f3ee2ea53b3ad34e..3830a6b5e7d4bea463792ec57eeae66f31ff8b94 100644 (file)
@@ -42,6 +42,7 @@ BITS 32
 %macro SECTION_RODATA 0
     %ifidn __OUTPUT_FORMAT__,macho
         SECTION .text
+        fakegot:
     %else
         SECTION .rodata data align=16
     %endif
@@ -82,15 +83,15 @@ BITS 32
     %ifidn __OUTPUT_FORMAT__,macho
         ; There is no real global offset table on OS X, but we still
         ; need to reference our variables by offset.
-        %define GOT_eax + eax
-        %define GOT_ebx + ebx
-        %define GOT_ecx + ecx
-        %define GOT_edx + edx
+        %define GOT_eax - fakegot + eax
+        %define GOT_ebx - fakegot + ebx
+        %define GOT_ecx - fakegot + ecx
+        %define GOT_edx - fakegot + edx
         %macro picgetgot 1
             call %%getgot 
           %%getgot: 
             pop %1 
-            sub %1, %%getgot
+            add %1, $$ - %%getgot
         %endmacro
     %else
         %ifidn __OUTPUT_FORMAT__,elf