mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-26 08:51:25 +02:00
54 lines
1.2 KiB
Diff
54 lines
1.2 KiB
Diff
--- 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
|
|
@@ -172,7 +173,16 @@
|
|
jmp 4b
|
|
ENDPROC(x86_rdseed_or_rdrand_bytes)
|
|
|
|
+#if defined(__PIC__)
|
|
+#undef __i686 /* gcc builtin define gets in our way */
|
|
+#define INIT_PIC() \
|
|
+ call __i686.get_pc_thunk.bx ; \
|
|
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
+#define SETPTR(var,ptr) leal (var)@GOTOFF(%ebx),ptr
|
|
+#else
|
|
+#define INIT_PIC()
|
|
#define SETPTR(var,ptr) movl $(var),ptr
|
|
+#endif
|
|
#define PTR0 %eax
|
|
#define PTR1 %edx
|
|
#define PTR2 %ecx
|
|
@@ -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
|