NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1

The following reply was made to PR port-i386/46884; it has been noted by GNATS.

From: matthew green <>
Subject: re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1
Date: Thu, 06 Sep 2012 05:42:00 +1000

 OK, so these show that:
 is the stack trace.  and this is the code and asm:
 struct cfdriver *
 config_cfdriver_lookup(const char *name)
         struct cfdriver *cd;
         LIST_FOREACH(cd, &allcfdrivers, cd_list) {
                 if (STREQ(cd->cd_name, name))
                         return cd;
         return NULL;
 Dump of assembler code for function config_cfdriver_lookup:
    0xc077fbf5 <+0>:     push   %ebp
    0xc077fbf6 <+1>:     mov    %esp,%ebp
    0xc077fbf8 <+3>:     push   %edi
    0xc077fbf9 <+4>:     push   %esi
    0xc077fbfa <+5>:     push   %ebx
    0xc077fbfb <+6>:     sub    $0x1c,%esp
    0xc077fbfe <+9>:     mov    0x8(%ebp),%edi
    0xc077fc01 <+12>:    mov    0xc0c3ecd0,%ebx
    0xc077fc07 <+18>:    test   %ebx,%ebx
    0xc077fc09 <+20>:    je     0xc077fc2d <config_cfdriver_lookup+56>
    0xc077fc0b <+22>:    movzbl (%edi),%esi
    0xc077fc0e <+25>:    mov    0x10(%ebx),%eax
    0xc077fc11 <+28>:    mov    %esi,%edx
 >> 0xc077fc13 <+30>:    cmp    %dl,(%eax)                                
    0xc077fc15 <+32>:    jne    0xc077fc27 <config_cfdriver_lookup+50>
    0xc077fc17 <+34>:    mov    %edi,0x4(%esp)
    0xc077fc1b <+38>:    mov    %eax,(%esp)
    0xc077fc1e <+41>:    call   0xc0906af0 <strcmp>
    0xc077fc23 <+46>:    test   %eax,%eax
    0xc077fc25 <+48>:    je     0xc077fc2d <config_cfdriver_lookup+56>
    0xc077fc27 <+50>:    mov    (%ebx),%ebx
    0xc077fc29 <+52>:    test   %ebx,%ebx
    0xc077fc2b <+54>:    jne    0xc077fc0e <config_cfdriver_lookup+25>
    0xc077fc2d <+56>:    mov    %ebx,%eax
    0xc077fc2f <+58>:    add    $0x1c,%esp
    0xc077fc32 <+61>:    pop    %ebx
    0xc077fc33 <+62>:    pop    %esi
    0xc077fc34 <+63>:    pop    %edi
    0xc077fc35 <+64>:    pop    %ebp
    0xc077fc36 <+65>:    ret
 >> marks the faulting instruction.  so something is wrong with 
 the allcfdrivers list here, i think.  robo, can you run these
 command from the db> prompt:
 db> p $eax
 db> x 0xc0bc2bfd
 the STREQ() macro checks that the first char matches first, before
 calling strcmp() directly (side comment: this seems like a strange
 optimisation for autoconf code.)
 i'm not sure what is happening here, but the allcfdrivers list
 appears broken some how.  or perhaps a cfdriver entry.  i don't
 know autoconf code very well.

Home | Main Index | Thread Index | Old Index