From: Tony Luck <tony.luck@gmail.com> To: Rusty Russell <rusty@rustcorp.com.au> Cc: Alan Jenkins <alan-jenkins@tuffmail.co.uk>, Sam Ravnborg <sam@ravnborg.org>, Mike Frysinger <vapier.adi@gmail.com>, greg@kroah.com, linux-kbuild@vger.kernel.org, carmelo73@gmail.com, linux-kernel@vger.kernel.org, achiang@hp.com, kyle@mcmartin.ca, deller@gmx.de, jejb@parisc-linux.org, Benjamin Herrenschmidt <benh@kernel.crashing.org>, paulus@samba.org Subject: Re: [PATCH 05/10] kbuild: sort the list of symbols exported by the kernel (__ksymtab) Date: Fri, 20 Nov 2009 14:20:01 -0800 [thread overview] Message-ID: <12c511ca0911201420i5f2d4751m25ae5288b69dbabb@mail.gmail.com> (raw) In-Reply-To: <200911091347.57286.rusty@rustcorp.com.au> The sorted ksymtab breaks ia64 (and possibly ppc64 and parisc too). Alex Chiang did the bisect to find this change as the cause of the breakage. The problem is that ia64 expects that the first item in each ksymtab entry to be a function pointer. The code in modpost that creates .tmp_exports-asm.S doesn't know about types of exported objects, so it uses __EXPORT_SYMBOL from linux/mod_export.h for everything. This results in PTR SYM(sym); PTR SYM(__kstrtab_##sym); which the preprocessor expands to entries like: .long ____pagevec_lru_add .long __kstrtab____pagevec_lru_add which puts the address of the first instruction of the function into the table, rather than the address of a function pointer (which on ia64 is a two element data object containing the code address and the global data pointer). The syntax you need for this* is: .long @fptr(____pagevec_lru_add) .long __kstrtab____pagevec_lru_add Note that you must only use the @fptr(name) syntax for function exports. Exported data items just need an address. -Tony * On ia64 ... powerpc and parisc might need something else.
WARNING: multiple messages have this Message-ID (diff)
From: Tony Luck <tony.luck@gmail.com> To: Rusty Russell <rusty@rustcorp.com.au> Cc: Alan Jenkins <alan-jenkins@tuffmail.co.uk>, Sam Ravnborg <sam@ravnborg.org>, Mike Frysinger <vapier.adi@gmail.com>, greg@kroah.com, linux-kbuild@vger.kernel.org, carmelo73@gmail.com, linux-kernel@vger.kernel.org, achiang@hp.com, kyle@mcmartin.ca, deller@gmx.de, jejb@parisc-linux.org, Benjamin Herrenschmidt <benh@kernel.crashing.org>, paulus@samba.org Subject: Re: [PATCH 05/10] kbuild: sort the list of symbols exported by the kernel (__ksymtab) Date: Fri, 20 Nov 2009 14:20:01 -0800 [thread overview] Message-ID: <12c511ca0911201420i5f2d4751m25ae5288b69dbabb@mail.gmail.com> (raw) In-Reply-To: <200911091347.57286.rusty@rustcorp.com.au> The sorted ksymtab breaks ia64 (and possibly ppc64 and parisc too). Alex Chiang did the bisect to find this change as the cause of the breakage. The problem is that ia64 expects that the first item in each ksymtab entry to be a function pointer. The code in modpost that creates .tmp_exports-asm.S doesn't know about types of exported objects, so it uses __EXPORT_SYMBOL from linux/mod_export.h for everything. This results in PTR SYM(sym); PTR SYM(__kstrtab_##sym); which the preprocessor expands to entries like: .long ____pagevec_lru_add .long __kstrtab____pagevec_lru_add which puts the address of the first instruction of the function into the table, rather than the address of a function pointer (which on ia64 is a two element data object containing the code address and the global data pointer). The syntax you need for this* is: .long @fptr(____pagevec_lru_add) .long __kstrtab____pagevec_lru_add Note that you must only use the @fptr(name) syntax for function exports. Exported data items just need an address. -Tony * On ia64 ... powerpc and parisc might need something else.
next prev parent reply other threads:[~2009-11-20 22:19 UTC|newest] Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-11-02 16:52 Fast LKM symbol resolution Alan Jenkins 2009-11-03 3:55 ` Greg KH 2009-11-03 10:06 ` [PATCH 0/10] module: Speed up symbol resolution during module loading (using binary search) Alan Jenkins 2009-11-03 15:58 ` Greg KH 2009-11-05 12:17 ` Rusty Russell 2009-11-03 10:06 ` [PATCH 01/10] ARM: use unified discard definition in linker script Alan Jenkins 2009-11-03 10:06 ` [PATCH 02/10] ARM: unexport symbols used to implement floating point emulation Alan Jenkins 2009-11-03 10:06 ` [PATCH 03/10] module: extract __EXPORT_SYMBOL from module.h into mod_export.h Alan Jenkins 2009-11-03 10:06 ` [PATCH 04/10] module: make MODULE_SYMBOL_PREFIX into a CONFIG option Alan Jenkins 2009-11-03 10:19 ` Mike Frysinger 2009-11-03 10:19 ` Mike Frysinger 2009-11-03 12:16 ` Alan Jenkins 2009-11-03 12:30 ` Mike Frysinger 2009-11-03 12:30 ` Mike Frysinger 2009-11-03 13:29 ` Paul Mundt 2009-11-03 13:39 ` Mike Frysinger 2009-11-03 13:39 ` Mike Frysinger 2009-11-03 13:46 ` Paul Mundt 2009-11-03 13:58 ` Mike Frysinger 2009-11-03 13:58 ` Mike Frysinger 2009-11-03 14:07 ` Paul Mundt 2009-11-03 10:06 ` [PATCH 05/10] kbuild: sort the list of symbols exported by the kernel (__ksymtab) Alan Jenkins 2009-11-04 8:19 ` Rusty Russell 2009-11-04 10:00 ` Alan Jenkins 2009-11-04 11:12 ` Mike Frysinger 2009-11-04 11:12 ` Mike Frysinger 2009-11-04 17:19 ` Sam Ravnborg 2009-11-05 14:24 ` Alan Jenkins 2009-11-05 16:17 ` Mike Frysinger 2009-11-05 16:17 ` Mike Frysinger 2009-11-09 3:17 ` Rusty Russell 2009-11-20 22:20 ` Tony Luck [this message] 2009-11-20 22:20 ` Tony Luck 2009-11-21 0:02 ` Alan Jenkins 2009-11-23 19:53 ` Alex Chiang 2009-11-23 22:44 ` Alan Jenkins 2009-11-24 0:57 ` Rusty Russell 2009-11-24 5:39 ` James Bottomley 2009-11-24 9:28 ` Alan Jenkins 2009-11-24 22:43 ` James Bottomley 2009-11-25 9:15 ` Alan Jenkins 2009-11-25 15:08 ` James Bottomley 2009-11-25 17:01 ` Alan Jenkins 2009-11-27 11:03 ` Rusty Russell 2009-11-26 0:40 ` Andrew Morton 2009-11-26 17:14 ` Alan Jenkins 2009-11-03 10:06 ` [PATCH 06/10] module: refactor symbol tables and try to reduce code size of each_symbol() Alan Jenkins 2009-11-04 8:28 ` Rusty Russell 2009-11-04 9:45 ` Alan Jenkins 2009-11-03 10:06 ` [PATCH 07/10] lib: Add generic binary search function to the kernel Alan Jenkins 2009-11-03 10:06 ` [PATCH 08/10] lib: bsearch - remove redundant special case for arrays of size 0 Alan Jenkins 2009-11-03 10:06 ` [PATCH 09/10] module: speed up find_symbol() using binary search on the builtin symbol tables Alan Jenkins 2009-11-04 8:31 ` Rusty Russell 2009-11-03 10:06 ` [PATCH 10/10] module: fix is_exported() to return true for all types of exports Alan Jenkins 2009-11-04 8:32 ` Rusty Russell 2009-11-06 5:37 ` Fast LKM symbol resolution Carmelo Amoroso 2009-11-07 20:59 [PATCH 0/10] module: Speed up symbol resolution during module loading (using binary search) Alan Jenkins 2009-11-07 21:03 ` [PATCH 05/10] kbuild: sort the list of symbols exported by the kernel (__ksymtab) Alan Jenkins
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=12c511ca0911201420i5f2d4751m25ae5288b69dbabb@mail.gmail.com \ --to=tony.luck@gmail.com \ --cc=achiang@hp.com \ --cc=alan-jenkins@tuffmail.co.uk \ --cc=benh@kernel.crashing.org \ --cc=carmelo73@gmail.com \ --cc=deller@gmx.de \ --cc=greg@kroah.com \ --cc=jejb@parisc-linux.org \ --cc=kyle@mcmartin.ca \ --cc=linux-kbuild@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=paulus@samba.org \ --cc=rusty@rustcorp.com.au \ --cc=sam@ravnborg.org \ --cc=vapier.adi@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.