
Dear Kim,
In message 20090216200502.1e25c494.kim.phillips@freescale.com you wrote:
Trent Piepho xyzzy@speakeasy.org wrote:
...
But what systems are affected by the problem? For instance ms7750se only has ".rodata", not even ".rodata.str1.4". So should it get changed too?
There are CPUs that have a special segment for byte aligned data. Does u-boot support any of these CPUs? I don't know. But changing ".rodata" to ".rodata*" could break a system if ".rodata1" was supposed to be picked up by a ".*data*1" somewhere else in the linker script. It seems like people who know the platform would be less likely to get caught by this.
Or take something like mpc8220, which has this for a text segment: *(.text) *(.fixup) *(.got1) . = ALIGN(16); *(.rodata) *(.rodata1) *(.rodata.str1.4) *(.eh_frame)
Why is the start of rodata aligned to 16 bytes? I'd guess some sort of I/D cache issue. Though aren't fixup and got1 data, not code? I can't find any docs on what the differences between fixup, got, got1, and got2 are. It seems like current gcc only uses got2. The mpc8220 ld script also lists fixup a second time, in the reloc section, a mistake that probably doesn't break anything since I think gcc hasn't used fixup in some time.
Anyway, not knowing if it's ok to delete fixup and got1, I would change this to: *(.text) *(.fixup) *(.got1) . = ALIGN(16); *(.eh_frame) *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
eh_frame should go before rodata* since it has has a larger alignment, but now rodata isn't 16 byte aligned like it was before. Does that matter? I doubt it, but I don't know for sure.
WD, do you have a response to the above? Otherwise, I'll put this in my queue:
Please don't. I really want to see this fixed for ALL affected boards, not only for a small subset so everbody forgets it again and we run into it later again and again.
Trent - you have obviously already spend a lot of effort into analyzing this code - most probably more time than any other of us. Based on your experience and the effort you already spent I think it would be best if you could provided a patch to fix all boards.
Thanks in advance.
Best regards,
Wolfgang Denk