[krbdev.mit.edu #7815] Text relocations in iaesx86.s

nalin@redhat.com via RT rt-comment at krbdev.mit.edu
Thu Jan 9 13:59:58 EST 2014


--- krb5-1.12/src/lib/crypto/builtin/aes/iaesx86.s
+++ krb5-1.12/src/lib/crypto/builtin/aes/iaesx86.s
@@ -256,6 +256,7 @@ DD 0
 section .text
 
 
+extern _GLOBAL_OFFSET_TABLE_
 
 align 16
 key_expansion256:
@@ -318,12 +319,18 @@ _iEncExpandKey128:
 
 	mov ecx,[esp-4+8]		;input
 	mov edx,[esp-4+12]		;ctx
+	push ebx
 
         movdqu xmm1, [ecx]    ; loading the key
 
         movdqu [edx], xmm1
 
-        movdqa xmm5, [shuffle_mask]
+        call .get_GOT
+.get_GOT:
+        pop ebx
+        add ebx,_GLOBAL_OFFSET_TABLE_+$$-.get_GOT wrt ..gotpc
+
+        movdqa xmm5, [ebx+shuffle_mask wrt ..gotoff]
 
         add edx,16
 
@@ -348,6 +355,8 @@ _iEncExpandKey128:
         aeskeygenassist xmm2, xmm1, 0x36    ; Generating round key 10
         call key_expansion128
 
+	pop ebx
+
 	ret
 
 
@@ -412,6 +421,7 @@ global _iEncExpandKey256
 _iEncExpandKey256:
 	mov ecx, [esp-4+8]		;input
 	mov edx, [esp-4+12]		;expanded key
+	push ebx
 
 
     movdqu xmm1, [ecx]    ; loading the key
@@ -421,7 +431,12 @@ _iEncExpandKey256:
 
     add edx,32
 
-    movdqa xmm5, [shuffle_mask]  ; this mask is used by key_expansion
+    call .get_GOT
+.get_GOT:
+    pop ebx
+    add ebx,_GLOBAL_OFFSET_TABLE_+$$-.get_GOT wrt ..gotpc
+
+    movdqa xmm5, [ebx+shuffle_mask wrt ..gotoff] ; this mask is used by key_expansion
 
     aeskeygenassist xmm2, xmm3, 0x1     ;
     call key_expansion256
@@ -452,6 +467,8 @@ _iEncExpandKey256:
     movdqu [edx], xmm1
 
 
+	pop ebx
+
 	ret
 
 



More information about the krb5-bugs mailing list