Re: kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without frame pointer save/setup
On Tue, Aug 27, 2019 at 10:43:27AM +0800, He Zhe wrote: > > > On 8/26/19 11:18 PM, Josh Poimboeuf wrote: > > On Mon, Aug 26, 2019 at 10:42:53PM +0800, He Zhe wrote: > >> Hi All, > >> > >> Since 3193c0836f20 ("bpf: Disable GCC -fgcse optimization for > >> ___bpf_prog_run()"), > >> We have got the following warning, > >> kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call > >> without frame pointer save/setup > >> > >> If reverting the above commit, we will get the following warning, > >> kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x8b9: sibling call > >> from callable instruction with modified stack frame > >> if CONFIG_RETPOLINE=n, and no warning if CONFIG_RETPOLINE=y > > Can you please share the following: > > > > - core.o file > > Attached. > > > > > The following would also be helpful for me to try to recreate it: > > > > - config file > > - compiler version > > - kernel version > > I pasted them in the other reply. Thanks. I was able to recreate. I reduced it to: void a(b); __attribute__((optimize(""))) c(void) { a(); } Apparently '__attribute__((optimize()))' is overwriting GCC cmdline flags, including -fno-omit-frame-pointer. I had assumed it would append instead of replace. I'm guessing this is a GCC "feature" instead of a bug. I'll need to follow up. -- Josh
Re: kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without frame pointer save/setup
On 8/26/19 11:11 PM, Greg KH wrote: > On Mon, Aug 26, 2019 at 10:42:53PM +0800, He Zhe wrote: >> Hi All, >> >> Since 3193c0836f20 ("bpf: Disable GCC -fgcse optimization for >> ___bpf_prog_run()"), >> We have got the following warning, >> kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call >> without frame pointer save/setup >> >> If reverting the above commit, we will get the following warning, >> kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x8b9: sibling call >> from callable instruction with modified stack frame >> if CONFIG_RETPOLINE=n, and no warning if CONFIG_RETPOLINE=y > Do you see this same problem on 5.3-rc6? > > And what version of gcc are you using? Sorry for missing such information. Here is the .config along with kernel and GCC version. # # Automatically generated file; DO NOT EDIT. # Linux/x86 5.3.0-rc6 Kernel Configuration # # # Compiler: x86_64-wrs-linux-gcc (GCC) 9.1.0 # CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=90100 CONFIG_CLANG_VERSION=0 CONFIG_CC_HAS_ASM_GOTO=y CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_EXTABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y # # General setup # CONFIG_INIT_ENV_ARG_LIMIT=32 # CONFIG_COMPILE_TEST is not set # CONFIG_HEADER_TEST is not set CONFIG_LOCALVERSION="dev" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_BUILD_SALT="" CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y CONFIG_HAVE_KERNEL_XZ=y CONFIG_HAVE_KERNEL_LZO=y CONFIG_HAVE_KERNEL_LZ4=y CONFIG_KERNEL_GZIP=y # CONFIG_KERNEL_BZIP2 is not set # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_XZ is not set # CONFIG_KERNEL_LZO is not set # CONFIG_KERNEL_LZ4 is not set CONFIG_DEFAULT_HOSTNAME="(none)" CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_USELIB=y CONFIG_AUDIT=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y CONFIG_AUDITSYSCALL=y # # IRQ subsystem # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_IRQ_MIGRATION=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_GENERIC_MSI_IRQ=y CONFIG_GENERIC_MSI_IRQ_DOMAIN=y CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y CONFIG_GENERIC_IRQ_RESERVATION_MODE=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y # CONFIG_GENERIC_IRQ_DEBUGFS is not set # end of IRQ subsystem CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_ARCH_CLOCKSOURCE_INIT=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_GENERIC_CMOS_UPDATE=y # # Timers subsystem # CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set # CONFIG_NO_HZ_IDLE is not set CONFIG_NO_HZ_FULL=y CONFIG_CONTEXT_TRACKING=y # CONFIG_CONTEXT_TRACKING_FORCE is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y # end of Timers subsystem CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set # # CPU/Task time and stats accounting # CONFIG_VIRT_CPU_ACCOUNTING=y CONFIG_VIRT_CPU_ACCOUNTING_GEN=y # CONFIG_IRQ_TIME_ACCOUNTING is not set CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y # CONFIG_PSI is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y # # RCU Subsystem # CONFIG_TREE_RCU=y # CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y CONFIG_TREE_SRCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y CONFIG_RCU_NOCB_CPU=y # end of RCU Subsystem CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y # CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y # # Scheduler features # # end of Scheduler features CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_NUMA_BALANCING=y CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y CONFIG_CGROUPS=y CONFIG_PAGE_COUNTER=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y CONFIG_MEMCG_SWAP_ENABLED=y CONFIG_MEMCG_KMEM=y CONFIG_BLK_CGROUP=y CONFIG_CGROUP_WRITEBACK=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y CONFIG_CGROUP_PIDS=y # CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y # CONFIG_CGROUP_HUGETLB is not set CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y CONFIG_CGROUP_DEBUG=y CONFIG_SOCK_CGROUP_DATA=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_CHECKPOINT_RESTORE=y # CONFIG_SCHED_AUTOGROUP is not set # CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_
Re: kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without frame pointer save/setup
On Mon, Aug 26, 2019 at 10:42:53PM +0800, He Zhe wrote: > Hi All, > > Since 3193c0836f20 ("bpf: Disable GCC -fgcse optimization for > ___bpf_prog_run()"), > We have got the following warning, > kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without > frame pointer save/setup > > If reverting the above commit, we will get the following warning, > kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x8b9: sibling call > from callable instruction with modified stack frame > if CONFIG_RETPOLINE=n, and no warning if CONFIG_RETPOLINE=y Can you please share the following: - core.o file The following would also be helpful for me to try to recreate it: - config file - compiler version - kernel version -- Josh
Re: kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without frame pointer save/setup
On Mon, Aug 26, 2019 at 10:42:53PM +0800, He Zhe wrote: > Hi All, > > Since 3193c0836f20 ("bpf: Disable GCC -fgcse optimization for > ___bpf_prog_run()"), > We have got the following warning, > kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without > frame pointer save/setup > > If reverting the above commit, we will get the following warning, > kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x8b9: sibling call > from callable instruction with modified stack frame > if CONFIG_RETPOLINE=n, and no warning if CONFIG_RETPOLINE=y Do you see this same problem on 5.3-rc6? And what version of gcc are you using? thanks, greg k-h
kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without frame pointer save/setup
Hi All, Since 3193c0836f20 ("bpf: Disable GCC -fgcse optimization for ___bpf_prog_run()"), We have got the following warning, kernel/bpf/core.o: warning: objtool: ___bpf_prog_run.cold()+0x7: call without frame pointer save/setup If reverting the above commit, we will get the following warning, kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x8b9: sibling call from callable instruction with modified stack frame if CONFIG_RETPOLINE=n, and no warning if CONFIG_RETPOLINE=y Zhe