Concerning the linking step: Is it guaranteed that the object file with the main function comes first? IIRC, that is necessary for a working binary. That being said, the problem at hand can still be something totally unrelated.
The first variant is the correct approach, because SDCC does not currently support the second variant, even though it is valid C. I have no idea what is going on with the ASlink warning. It is possible that you found a bug. If the array is a global variable, you could omit the explicit zero-initialization as a workaround, because global variables are implicitly zeroed.
Remove semicolon after if-condition. (bug #3713)
Fix typo in watchdog SFR definition. (bug #3710)
Fix bug #3529 via patch #450 by Mark Symonds.
Use >= instead of > for C23 test. (bug #3709)
Makeshift fix for bug #3694: Delete sdcpp in uninstall.
Various updates to the manual.