1 ; libFLAC - Free Lossless Audio Codec library 2 ; Copyright (C) 2001-2009 Josh Coalson 3 ; Copyright (C) 2011-2014 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_elf 50 %idefine code_section section .text align=16 51 %idefine data_section section .data align=32 52 %idefine bss_section section .bss align=32 53 %else 54 %error unsupported object format! 55 %endif 56 57 %imacro cglobal 1 58 %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE 59 global _%1 60 %else 61 %if __NASM_MAJOR__ >= 2 62 global %1:function hidden 63 %else 64 global %1 65 %endif 66 %endif 67 %endmacro 68 69 %imacro cextern 1 70 %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE 71 extern _%1 72 %else 73 extern %1 74 %endif 75 %endmacro 76 77 %imacro cident 1 78 _%1: 79 %1: 80 %endmacro 81 82 %ifdef OBJ_FORMAT_elf 83 section .note.GNU-stack progbits noalloc noexec nowrite align=1 84 %endif 85 86