Messages in this thread | | | Date | Mon, 27 Feb 2023 15:08:42 +0100 | From | Peter Zijlstra <> | Subject | Re: vmlinux.o: warning: objtool: mptscsih_abort+0x7f4: unreachable instruction |
| |
On Mon, Feb 27, 2023 at 12:38:13PM +0000, Mark Rutland wrote: > [adding Peter and Josh, given objtool] > > On Mon, Feb 27, 2023 at 05:28:53PM +0800, kernel test robot wrote: > > Hi Mark, > > > > FYI, the error/warning still remains. > > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > > head: f3a2439f20d918930cc4ae8f76fe1c1afd26958f > > commit: c27cd083cfb9d392f304657ed00fcde1136704e7 Compiler attributes: GCC cold function alignment workarounds > > date: 5 weeks ago > > config: x86_64-randconfig-r026-20230227 (https://download.01.org/0day-ci/archive/20230227/202302271743.78emit6I-lkp@intel.com/config) > > compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 > > reproduce (this is a W=1 build): > > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c27cd083cfb9d392f304657ed00fcde1136704e7 > > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > > git fetch --no-tags linus master > > git checkout c27cd083cfb9d392f304657ed00fcde1136704e7 > > # save the config file > > mkdir build_dir && cp config build_dir/.config > > make W=1 O=build_dir ARCH=x86_64 olddefconfig > > make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash > > > > If you fix the issue, kindly add following tag where applicable > > | Reported-by: kernel test robot <lkp@intel.com> > > | Link: https://lore.kernel.org/oe-kbuild-all/202302271743.78emit6I-lkp@intel.com/ > > > > All warnings (new ones prefixed by >>): > > > > >> vmlinux.o: warning: objtool: mptscsih_abort+0x7f4: unreachable instruction
> > 07ef 2fb7bff: e8 00 00 00 00 call 2fb7c04 <mptscsih_abort+0x7f4> 2fb7c00: R_X86_64_PLT32 mpt_halt_firmware-0x4 > > 07f4 2fb7c04: e9 75 fb ff ff jmp 2fb777e <mptscsih_abort+0x36e>
this is one of those noreturn things again... objtool was clever enough to figure out that mpt_halt_firmware() does not return (all it's control flow ends in panic()) and hence it 'knows' that +7f4 will not be executed. But GCC didn't figure out the same.
| |