Are you working with the optiboot sources from Google Code? I had already fixed the "-mshortcalls" issue, and there are a bunch of other changes there that may or may not be helpful.
-DVIRTUAL_BOOT does nothing [should be -DVIRTUAL_BOOT_PARTITION]
Oops. Confirmed.
652 bytes
Sounds about right. 596 bytes in the current source, but various stuff has been removed. Note that for a non-bootloader-supporting chip, the granularity of bootloader size is much finer (1 Flash Page, vs doubling via BOOTSZ)