Linux kernel linkerscript contains additional semicolon (last line):
.apicdrivers : AT(ADDR(.apicdrivers) - LOAD_OFFSET) {
__apicdrivers = .;
*(.apicdrivers);I checked that both gold and bfd are able to parse something like:
.text : { ;;*(.text);;S = 0;; } }Patch do the same.
This is indeed better, but I think a more natural description about the grammar is that empty commands are allowed.