{ "name":"LinkerScript", "scopeName":"source.ld", "fileTypes":["ld"], "patterns":[ {"include":"#comments"}, {"include":"#simple_commands"}, {"include":"#assignments"}, {"include":"#sections"}, {"include":"#memory"}, {"include":"#phdrs"}, {"include":"#version"}, {"include":"#expressions"} ], "repository":{ "comments":{ "name":"comment.block.ld", "begin":"/\\*", "beginCaptures":{ "0":{ "name":"punctuation.definition.comment.begin.ld" } }, "end":"\\*/", "endCaptures":{ "0":{ "name":"punctuation.definition.comment.end.ld" } } }, "simple_commands":{ "patterns":[ { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: ENTRY )\\b" }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: INCLUDE |INPUT |GROUP |OUTPUT |SEARCH_DIR |STARTUP )\\b" }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: OUTPUT_FORMAT |TARGET )\\b" }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: ASSERT |EXTERN |FORCE_COMMON_ALLOCATION |INHIBIT_COMMON_ALLOCATION |NOCROSSREFS |OUTPUT_ARCH )\\b" } ] }, "assignments":{ "patterns":[ { "name":"keyword.operand.ld", "match":"=|\\+=|-=|\\*=|/=|<<=|>>=|&=|\\|=" }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: PROVIDE |HIDDEN |PROVIDE_HIDDEN )\\b" } ] }, "sections":{ "patterns":[ { "name":"support.function.builtin.ld", "match":"(?x) \\b(?:SECTIONS)\\b" }, { "name":"section.input.ld", "match":"(?x) (\\S+)((?:\\s*\\(\\s*)(((\\.[\\.\\*\\w]+)(?:\\s*))+)(?:\\s*\\)))", "captures":{ "1":{ "name":"support.function.builtin.ld" }, "3":{ "name":"variable.other.ld" } } }, { "name":"section.output.prepart.ld", "match":"(?mx) (\\B\\.[\\.\\*\\w]+\\b)(?:\\s*)(\\w*)(?:\\s*)((\\(\\s*[\\w]*\\s*\\))?)(?:\\s*)(\\:)(?:\\s*)((AT)?)(?:\\s*\\(?)(\\w*)(?:\\s*\\)?)", "captures":{ "1":{ "name":"variable.other.ld" }, "2":{ "name":"constant.numeric.ld" }, "4":{ "name":"keyword.control.ld" }, "5":{ "name":"keyword.operand.ld" }, "7":{ "name":"support.function.builtin.ld" }, "8":{ "name":"constant.numeric.ld" } } }, { "name":"section.output.postpart.ld", "match":"(?:\\}\\s*)((\\>)(\\s*\\w*)?)(?:\\s*)((AT)(?:\\s*)(\\>)(?:\\s*)(\\w*))?(?:\\s*)(((\\:\\w*)(?:\\s*))*)(((\\=)(?:\\s*)(\\w*))?)", "captures":{ "2":{ "name":"keyword.operand.ld" }, "3":{ "name":"variable.other.ld" }, "5":{ "name":"support.function.builtin.ld" }, "6":{ "name":"keyword.operand.ld" }, "7":{ "name":"variable.other.ld" }, "8":{ "name":"keyword.control.ld" }, "13":{ "name":"keyword.operand.ld" }, "14":{ "name":"constant.numeric.ld" } } }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: EXCLUDE_FILE |CREATE_OBJECT_SYMBOLS |CONSTRUCTORS )\\b" }, { "name":"datatypes.ld", "match":"(?x) (BYTE|SHORT|LONG|QUAD|SQUAD)(?:\\s*\\(\\s*)([^\\(\\)]*)(?:\\s*\\))", "captures":{ "1":{ "name":"support.type.ld" }, "2":{ "name":"constant.numeric.ld" } } }, { "name":"section.discard.ld", "match":"(/DISCARD/)(?:\\s*)(\\:)", "captures":{ "1":{ "name":"variable.other.ld" }, "2":{ "name":"keyword.operand.ld" } } } ] }, "memory":{ "patterns":[ { "name":"support.function.builtin.ld", "match":"(?x) \\b(?:MEMORY)\\b" }, { "name":"memory.config.ld", "match":"(\\S*)(?:\\s*\\(\\s*)((R|r|W|w|X|x|A|a|I|i|L|l|\\!)+)(?:\\s*\\)\\s*)(\\:)((?:\\s*)(ORIGIN|org|o|LENGTH|len|l)(?:\\s*)(\\=)(?:\\s*)(\\w*)(,?))((?:\\s*)(ORIGIN|org|o|LENGTH|len|l)(?:\\s*)(\\=)(?:\\s*)(\\w*))", "captures": { "1":{ "name":"variable.other.ld" }, "2":{ "name":"keyword.control.ld" }, "4":{ "name":"keyword.operand.ld" }, "6":{ "name":"support.variable.ld" }, "7":{ "name":"keyword.operand.ld" }, "8":{ "name":"constant.numeric.ld" }, "11":{ "name":"support.variable.ld" }, "12":{ "name":"keyword.operand.ld" }, "13":{ "name":"constant.numeric.ld" } } }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: LENGTH |len |l |ORIGIN |org |o )\\b" } ] }, "phdrs":{ "patterns":[ { "name":"support.function.builtin.ld", "match":"(?x) \\b(?:PHDRS)\\b" }, { "name":"phdrs.config.ld", "match":"(\\w*)(?:\\s*)(PT_NULL|PT_LOAD|PT_DYNAMIC|PT_INTERP|PT_NOTE|PT_SHLIB|PT_PHDR)(?:\\s*)((FILEHDR)?)(?:\\s*)((PHDRS)?)(?:\\s*)((((AT)?)(?:\\s*\\(\\s*)(\\w*)(?:\\s*\\)\\s*))?)((((FLAGS)?)(?:\\s*\\(\\s*)(\\w*)(?:\\s*\\)\\s*))?)(\\;)", "captures":{ "1":{ "name":"variable.other.ld" }, "2":{ "name":"constant.numeric.ld" }, "4":{ "name":"keyword.control.ld" }, "6":{ "name":"keyword.control.ld" }, "10":{ "name":"support.function.builtin.ld" }, "11":{ "name":"constant.numeric.ld" }, "15":{ "name":"support.function.builtin.ld" }, "16":{ "name":"constant.numeric.ld" } } } ] }, "version":{ "patterns":[ { "name":"support.function.builtin.ld", "match":"(?x) \\b(?:VERSION)\\b" } ] }, "expressions":{ "patterns":[ { "name":"expression.ld", "match":"(\\w*)(?:\\s*)(=|\\+=|-=|\\*=|/=|<<=|>>=|&=|\\|=)", "captures": { "1":{ "name":"variable.other.ld" }, "2":{ "name":"keyword.operand.ld" } } }, { "name":"constant.numeric.ld", "match":"(?x) \\b(?:(MAXPAGESIZE)|(COMMONPAGESIZE))\\b" }, { "name":"variable.other.ld", "match":"\\." }, { "name":"keyword.operand.ld", "match":"!|-|~" }, { "name":"keyword.operand.ld", "match":"\\*|/|%" }, { "name":"keyword.operand.ld", "match":"\\+|\\-" }, { "name":"keyword.operand.ld", "match":"<<|>>" }, { "name":"keyword.operand.ld", "match":"==|!=|>|<|>=|<=" }, { "name":"keyword.operand.ld", "match":"&" }, { "name":"keyword.operand.ld", "match":"\\|" }, { "name":"keyword.operand.ld", "match":"&&" }, { "name":"keyword.operand.ld", "match":"\\|\\|" }, { "name":"keyword.operand.ld", "match":"\\?|\\:" }, { "name":"support.function.builtin.ld", "match":"(?x) \\b(?: ABSOLUTE |ADDR |ALIGN |BLOCK |DATA_SEGMENT_ALIGN |DATA_SEGMENT_END |DEFINED |LOADADDR |MAX |MIN |NEXT |SIZEOF |SIZEOF_HEADERS |sizeof_headers )\\b" } ] } } }