--- a/rdrand_asm.S +++ b/rdrand_asm.S @@ -83,6 +83,7 @@ jmp 4b ENDPROC(x86_rdseed_or_rdrand_bytes) +#define INIT_PIC() #define SETPTR(var,ptr) leaq var(%rip),ptr #define PTR0 %rdi #define PTR1 %rsi @@ -180,6 +190,7 @@ #define NPTR2 1 /* %rcx = %r1 */ #endif + INIT_PIC() ENTRY(x86_aes_mangle) #ifdef __i386__ @@ -283,6 +294,17 @@ #endif ret ENDPROC(x86_aes_mangle) + +#if defined(__i386__) && defined(__PIC__) + .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits +.globl __i686.get_pc_thunk.bx + .hidden __i686.get_pc_thunk.bx + .type __i686.get_pc_thunk.bx,@function +__i686.get_pc_thunk.bx: + movl (%esp), %ebx + ret +#endif + /* aeskeygenassist $imm,%xmm0,%xmm1 */ #define AESKEYGENASSIST(imm) .byte 0x66,0x0f,0x3a,0xdf,0xc8,imm