The latest binutils stopped aligning section data in relocatable ELF. It saves small number of bytes that were previously inserted between sections. However, modpost crashes due to unaligned access: https://sourceware.org/bugzilla/show_bug.cgi?id=32435 https://sourceware.org/bugzilla/show_bug.cgi?id=32493 Similar to kernel space, unaligned data access in userspace can be problematic on some architectures. Simple example on ARM: $ CC=arm-linux-gnueabihf-gcc $ echo 'int foo(int *p) { return *p + *(p + 1); }' | ${CC} -O2 -x c - -c -o foo.o $ echo 'int foo(int *p); int main(void) { char str[16] = "helloworld"; return foo((int *)(str + 1)); }' | ${CC} -x c - -c -o main.o $ ${CC} -static -o unalign-test main.o foo.o $ qemu-armhf unalign-test qemu: uncaught target signal 7 (Bus error) - core dumped Bus error (core dumped) In this case, the 'ldrd' instruction causes a bus error due to an unaligned access. If the -O2 flag is omitted, this issue does not occur. To avoid potential unaligned access, use the get_unaligned() approach as seen in the kernel space. Masahiro Yamada (3): modpost: fix the missed iteration for the max bit in do_input() modpost: refactor do_vmbus_entry() modpost: work around unaligned data access error scripts/mod/file2alias.c | 36 +++++++++++++++++------------------- scripts/mod/modpost.c | 24 ++++++++++++------------ scripts/mod/modpost.h | 14 ++++++++++++++ 3 files changed, 43 insertions(+), 31 deletions(-) -- 2.43.0