[PATCH] Fix over-alignment problem on x86-64
Thanks to Jan Hubicka who suggested this fix. The problem seems to be that gcc generates a 32byte alignment for static objects > 32bytes. This causes gas to set a high alignment on the section, which causes the uneven (not multiple of sizeof(struct kernel_param)) section size. The pointer division with a base not being a multiple of sizeof(*ptr) then causes the invalid result. This just forces a small alignment, which makes the section end come out with the correct alignment. The only mystery left is why ld chose a 16 byte padding instead of 32byte.
Showing
Please register or sign in to comment