Hi Tim,
Good to see you here, been meaning to drop you a mail to say hello since I saw the comment on the main site, poke me if I don't - I'm terrible for not getting around to things.
To answer your question, the -msdata=eabi option places small initialised global const data in the sdata2 section, non const data in sdata which are then accessed using register relative adressing from r2/r13. It's supposed to produce smaller faster code.
Unfortunately I'm not quite sure what triggers this, some opinions are that it's broken behaviour in binutils and other sources say it's related to a wrong -G option when compiling. It's possible that the way I'm building gcc isn't quite right - it's yet another thing on the todo list but I can't seem to reproduce it consistently with a small enough testcase to work with.
If you have the time and the inclination to try and reproduce it with a relatively small project then do feel free to file a bug report and attach some code.
You'll find the powerpc specific switches at
http://gcc.gnu.org/onlinedocs/gcc-4.2.4 ... PC-Options which goes into a little more detail on what the options do.