On 04.03.2015 15:35, Dave Martin wrote:
Try rm drivers/clk/mvebu/kirkwood.o make ARCH=arm KBUILD_CFLAGS_KERNEL=-save-temps drivers/clk/mvebu/kirkwood.o (abuse of KBUILD_CFLAGS_KERNEL here, but it's empty by default, and I'm too lazy to copy-paste command lines...) The compiler will split out the compiled assembly code in kirkwood.s: Look for ".align" directives between the start of the affected section and the start of the next section (next .section directive). Here, we just have .align 2, which is the expected correct value (i.e., align __of_table_mv88f6180_clk on a 2^2 = 4 byte boundary). A different value here may indicate a bug in the compiler, because you observed that gcc _thinks_ that __alignof__ is 4 for the struct in this section even in the failing case.
Ok, this is the result for the assembly: .section __clk_of_table,"a",%progbits .align 3 .type __of_table_mv88f6180_clk, %object .size __of_table_mv88f6180_clk, 196 __of_table_mv88f6180_clk: .space 64 .ascii "marvell,mv88f6180-core-clock\000" .space 99 .word kirkwood_clk_init .space 4 .type __of_table_kirkwood_clk, %object .size __of_table_kirkwood_clk, 196 __of_table_kirkwood_clk: .space 64 .ascii "marvell,kirkwood-core-clock\000" .space 100 .word kirkwood_clk_init And this is the objdump: Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000094 00000000 00000000 00000034 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1 .data 00000008 00000000 00000000 000000c8 2**3 CONTENTS, ALLOC, LOAD, RELOC, DATA 2 .bss 00000000 00000000 00000000 000000d0 2**0 ALLOC 3 .debug_abbrev 0000047a 00000000 00000000 000000d0 2**0 CONTENTS, READONLY, DEBUGGING 4 .debug_info 00002c7d 00000000 00000000 0000054a 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 5 .debug_line 000003c7 00000000 00000000 000031c7 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 6 .init.text 00000348 00000000 00000000 00003590 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 7 .ARM.extab.init.text 00000000 00000000 00000000 000038d8 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 8 .ARM.exidx.init.text 00000030 00000000 00000000 000038d8 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 9 .ARM.extab 00000010 00000000 00000000 00003908 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 10 .ARM.exidx 00000008 00000000 00000000 00003918 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 11 .rodata 00000040 00000000 00000000 00003920 2**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 12 __clk_of_table 00000190 00000000 00000000 00003960 2**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 13 .rodata.str1.8 00000100 00000000 00000000 00003af0 2**3 CONTENTS, ALLOC, LOAD, READONLY, DATA 14 .init.rodata 00000288 00000000 00000000 00003bf0 2**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 15 .debug_frame 000000b4 00000000 00000000 00003e78 2**2 CONTENTS, RELOC, READONLY, DEBUGGING 16 .debug_loc 000002ef 00000000 00000000 00003f2c 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 17 .debug_pubnames 0000002c 00000000 00000000 0000421b 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 18 .debug_aranges 00000050 00000000 00000000 00004247 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 19 .debug_ranges 00000108 00000000 00000000 00004297 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 20 .debug_str 0000163d 00000000 00000000 0000439f 2**0 CONTENTS, READONLY, DEBUGGING 21 .comment 00000055 00000000 00000000 000059dc 2**0 CONTENTS, READONLY 22 .note.GNU-stack 00000000 00000000 00000000 00005a31 2**0 CONTENTS, READONLY 23 .ARM.attributes 0000002b 00000000 00000000 00005a31 2**0 CONTENTS, READONLY Very interesting. It shows an .align 3 which explains alignment on 8 byte boundaries: c07630f8 T __clk_of_table c07630f8 t __of_table_fixed_factor_clk c07630f8 T __stop_kprobe_blacklist c07631c0 t __of_table_fixed_clk c0763288 t __of_table_gpio_gate_clk c0763350 t __of_table_mv88f6180_clk So this is indeed a compiler bug, right? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/