This premiliary patch contains support for native symlinks. See this thread: http://thread.gmane.org/gmane.comp.gnu.mingw.user/32432/
As I do not know which Windows versions are officially supported by MSYS, create_symlink function is not implemented as it is available since Vista. Original patch had CreateSymbolicLink dynamically loaded based on Windows version, but since CreateHardLink is used directly (and IsWow54Process elsewhere as well), lets leave actual implementation once this question is resolved.
msys_symlink was called from path.cc with arguments swapped, so fix both caller and callee. At least this part of patch would deserve merging.
Also it turned out, that symlinks are actually easy to implement, but learning the rest of MSYS about their existence is much harder. There is some code trying to resolve .lnk files as well as code which stores symlink info into NTFS extended attributes and also code implementing links with BackupWrite. Everything probably inherited from Cygwin. How should it be done in MSYS?
Interestingly enough BackupWrite approach uses fallback semantics. If 'symlink' cannot be created, file copy is performed. On Linux link syscall returns -EPERM on FAT filesystem (and I would expect -ENOTSUPP). I'd rather avoid silent fallback, or make that optional.
More comments later, there is already enough questions asked.