1 ; libFLAC - Free Lossless Audio Codec library 2 ; Copyright (C) 2001-2009 Josh Coalson 3 ; Copyright (C) 2011-2016 Xiph.Org Foundation 4 ; 5 ; Redistribution and use in source and binary forms, with or without 6 ; modification, are permitted provided that the following conditions 7 ; are met: 8 ; 9 ; - Redistributions of source code must retain the above copyright 10 ; notice, this list of conditions and the following disclaimer. 11 ; 12 ; - Redistributions in binary form must reproduce the above copyright 13 ; notice, this list of conditions and the following disclaimer in the 14 ; documentation and/or other materials provided with the distribution. 15 ; 16 ; - Neither the name of the Xiph.org Foundation nor the names of its 17 ; contributors may be used to endorse or promote products derived from 18 ; this software without specific prior written permission. 19 ; 20 ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 ; ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 ; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 ; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 24 ; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 ; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 ; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 ; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 ; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 ; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 32 bits 32 33 34 %ifdef OBJ_FORMAT_win32 35 %define FLAC__PUBLIC_NEEDS_UNDERSCORE 36 %idefine code_section section .text align=16 class=CODE use32 37 %idefine data_section section .data align=32 class=DATA use32 38 %idefine bss_section section .bss align=32 class=DATA use32 39 %elifdef OBJ_FORMAT_aout 40 %define FLAC__PUBLIC_NEEDS_UNDERSCORE 41 %idefine code_section section .text 42 %idefine data_section section .data 43 %idefine bss_section section .bss 44 %elifdef OBJ_FORMAT_aoutb 45 %define FLAC__PUBLIC_NEEDS_UNDERSCORE 46 %idefine code_section section .text 47 %idefine data_section section .data 48 %idefine bss_section section .bss 49 %elifdef OBJ_FORMAT_coff 50 %define FLAC__PUBLIC_NEEDS_UNDERSCORE 51 %idefine code_section section .text 52 %idefine data_section section .data 53 %idefine bss_section section .bss 54 %elifdef OBJ_FORMAT_macho 55 %define FLAC__PUBLIC_NEEDS_UNDERSCORE 56 %idefine code_section section .text 57 %idefine data_section section .data 58 %idefine bss_section section .bss 59 %elifdef OBJ_FORMAT_elf 60 %idefine code_section section .text align=16 61 %idefine data_section section .data align=32 62 %idefine bss_section section .bss align=32 63 %else 64 %error unsupported object format! ; this directive doesn't really work here 65 %endif 66 67 %imacro cglobal 1 68 %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE 69 global _%1 70 %else 71 %if __NASM_MAJOR__ >= 2 72 global %1:function hidden 73 %else 74 global %1 75 %endif 76 %endif 77 %endmacro 78 79 %imacro cextern 1 80 %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE 81 extern _%1 82 %else 83 extern %1 84 %endif 85 %endmacro 86 87 %imacro cident 1 88 _%1: 89 %1: 90 %endmacro 91 92 %ifdef OBJ_FORMAT_elf 93 section .note.GNU-stack progbits noalloc noexec nowrite align=1 94 %endif 95 96