diff options
author | Johann <johannkoenig@google.com> | 2020-03-31 08:38:30 +0900 |
---|---|---|
committer | Johann <johannkoenig@google.com> | 2020-04-13 08:45:58 +0900 |
commit | 686e12674fa723771c3865e38bdd1b20121a9947 (patch) | |
tree | 380bdb27e79e5eb88a5183f9fdd32ec059908f1c /vpx_ports | |
parent | 0ac5afb375bced802e4a9c3fe0647b416e4323a2 (diff) | |
download | libvpx-686e12674fa723771c3865e38bdd1b20121a9947.tar libvpx-686e12674fa723771c3865e38bdd1b20121a9947.tar.gz libvpx-686e12674fa723771c3865e38bdd1b20121a9947.tar.bz2 libvpx-686e12674fa723771c3865e38bdd1b20121a9947.zip |
simplify x86_abi_support.asm symbol declaration
Define LIBVPX_{ELF,MACHO} to simplify blocks.
Create new globalsym macro and include logic for PRIVATE.
BUG=webm:1679
Change-Id: I303ba1492a2813f685de51155ccef7e4831e1881
Diffstat (limited to 'vpx_ports')
-rw-r--r-- | vpx_ports/emms_mmx.asm | 2 | ||||
-rw-r--r-- | vpx_ports/float_control_word.asm | 4 | ||||
-rw-r--r-- | vpx_ports/x86_abi_support.asm | 70 |
3 files changed, 44 insertions, 32 deletions
diff --git a/vpx_ports/emms_mmx.asm b/vpx_ports/emms_mmx.asm index ee7595e1f..b31b25ebd 100644 --- a/vpx_ports/emms_mmx.asm +++ b/vpx_ports/emms_mmx.asm @@ -12,7 +12,7 @@ %include "vpx_ports/x86_abi_support.asm" section .text -global sym(vpx_clear_system_state)PRIVATE +globalsym(vpx_clear_system_state) sym(vpx_clear_system_state): emms ret diff --git a/vpx_ports/float_control_word.asm b/vpx_ports/float_control_word.asm index d9d000ab6..bb75b7a31 100644 --- a/vpx_ports/float_control_word.asm +++ b/vpx_ports/float_control_word.asm @@ -14,7 +14,7 @@ section .text %if LIBVPX_YASM_WIN64 -global sym(vpx_winx64_fldcw)PRIVATE +globalsym(vpx_winx64_fldcw) sym(vpx_winx64_fldcw): sub rsp, 8 mov [rsp], rcx ; win x64 specific @@ -23,7 +23,7 @@ sym(vpx_winx64_fldcw): ret -global sym(vpx_winx64_fstcw)PRIVATE +globalsym(vpx_winx64_fstcw) sym(vpx_winx64_fstcw): sub rsp, 8 fstcw [rsp] diff --git a/vpx_ports/x86_abi_support.asm b/vpx_ports/x86_abi_support.asm index 420aa668d..6b2d6b968 100644 --- a/vpx_ports/x86_abi_support.asm +++ b/vpx_ports/x86_abi_support.asm @@ -89,34 +89,51 @@ %define LIBVPX_YASM_WIN64 0 %endif +; Declare groups of platforms +%ifidn __OUTPUT_FORMAT__,elf32 + %define LIBVPX_ELF 1 +%elifidn __OUTPUT_FORMAT__,elfx32 + %define LIBVPX_ELF 1 +%elifidn __OUTPUT_FORMAT__,elf64 + %define LIBVPX_ELF 1 +%else + %define LIBVPX_ELF 0 +%endif + +%ifidn __OUTPUT_FORMAT__,macho32 + %define LIBVPX_MACHO 1 +%elifidn __OUTPUT_FORMAT__,macho64 + %define LIBVPX_MACHO 1 +%else + %define LIBVPX_MACHO 0 +%endif + ; sym() ; Return the proper symbol name for the target ABI. ; ; Certain ABIs, notably MS COFF and Darwin MACH-O, require that symbols ; with C linkage be prefixed with an underscore. ; -%ifidn __OUTPUT_FORMAT__,elf32 -%define sym(x) x -%elifidn __OUTPUT_FORMAT__,elf64 -%define sym(x) x -%elifidn __OUTPUT_FORMAT__,elfx32 -%define sym(x) x -%elif LIBVPX_YASM_WIN64 -%define sym(x) x +%if LIBVPX_ELF || LIBVPX_YASM_WIN64 + %define sym(x) x %else -%define sym(x) _ %+ x + ; Mach-O / COFF + %define sym(x) _ %+ x %endif -; PRIVATE -; Macro for the attribute to hide a global symbol for the target ABI. -; This is only active if CHROMIUM is defined. +; globalsym() +; Return a global declaration with the proper decoration for the target ABI. +; +; When CHROMIUM is defined, include attributes to hide the symbol from the +; global namespace. ; -; Chromium doesn't like exported global symbols due to symbol clashing with -; plugins among other things. +; Chromium doesn't like exported global symbols due to symbol clashing with +; plugins among other things. ; -; Requires Chromium's patched copy of yasm: -; http://src.chromium.org/viewvc/chrome?view=rev&revision=73761 -; http://www.tortall.net/projects/yasm/ticket/236 +; Requires Chromium's patched copy of yasm: +; http://src.chromium.org/viewvc/chrome?view=rev&revision=73761 +; http://www.tortall.net/projects/yasm/ticket/236 +; or nasm > 2.14. ; %ifdef CHROMIUM %ifdef __NASM_VER__ @@ -126,21 +143,16 @@ %endif %endif - %ifidn __OUTPUT_FORMAT__,elf32 - %define PRIVATE :function hidden - %elifidn __OUTPUT_FORMAT__,elf64 - %define PRIVATE :function hidden - %elifidn __OUTPUT_FORMAT__,elfx32 - %define PRIVATE :function hidden - %elifidn __OUTPUT_FORMAT__,macho32 - %define PRIVATE :private_extern - %elifidn __OUTPUT_FORMAT__,macho64 - %define PRIVATE :private_extern + %if LIBVPX_ELF + %define globalsym(x) global sym(x) %+ :function hidden + %elif LIBVPX_MACHO + %define globalsym(x) global sym(x) %+ :private_extern %else - %define PRIVATE + ; COFF / PE32+ + %define globalsym(x) global sym(x) %endif %else - %define PRIVATE + %define globalsym(x) global sym(x) %endif ; arg() |