
I tried to find documentation on this, but couldn't.
I've discovered, on PowerPC 85xx systems at least, that the mere presence of a non-static global variable, even if it isn't used by any code, will cause relocation to fail. Exactly how it fails, I can't say, but U-Boot does hang.
If I make the global variable static, the problem goes away. Note that I have no code that actually references the variable. It just sits there, occupying space.
Fortunately, the data structure doesn't need to be non-static. I just forgot to put 'static' in its definition. Of course, it would have been nice to know this up front.
Can someone explain why this is the case? Do I need to do anything special in my code to access global variables, static or not static?