From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: greg@kroah.com, linux-kbuild@vger.kernel.org,
carmelo73@gmail.com, linux-kernel@vger.kernel.org,
rusty@rustcorp.com.au, Sam Ravnborg <sam@ravnborg.org>
Subject: Re: [PATCH 05/10] kbuild: sort the list of symbols exported by the kernel (__ksymtab)
Date: Thu, 26 Nov 2009 17:14:55 +0000 [thread overview]
Message-ID: <4B0EB78F.8040600@tuffmail.co.uk> (raw)
In-Reply-To: <20091125164033.655810b7.akpm@linux-foundation.org>
Andrew Morton wrote:
> On Tue, 3 Nov 2009 10:06:17 +0000
> Alan Jenkins <alan-jenkins@tuffmail.co.uk> wrote:
>
>
>> modpost of vmlinux.o now extracts the ksymtab sections and outputs
>> sorted versions of them as .tmp_exports-asm.S. These sorted sections
>> are linked into vmlinux and the original unsorted sections are
>> discarded.
>>
>> This will allow modules to be loaded faster, resolving symbols using
>> binary search, without any increase in the memory needed for the
>> symbol tables.
>>
>> This does not affect the building of modules, so hopefully it won't
>> affect compile times too much.
>>
>> Minimally tested on ARM under QEMU emulator.
>> Build tested on blackfin; output of "size -A" unchanged.
>>
>
> I'm getting a segfault from write_exports().
>
> (gdb) bt
> #0 0x0000003e5f075510 in strlen () from /lib64/libc.so.6
> #1 0x0000003e5f045cb8 in vfprintf () from /lib64/libc.so.6
> #2 0x0000003e5f06683a in vsnprintf () from /lib64/libc.so.6
> #3 0x0000000000401897 in buf_printf (buf=0x7fff5514f5e0,
> fmt=0x7fff5514f4e0 "0x%02x ") at scripts/mod/modpost.c:1692
> #4 0x00000000004042c8 in main (argc=1024, argv=0x7fff5514f5e0)
> at scripts/mod/modpost.c:2063
> (gdb) f 4
> #4 0x00000000004042c8 in main (argc=1024, argv=0x7fff5514f5e0)
> at scripts/mod/modpost.c:2063
> 2063 buf_printf(&buf, "__EXPORT_%s_SYMBOL(%s,"
> (gdb) p sym
> $1 = (struct symbol *) 0x65c9f0
> (gdb) p *sym
> $2 = {next = 0x64c3a0, module = 0x610010, crc = 4077789248, crc_valid = 1,
> weak = 0, vmlinux = 0, kernel = 0, preloaded = 0, function = 1,
> export = export_unknown, name = 0x65ca10 "simple_prepare_write"}
> (gdb) p sym->export
> $3 = export_unknown
> (gdb) p/d sym->export
> $4 = 5
>
> but section_names[] (which could be static in write_exports() btw) has
> only five entries.
>
Thanks. I can't work out why this would happen. Could you show the
options modpost is being run with (make V=1 will do)? Also confirm
whether this is "MODPOST vmlinux.o" or "MODPOST 1001 modules".
> main (argc=1024
It looks like this is the step "MODPOST 1001 modules". But that
shouldn't run write_exports(). We only run modpost with "-x" for the
step "MODPOST vmlinux.o". Also, the vmlinux-only modpost is run first,
so I wonder why it didn't hit the same problem.
I don't know why sym->vmlinux==0 either; simple_prepare_write() should
always be built into vmlinux. Perhaps modpost is being run on libfs.o
for some strange reason.
Alan
next prev parent reply other threads:[~2009-11-26 17:14 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
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 [this message]
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=4B0EB78F.8040600@tuffmail.co.uk \
--to=alan-jenkins@tuffmail.co.uk \
--cc=akpm@linux-foundation.org \
--cc=carmelo73@gmail.com \
--cc=greg@kroah.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=sam@ravnborg.org \
/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: link
Be 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.