lkml.org 
[lkml]   [2002]   [Feb]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] BUG preserve registers


    On Sat, 9 Feb 2002, Hugh Dickins wrote:
    >
    > It's frustrating that when Verbose BUG() reporting is configured,
    > info gets lost: fix for i386 below. This is your area, Andrew:
    > please confirm to Marcelo if you'd like him to apply this.
    >
    > Example: in hpa's recent prune_dcache crash, %eax showed the length of
    > the kernel BUG printk, when we'd have liked to see the invalid d_count:
    > off-by-one or obviously corrupted?

    Don't do it this way.

    Instead, put the string printout in the _trap_ handler, and make the
    format of BUG() be something like this:

    #ifdef CONFIG_DEBUG_BUGVERBOSE
    #define BUGSTR "\"" __FILE__ "\""
    #else
    #define BUGSTR ""
    #endif

    #define BUG() \
    asm("ud2\n\t.word __LINE__\n\t.asciiz " BUGSTR)

    and then have the trap handler print out the pretty-printed version.

    The advantage of this is:
    - much smaller footprint even when messages are enabled.
    - no register corruption
    - easily extendible (ie we can put a "bug code" etc, and have the trap
    handler do different things depending on the code)

    Ok?

    Linus

    -
    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/

    \
     
     \ /
      Last update: 2005-03-22 13:24    [W:7.511 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site