Re: [tip:x86/asm 3/3] lib/bug.c:135: undefined reference to `__start___bug_table'

From: Peter Zijlstra
Date: Thu Mar 30 2017 - 11:53:36 EST


On Thu, Mar 30, 2017 at 05:49:27PM +0200, Peter Zijlstra wrote:
> On Thu, Mar 30, 2017 at 09:02:31PM +0800, kbuild test robot wrote:
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/asm
> > head: 19d436268dde95389c616bb3819da73f0a8b28a8
> > commit: 19d436268dde95389c616bb3819da73f0a8b28a8 [3/3] debug: Add _ONCE() logic to report_bug()
> > config: arm-efm32_defconfig (attached as .config)
> > compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
> > reproduce:
> > wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > chmod +x ~/bin/make.cross
> > git checkout 19d436268dde95389c616bb3819da73f0a8b28a8
> > # save the attached .config to linux build tree
> > make.cross ARCH=arm
> >
> > All errors (new ones prefixed by >>):
> >
> > lib/lib.a(bug.o): In function `find_bug':
> > >> lib/bug.c:135: undefined reference to `__start___bug_table'
> > >> lib/bug.c:135: undefined reference to `__stop___bug_table'
>
> Blergh.. this cures it for me.
>
> Ideally all those would use RW_DATA_SECTION, but alas.
>

> diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
> index c74ae9c..c8a3b61 100644
> --- a/arch/x86/kernel/vmlinux.lds.S
> +++ b/arch/x86/kernel/vmlinux.lds.S
> @@ -146,6 +146,7 @@ SECTIONS
> _edata = .;
> } :data
>
> + BUG_TABLE
>
> . = ALIGN(PAGE_SIZE);
> __vvar_page = .;

Also, I have absolutely 0 clues as to why x86 builds without this :/