blob: 7ac050131bbe79f547c933c9363eb345249ab6b3 [file] [log] [blame]
Bram Moolenaara1ba8112005-06-28 23:23:32 +00001" Vim syntax file
Bram Moolenaar214641f2017-03-05 17:04:09 +01002" Language: ld(1) script
3" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
4" Latest Revision: 2006-04-19
Bram Moolenaar71badf92023-04-22 22:40:14 +01005" Last Change: 2023 Apr 19
Bram Moolenaara1ba8112005-06-28 23:23:32 +00006
7if exists("b:current_syntax")
8 finish
9endif
10
11let s:cpo_save = &cpo
12set cpo&vim
13
14syn keyword ldTodo contained TODO FIXME XXX NOTE
15
16syn region ldComment start='/\*' end='\*/' contains=ldTodo,@Spell
17
18syn region ldFileName start=+"+ end=+"+
19
Bram Moolenaar42eeac32005-06-29 22:40:58 +000020syn keyword ldPreProc SECTIONS MEMORY OVERLAY PHDRS VERSION INCLUDE
Bram Moolenaara1ba8112005-06-28 23:23:32 +000021syn match ldPreProc '\<VERS_\d\+\.\d\+'
22
23syn keyword ldFunction ABSOLUTE ADDR ALIGN BLOCK DATA_SEGMENT_ALIGN
24 \ DATA_SEGMENT_END DATA_SEGMENT_RELRO_END DEFINED
25 \ LOADADDR MAX MIN NEXT SIZEOF SIZEOF_HEADERS
26 \ sizeof_headers
27
Bram Moolenaar42eeac32005-06-29 22:40:58 +000028syn keyword ldKeyword ENTRY INPUT GROUP OUTPUT
Bram Moolenaara1ba8112005-06-28 23:23:32 +000029 \ SEARCH_DIR STARTUP OUTPUT_FORMAT TARGET
30 \ ASSERT EXTERN FORCE_COMMON_ALLOCATION
31 \ INHIBIT_COMMON_ALLOCATION NOCROSSREFS OUTPUT_ARCH
32 \ PROVIDE EXCLUDE_FILE SORT KEEP FILL
33 \ CREATE_OBJECT_SYMBOLS CONSTRUCTORS SUBALIGN
34 \ FILEHDR AT __asm__ ABSOLUTE
35
36syn keyword ldDataType BYTE SHORT LONG QUAD SQUAD
37syn keyword ldOutputType NOLOAD DSECT COPY INFO OVERLAY
38syn keyword ldPTType PT_NULL PT_LOAD PT_DYNAMIC PT_INTERP
39 \ PT_NOTE PT_SHLIB PT_PHDR
40
41syn keyword ldSpecial COMMON
42syn match ldSpecial '/DISCARD/'
43
44syn keyword ldIdentifier ORIGIN LENGTH
45
46syn match ldSpecSections '\.'
Bram Moolenaar71badf92023-04-22 22:40:14 +010047syn match ldSections '\.[^ \t)]\+'
Bram Moolenaara1ba8112005-06-28 23:23:32 +000048syn match ldSpecSections '\.\%(text\|data\|bss\|symver\)\>'
49
50syn match ldNumber display '\<0[xX]\x\+\>'
51syn match ldNumber display '\d\+[KM]\>' contains=ldNumberMult
Bram Moolenaar5be4cee2019-09-27 19:34:08 +020052syn match ldNumberMult display '\(\d\+\)\@<=[KM]\>'
Bram Moolenaara1ba8112005-06-28 23:23:32 +000053syn match ldOctal contained display '\<0\o\+\>'
54 \ contains=ldOctalZero
55syn match ldOctalZero contained display '\<0'
56syn match ldOctalError contained display '\<0\o*[89]\d*\>'
57
58
59hi def link ldTodo Todo
60hi def link ldComment Comment
61hi def link ldFileName String
62hi def link ldPreProc PreProc
63hi def link ldFunction Identifier
64hi def link ldKeyword Keyword
65hi def link ldType Type
66hi def link ldDataType ldType
67hi def link ldOutputType ldType
68hi def link ldPTType ldType
69hi def link ldSpecial Special
70hi def link ldIdentifier Identifier
71hi def link ldSections Constant
72hi def link ldSpecSections Special
73hi def link ldNumber Number
74hi def link ldNumberMult PreProc
75hi def link ldOctal ldNumber
76hi def link ldOctalZero PreProc
77hi def link ldOctalError Error
78
79let b:current_syntax = "ld"
80
81let &cpo = s:cpo_save
82unlet s:cpo_save