Messages in this thread Patch in this message | | | Date | Mon, 10 May 2004 10:56:06 -0700 | From | "Randy.Dunlap" <> | Subject | Re: [PATCH*] show last kernel-image symbol in /proc/kallsyms |
| |
On Mon, 10 May 2004 14:14:10 +1000 Rusty Russell wrote:
| On Mon, 2004-05-10 at 10:14, Randy.Dunlap wrote: | > 'cat' or 'tail' of /proc/kallsyms (2.6.6-rc2 or -rc3, & probably much | > earlier) does not include the last kernel-image symbol (_einittext). | > | > _einittext is the last symbol generated in .tmp_kallsyms2.S | > and the symbol count in that file also appears to be correct, | > but the iterator code for /proc/kallsyms comes up 1 short somehow. | > | > Here are 2 patches. Either one of them "fixes" the problem. | > Neither of them is the correct fix AFAIK. | | Ah, I see you are a student of the Morton school of patch extraction. | Well, it worked.
Well.... yes.
And thanks for taking time to fix it. It now works as expected. :)
'patch' complains about a malformed input file (the @@ line counts don't match the patch content). Correction is below. Or were more patch lines needed (& missing)?
| Name: Show Last Symbol in /proc/kallsyms | Status: Tested on 2.6.6-rc3.bk11 | | The current code doesn't show the last symbol (usually _einittext) in | /proc/kallsyms. The reason for this is subtle: s_start() returns an | empty string for position 0 (ignored by s_show()), and s_next() | returns the first symbol for position 1. | | What should happen is that update_iter() for position 0 should fill in | the first symbol. Unfortunately, the get_ksymbol_core() fills in the | symbol information, *and* updates the iterator: we have to split these | functions, which we do by making it return the length of the name | offset. | | Then we can call get_ksymbol_core() without moving the iterator, | meaning that we can call it at position 0 (ie. s_start()). | | diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.6.6-rc3-bk11/kernel/kallsyms.c working-2.6.6-rc3-bk11/kernel/kallsyms.c | --- linux-2.6.6-rc3-bk11/kernel/kallsyms.c 2004-03-12 07:57:28.000000000 +1100 | +++ working-2.6.6-rc3-bk11/kernel/kallsyms.c 2004-05-10 13:11:06.000000000 +1000 | @@ -210,16 +212,16 @@ static int update_iter(struct kallsym_it ***** should be: @@ -210,9 +212,10 @@
| | /* We need to iterate through the previous symbols: can be slow */ | for (; iter->pos != pos; iter->pos++) { | - get_ksymbol_core(iter); | + iter->nameoff += get_ksymbol_core(iter); | cond_resched(); | } | + get_ksymbol_core(iter); | return 1; | } |
-- ~Randy (Again. Sometimes I think ln -s /usr/src/linux/.config .signature) -- akpm - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |