On Apr 5, 2012, at 2:30 AM, Richard Guenther wrote:
> Why can the link editor not promote the definitions alignment
> when merging with a common with bigger alignment?
The problem is that when a common symbol is upped in alignment, but then not
chosen by ld (or worse, by the dynamic linker), but the codegen that assumes a
larger alignment is used, then you realize the alignment of the data actually
selected must be retroactively upped as well. This means, the alignment in
existing .a files, .o files, and .so files. The .a and .o files can be easily
solved by simply requiring the compile of the world after upgrading all linkers
(static and dynamic) to only have -fdata-sections. For .so files, well, that's
above my pay grade. Darwin, I'll note, can manage the upping on the size and
alignment, but only between all the commons, not a hard definition behind it.