On Mon, 2006-03-06 14:05:38, Dave Anderson wrote:
>> #define BUG() \
>> __asm__ __volatile__( "ud2\n" \
>> "\t.word %c0\n" \
>> "\t.long %c1\n" \
>> : : "i" (__LINE__), "i"
(__FILE__))
>>
> Ideally it should be handled in the gdb code, which is what's screwing it up.
Actually, I can't really blame it on gdb either. How can gdb be expected
to recognize this kind of asm-generated code sequence?
Exactly. It can't.
This is a huge annoyance for myself since I regularly find myself looking
at the disassembly of functions with BUG() calls. I've talked about this
with my team and members of the IBM Linux Technology Center. Everyone
agrees that the current mechanism is a neat hack but causes more pain
than it's worth with respect to the space saved. Unfortunately, no one
has been willing to take up this battle on LKML.
So I've simply thrown up my hands in defeat and resort to hacking the
source to replace the __LINE__ and __FILE__ data with noops then building
a custom kernel to use for debugging.
--
Kurtis D. Rader, Level 3 Linux Support
ABC Service Center, Linux Change Team
T/L 775-3714, DID +1 503-578-3714