On Wed, 19 Aug 2020 11:23:42 +0200 Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > The data of compressed section should be aligned to 4 > (for 32bit) or 8 (for 64 bit) bytes. > > The binutils ld sets sh_addralign to 1, which makes libelf > fail with misaligned section error during the update as > reported by Jesper: > > FAILED elf_update(WRITE): invalid section alignment > > While waiting for ld fix, we can fix compressed sections > sh_addralign value manually. > > Adding warning in -vv mode when the fix is triggered: > > $ ./tools/bpf/resolve_btfids/resolve_btfids -vv vmlinux > ... > section(36) .comment, size 44, link 0, flags 30, type=1 > section(37) .debug_aranges, size 45684, link 0, flags 800, type=1 > - fixing wrong alignment sh_addralign 16, expected 8 > section(38) .debug_info, size 129104957, link 0, flags 800, type=1 > - fixing wrong alignment sh_addralign 1, expected 8 > section(39) .debug_abbrev, size 1152583, link 0, flags 800, type=1 > - fixing wrong alignment sh_addralign 1, expected 8 > section(40) .debug_line, size 7374522, link 0, flags 800, type=1 > - fixing wrong alignment sh_addralign 1, expected 8 > section(41) .debug_frame, size 702463, link 0, flags 800, type=1 > section(42) .debug_str, size 1017571, link 0, flags 830, type=1 > - fixing wrong alignment sh_addralign 1, expected 8 > section(43) .debug_loc, size 3019453, link 0, flags 800, type=1 > - fixing wrong alignment sh_addralign 1, expected 8 > section(44) .debug_ranges, size 1744583, link 0, flags 800, type=1 > - fixing wrong alignment sh_addralign 16, expected 8 > section(45) .symtab, size 2955888, link 46, flags 0, type=2 > section(46) .strtab, size 2613072, link 0, flags 0, type=3 > ... > update ok for vmlinux I also works for me: [...] section(37) .debug_aranges, size 45684, link 0, flags 800, type=1 - fixing wrong alignment sh_addralign 16, expected 8 section(38) .debug_info, size 129098181, link 0, flags 800, type=1 - fixing wrong alignment sh_addralign 1, expected 8 section(39) .debug_abbrev, size 1152583, link 0, flags 800, type=1 - fixing wrong alignment sh_addralign 1, expected 8 section(40) .debug_line, size 7374522, link 0, flags 800, type=1 - fixing wrong alignment sh_addralign 1, expected 8 section(41) .debug_frame, size 702463, link 0, flags 800, type=1 section(42) .debug_str, size 1017606, link 0, flags 830, type=1 - fixing wrong alignment sh_addralign 1, expected 8 section(43) .debug_loc, size 3019453, link 0, flags 800, type=1 - fixing wrong alignment sh_addralign 1, expected 8 section(44) .debug_ranges, size 1744583, link 0, flags 800, type=1 - fixing wrong alignment sh_addralign 16, expected 8 section(45) .symtab, size 2955888, link 46, flags 0, type=2 section(46) .strtab, size 2613072, link 0, flags 0, type=3 section(47) .shstrtab, size 525, link 0, flags 0, type=3 [...] update ok for vmlinux.err.bak > > Another workaround is to disable compressed debug info data > CONFIG_DEBUG_INFO_COMPRESSED kernel option. > > Fixes: fbbb68de80a4 ("bpf: Add resolve_btfids tool to resolve BTF IDs in ELF object") > Cc: Mark Wielaard <mjw@xxxxxxxxxx> > Cc: Nick Clifton <nickc@xxxxxxxxxx> > Reported-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- Thanks for fixing this! Acked-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer