From fb9e996771c69b4640bb7d983686ac2311b5b89e Mon Sep 17 00:00:00 2001 From: mirabilos Date: Sat, 25 Mar 2017 23:20:04 +0100 Subject: add new END_OF_FILE macro; use it to place the small i386 PIC code late --- src/amd64/cpuid_amd64.asm | 1 + src/amd64/rfxcodec_encode_dwt_shift_amd64_sse2.asm | 1 + src/amd64/rfxcodec_encode_dwt_shift_amd64_sse41.asm | 1 + src/common.asm | 14 ++++++++++++-- src/x86/cpuid_x86.asm | 1 + src/x86/rfxcodec_encode_dwt_shift_x86_sse2.asm | 1 + src/x86/rfxcodec_encode_dwt_shift_x86_sse41.asm | 1 + 7 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/amd64/cpuid_amd64.asm b/src/amd64/cpuid_amd64.asm index 306bd5a..38e2023 100644 --- a/src/amd64/cpuid_amd64.asm +++ b/src/amd64/cpuid_amd64.asm @@ -30,3 +30,4 @@ PROC cpuid_amd64 ; restore registers pop rbx ret +END_OF_FILE diff --git a/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse2.asm b/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse2.asm index aa03abd..cef3902 100644 --- a/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse2.asm +++ b/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse2.asm @@ -1484,3 +1484,4 @@ PROC rfxcodec_encode_dwt_shift_amd64_sse2 pop rdx pop rbx ret +END_OF_FILE diff --git a/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse41.asm b/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse41.asm index 0df70f5..da176e7 100644 --- a/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse41.asm +++ b/src/amd64/rfxcodec_encode_dwt_shift_amd64_sse41.asm @@ -1352,3 +1352,4 @@ PROC rfxcodec_encode_dwt_shift_amd64_sse41 pop rdx pop rbx ret +END_OF_FILE diff --git a/src/common.asm b/src/common.asm index 12f0ad5..403d54b 100644 --- a/src/common.asm +++ b/src/common.asm @@ -63,15 +63,20 @@ section .note.GNU-stack noalloc noexec nowrite progbits %ifdef ASM_ARCH_I386 %ifdef PIC ; i386 PIC -%macro PREPARE_RODATA 0 +%macro END_OF_FILE 0 +%ifdef I386_PIC_NEEDED section .text ..@get_caller_address: mov ebx, [esp] ret +%endif +%endmacro +%macro PREPARE_RODATA 0 align 16 ..@rodata_begin: %endmacro %macro RETRIEVE_RODATA 0 +%define I386_PIC_NEEDED call ..@get_caller_address %%the_caller_address: sub ebx, %%the_caller_address - ..@rodata_begin @@ -88,11 +93,16 @@ align 16 %define lsym(name) name %endif -%ifnmacro PREPARE_RODATA +%ifnmacro PREPARE_RODATA 0 %macro PREPARE_RODATA 0 section .text align 16 %endmacro %endif +%ifnmacro END_OF_FILE 0 +%macro END_OF_FILE 0 +%endmacro +%endif + section .text diff --git a/src/x86/cpuid_x86.asm b/src/x86/cpuid_x86.asm index 69b59c3..b666732 100644 --- a/src/x86/cpuid_x86.asm +++ b/src/x86/cpuid_x86.asm @@ -28,3 +28,4 @@ PROC cpuid_x86 pop ecx pop ebx ret +END_OF_FILE diff --git a/src/x86/rfxcodec_encode_dwt_shift_x86_sse2.asm b/src/x86/rfxcodec_encode_dwt_shift_x86_sse2.asm index fffdbbf..f05a705 100644 --- a/src/x86/rfxcodec_encode_dwt_shift_x86_sse2.asm +++ b/src/x86/rfxcodec_encode_dwt_shift_x86_sse2.asm @@ -1516,3 +1516,4 @@ PROC rfxcodec_encode_dwt_shift_x86_sse2 ; return value mov eax, 0 ret +END_OF_FILE diff --git a/src/x86/rfxcodec_encode_dwt_shift_x86_sse41.asm b/src/x86/rfxcodec_encode_dwt_shift_x86_sse41.asm index 7c11723..00d4b1d 100644 --- a/src/x86/rfxcodec_encode_dwt_shift_x86_sse41.asm +++ b/src/x86/rfxcodec_encode_dwt_shift_x86_sse41.asm @@ -1384,3 +1384,4 @@ PROC rfxcodec_encode_dwt_shift_x86_sse41 ; return value mov eax, 0 ret +END_OF_FILE -- cgit v1.2.3