Somewhere between 6382 (Apr 7th) and 6468 (Apr 26th), the linker was changed to only accept the filename extension ".lk". I'm not sure why this is, but it deviates from the documentation (sdas/dos/asmlnk.txt) which states [ in -f file mode ] "the commands are input from the specified file (extension must be .lnk).".
It looks like this was introduced by Revision 6445, where lklex.c was modified to change "lnk" to "lk".
In addition to this deviating from the docs, it also deviates from the usage output which still states "file[.lnk]" as the source for the "-f" argument.
Whilst I don't really mind which extension is used, the documentation and implementation should match.
I'm not sure how to map this back to a "bug" number which was fixed, so I can't see the rationale behind the change.
SDCC versions involved:
Works with .lnk as documented: SDCC : z80 3.0.2 #6382 (Apr 7 2011) (Solaris i386)
Requires .lk extension: SDCC : z80 3.0.2 #6468 (Apr 26 2011) (Solaris i386)
Error produced with the later version:
$ bin/sdldz80 -nf project.lnk
?ASlink-Error-<cannot open> : "project.lk"
*** Error code 3