Re: new objtool warnings with gcc-14

From: Arnd Bergmann
Date: Wed Aug 07 2024 - 10:57:53 EST


On Wed, Aug 7, 2024, at 16:18, Peter Zijlstra wrote:
> On Wed, Aug 07, 2024 at 03:56:45PM +0200, Arnd Bergmann wrote:
>> I see some objtool warnings with gcc-14.2.0 that I don't show
>> up on gcc-14.1 or older:
>>
>> vmlinux.o: warning: objtool: adis16260_write_raw() falls through to next function adxrs290_read_avail()
>> vmlinux.o: warning: objtool: adis16400_write_raw() falls through to next function adis16400_show_flash_count()
>> vmlinux.o: warning: objtool: x86_init_dev_msi_info+0x61: relocation to !ENDBR: irq_chip_retrigger_hierarchy+0x0
>> vmlinux.o: warning: objtool: rza1_irqc_probe+0x257: relocation to !ENDBR: irq_chip_retrigger_hierarchy+0x0
>> vmlinux.o: warning: objtool: .export_symbol+0x5908: data relocation to !ENDBR: irq_chip_retrigger_hierarchy+0x0
>> vmlinux.o: warning: objtool: .export_symbol+0x35b18: data relocation to !ENDBR: stpcpy+0x0
>
> https://gcc.gnu.org/PR116174
>
> As such, I've been blissfully ignoring all GCC-14 issues.

Ok. I can confirm that reverting b644126237a1 ("Align tight&hot
loop without considering max skipping bytes.") in gcc-14.2 avoids
the ENDBR issue.

The first two warnings in the list, about adis16260_write_raw()
and adis16400_write_raw() apparently already show up with older
compilers, so those are unrelated.

The problem here is the unreachable() in code like:

adis_dev_auto_scoped_lock(adis) {
if (t >= 0x0A)
adis->spi->max_speed_hz = ADIS16260_SPI_SLOW;
else
adis->spi->max_speed_hz = ADIS16260_SPI_FAST;
return __adis_write_reg_8(adis, ADIS16260_SMPL_PRD, t);
}
unreachable();

Arnd