In the latest release of WinAVR, the disassembly output created by avr-objdump -s (.lss file) no longer includes the source code as it should. I have written a program call ObjDumpSrc that adds the source code to the disassembly. I put it in a batch file for use with a Windows command prompt:
avr-objdump -h -C -l -d %1.elf | objdumpsrc >%1.lss
avr-objdump produces the disassembly with source line info using "-l". ObjDumpSrc uses those source markers to actually add the source.
I originally wrote this before avr-objdump -s was broken in the latest release of WinAVR. It handles reordering of functions within a file which avr-objdump doesn't (apparently only a problem with C++).
The source code and executable are attached.
[Executable updated 2/7/08 with fully linked C runtime instead of requiring runtime DLL.]