Here is the ld -M output for the "bad" compile: .data_nosave 0xc0376790 0x870 load address 0x00376790 0xc0377000 . = ALIGN (0x1000) *fill* 0xc0376790 0x870 00 0xc0377000 __nosave_begin = . *(.data.nosave) 0xc0377000 . = ALIGN (0x1000) 0xc0377000 __nosave_end = . 0xc0377000 . = ALIGN (0x1000) 0xc0377000 _edata = . 0xc0377000 PROVIDE (edata, .) 0xc0377000 . = ALIGN (0x0) 0xc0377000 __bss_start = . 0xc0377000 . = ALIGN (0x0)
.sbss 0xc0377000 0xad0 load address 0x00377000 Here is the ld -M output for a "good" compile (i.e. align before the .data_nosave: 0xc0377000 . = ALIGN (0x1000) .data_nosave 0xc0377000 0x0 load address 0x00377000 0xc0377000 __nosave_begin = . *(.data.nosave) 0xc0377000 . = ALIGN (0x1000) 0xc0377000 __nosave_end = . 0xc0377000 . = ALIGN (0x1000) 0xc0377000 _edata = . 0xc0377000 PROVIDE (edata, .) 0xc0377000 . = ALIGN (0x0) 0xc0377000 __bss_start = . 0xc0377000 . = ALIGN (0x0) .sbss 0xc0377000 0xad0 load address 0x00377000 It looks like putting the align before the .data.nosave puts all the labels at the same address. Putting it *after* allows the .data_nosave to be in a different page than the labels. I can provide more info if needed. But it looks like everything is nicely aligned, until the data_nosave, which needs the alignment. The section before it is one of the few with stuff in it. Cheers, Sean _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev