;; --------------------------------------------------------------------------
;;
;;   Copyright 1996-2017 The NASM Authors - All Rights Reserved
;;   See the file AUTHORS included with the NASM distribution for
;;   the specific copyright holders.
;;
;;   Redistribution and use in source and binary forms, with or without
;;   modification, are permitted provided that the following
;;   conditions are met:
;;
;;   * Redistributions of source code must retain the above copyright
;;     notice, this list of conditions and the following disclaimer.
;;   * Redistributions in binary form must reproduce the above
;;     copyright notice, this list of conditions and the following
;;     disclaimer in the documentation and/or other materials provided
;;     with the distribution.
;;
;;     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
;;     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
;;     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;;     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
;;     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
;;     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;;     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
;;     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
;;     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
;;     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
;;     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
;;     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
;;     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;;
;; --------------------------------------------------------------------------

;
; Define a few macros which lets the dbg format process files intended
; for the .obj format.
;
OUT: dbg
%define __SECT__ [section .text]
%imacro group 1+.nolist
[group %1]
%endmacro
%imacro uppercase 0+.nolist
 %pragma dbg uppercase %1
%endmacro
%imacro export 1+.nolist
 %pragma dbg export %1
%endmacro
%imacro import 1+.nolist
 %pragma dbg import %1
%endmacro
%macro __NASM_CDecl__ 1
%endmacro
