[<prev] [next>] [day] [month] [year] [list]
Message-ID: <478F9E91.7050009@goop.org>
Date: Thu, 17 Jan 2008 10:29:37 -0800
From: Jeremy Fitzhardinge <jeremy@...p.org>
To: Ingo Molnar <mingo@...e.hu>
CC: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: link error in today's x86.git
I'm seeing this with the current x86.git:
arch/x86/mm/built-in.o: In function `fix_to_virt': /home/jeremy/hg/xen/paravirt/linux-i386/include2/asm/fixmap_32.h:157: undefined reference to `__this_fixmap_does_not_exist'
It appears to be coming from ioremap_32.c.
I can't see any particular change which would have caused this, but this
loop in early_ioremap_reset:
for (idx = FIX_BTMAP_BEGIN; idx <= FIX_BTMAP_END; idx--) {
addr = fix_to_virt(idx);
pte = early_ioremap_pte(addr);
if (!*pte & _PAGE_PRESENT) {
phys = *pte & PAGE_MASK;
set_fixmap(idx, phys);
}
}
seems incompatible with the test in fix_to_virt:
/*
* this branch gets completely eliminated after inlining,
* except when someone tries to use fixaddr indices in an
* illegal way. (such as mixing up address types or using
* out-of-range indices).
*
* If it doesn't get removed, the linker will complain
* loudly with a reasonably clear error message..
*/
if (idx >= __end_of_fixed_addresses)
__this_fixmap_does_not_exist();
While the compiler could prove that idx is within range here, it seems a
bit much to require it to.
J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists