;;; ld-script.el --- GNU linker script editing mode for Emacs
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2016 Free Software Foundation, Inc.
;; Author: Masatake YAMATO<jet@gyve.org>
;; Keywords: languages, faces
(modify-syntax-entry ?\) ")(" st)
(modify-syntax-entry ?\[ "(]" st)
(modify-syntax-entry ?\] ")[" st)
- (modify-syntax-entry ?_ "w" st)
+ (modify-syntax-entry ?_ "_" st)
(modify-syntax-entry ?. "_" st)
(modify-syntax-entry ?\\ "\\" st)
(modify-syntax-entry ?: "." st)
"INCLUDE" "INPUT" "GROUP" "AS_NEEDED" "OUTPUT" "SEARCH_DIR" "STARTUP"
;; 3.4.3 Commands Dealing with Object File Formats
"OUTPUT_FORMAT" "TARGET"
- ;; 3.4.3 Other Linker Script Commands
+ ;; 3.4.4 Assign alias names to memory regions
+ "REGION_ALIAS"
+ ;; 3.4.5 Other Linker Script Commands
"ASSERT" "EXTERN" "FORCE_COMMON_ALLOCATION"
- "INHIBIT_COMMON_ALLOCATION" "NOCROSSREFS" "OUTPUT_ARCH"
+ "INHIBIT_COMMON_ALLOCATION" "INSERT" "AFTER" "BEFORE"
+ "NOCROSSREFS" "OUTPUT_ARCH" "LD_FEATURE"
;; 3.5.2 PROVIDE
"PROVIDE"
;; 3.5.3 PROVIDE_HIDDEN
;; 3.6 SECTIONS Command
"SECTIONS"
;; 3.6.4.2 Input Section Wildcard Patterns
- "SORT" "SORT_BY_NAME" "SORT_BY_ALIGNMENT"
+ "SORT" "SORT_BY_NAME" "SORT_BY_ALIGNMENT" "SORT_BY_INIT_PRIORITY"
;; 3.6.4.3 Input Section for Common Symbols
"COMMON"
;; 3.6.4.4 Input Section and Garbage Collection
"AT"
;; 3.6.8.4 Forced Input Alignment
"SUBALIGN"
- ;; 3.6.8.6 Output Section Phdr
+ ;; 3.6.8.5 Output Section Constraint
+ "ONLY_IF_RO" "ONLY_IF_RW"
+ ;; 3.6.8.7 Output Section Phdr
":PHDR"
;; 3.7 MEMORY Command
"MEMORY"
;; 3.8 PHDRS Command
"PHDRS" "FILEHDR" "FLAGS"
- "PT_NULL" "PT_LOAD" "PT_DYNAMIC" "PT_INTERP" "PT_NONE" "PT_SHLIB" "PT_PHDR"
+ "PT_NULL" "PT_LOAD" "PT_DYNAMIC" "PT_INTERP" "PT_NOTE" "PT_SHLIB" "PT_PHDR"
;; 3.9 VERSION Command
"VERSION")
"Keywords used of GNU ld script.")
-;; 3.10.8 Builtin Functions
+
+;; 3.10.2 Symbolic Constants
+;; 3.10.9 Builtin Functions
(defvar ld-script-builtins
- '("ABSOLUTE"
+ '("CONSTANT"
+ "MAXPAGESIZE"
+ "COMMONPAGESIZE"
+ "ABSOLUTE"
"ADDR"
"ALIGN"
+ "ALIGNOF"
"BLOCK"
"DATA_SEGMENT_ALIGN"
"DATA_SEGMENT_END"
(defvar ld-script-font-lock-keywords
(append
- `((,(regexp-opt ld-script-keywords 'words)
- 1 font-lock-keyword-face)
- (,(regexp-opt ld-script-builtins 'words)
- 1 font-lock-builtin-face)
+ `((,(concat "\\_<" (regexp-opt ld-script-keywords) "\\_>")
+ 0 font-lock-keyword-face)
+ (,(concat "\\_<" (regexp-opt ld-script-builtins) "\\_>")
+ 0 font-lock-builtin-face)
;; 3.6.7 Output Section Discarding
;; 3.6.4.1 Input Section Basics
- ;; 3.6.8.6 Output Section Phdr
+ ;; 3.6.8.7 Output Section Phdr
("/DISCARD/\\|EXCLUDE_FILE\\|:NONE" . font-lock-warning-face)
("\\W\\(\\.\\)\\W" 1 ld-script-location-counter-face)
)
"Default font-lock-keywords for `ld-script-mode'.")
;;;###autoload
-(define-derived-mode ld-script-mode nil "LD-Script"
+(define-derived-mode ld-script-mode prog-mode "LD-Script"
"A major mode to edit GNU ld script files"
(set (make-local-variable 'comment-start) "/* ")
(set (make-local-variable 'comment-end) " */")
(provide 'ld-script)
-;; arch-tag: 83280b6b-e6fc-4d00-a630-922d7aec5593
;;; ld-script.el ends here