;; SPDX-License-Identifier: BSD-2-Clause
;; Copyright 1996-2025 The NASM Authors - All Rights Reserved
;;
;; List of global NASM directives and pragma operations codes
;;
;; ALL directives, including backend-specific, need to be added here.
;;
;; %pragma operation keywords (the second word, after facility) MAY
;; be added here too to assist in parsing, but it is not required.
;; See the definition of struct pragma in include/nasm.h.
;;
;; The same keyword can be used as a directive and as a pragma
;; operation, or as pragma operations in different namespaces.  The
;; same D_ constant will be used for both, and this is perfectly
;; acceptable.
;;
;; In the future, this will be turned into a general list of keywords
;; to be parsed in special contexts.
;;
;; #special tokens are used to separate different classes of tokens.
;; Make sure to add new tokens to the correct place. If a token is used
;; in both a directive and in pragmas, they should be in the directive
;; part of the list. Tokens used in pragmas *only* go at the end of the
;; list.
;;

; --- General configuration
#name directive
#prefix D_
#errval D_unknown
#header directiv.h

; --- Special enum values
;     These must be first in the list.
#special none = 0			; Must be zero
#special unknown
#special corrupt

; --- True directives
;     These tokens are accepted as directives by the global code or
;     ignored if not implemented.

; --- Global directives
absolute
bits
common
cpu
debug
default
dollarhex
extern
float
global
list
pragma
required
sectalign
section
segment
static
warning

; --- Common output directives/pragmas
prefix
suffix
postfix
gprefix
gsuffix
gpostfix
lprefix
lsuffix
lpostfix

; --- Pseudo-op list, for the benefit of %isdirective
;     Tokens put in this part will be rejected as either directives or
;     pragmas
#special pseudo_ops
db
dw
dd
dq
dt
do
dy
dz
resb
resw
resd
resq
rest
reso
resy
resz
incbin
equ

; --- Format-specific directives
;     Tokens put in this part of the list will be forwarded to the
;     backend ofmt->directive() method.
#special ofmt
export				; outcoff, outobj
group				; outobj
import				; outobj
library				; outrdf2
map				; outbin
module				; outrdf2
org				; outbin
osabi				; outelf
safeseh				; outcoff
uppercase			; outieee, outobj

; --- The following are tokens used in pragmas, not actual directives.
;     They will not be accepted as directives.
#special pragma_tokens

; --- Assembler pragmas
limit

; --- Listing pragmas
options

; --- Backend-specific pragmas
subsections_via_symbols		; macho
no_dead_strip			; macho
maxdump				; dbg
nodepend			; obj
noseclabels			; dbg
