a)
The startup data does need debug information as the linker is using it to produce just what the compiled code expects. So the debug information for _startupData is needed, but if you really need it (I doubt) you can just place that constant in its own file.
b)
There is no performance gained by not generating the debug information. The compiler does generate different the same code regardless of that switch.
So the question is why you do not want to have debug information in release?
To my understanding, usually the debug and release targets differ in the optimization settings and eventually in conditionally compiled code to test more at runtime. They do not differ in the "generate debug info" setting in most cases.
The only exception I see is if you distribute object files to be linked against without the source code, and without that the user should see how your stuff works.