Messages in this thread | | | Date | Thu, 4 Jun 2009 20:51:03 -0700 | From | Andrew Morton <> | Subject | Re: [2.6.30-rc8] gcc 3.3 : __udivdi3 undefined. |
| |
On Fri, 05 Jun 2009 12:39:06 +0900 Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> wrote:
> Andrew Morton wrote: > > Do > > > > make arch/x86/mm/pageattr.s > > > > then have a look in pageattr.s to find the __udivdi3 callsite. > > > > It might not even be in arch/x86/mm/pageattr.o at all. If not, keep > > building .s files in that directory until you find it. > > > > Building with CONFIG_DEBUG_INFO=1 will allow you to find the exact C > > file-n-line where the __udivdi3() call is being emmitted (look at the > > .loc lines). > > $ make -k CONFIG_DEBUG_INFO=1 `echo arch/x86/mm/*.c | sed -e 's/\.c/.s/g'` > (...snipped...) > $ grep __udivdi3 arch/x86/mm/*.s > arch/x86/mm/memtest.s:.globl __udivdi3 > arch/x86/mm/memtest.s: call __udivdi3
Well, that tells us the .c file, but not the location within it. Please check the .loc info as I suggested.
Perhaps it's this:
static void __init memtest(u64 pattern, u64 start_phys, u64 size) { u64 i, count; u64 *start; u64 start_bad, last_bad; u64 start_phys_aligned; size_t incr;
incr = sizeof(pattern); start_phys_aligned = ALIGN(start_phys, incr); count = (size - (start_phys_aligned - start_phys))/incr;
| |