On Fri, 29 Sep 2006 17:29:04 -0400 (EDT)
Alan Stern <[EMAIL PROTECTED]> wrote:

> > But we have:
> > 
> >   500894:       74 3f                   je     5008d5 <_end+0x2d>
> >   500896:       0f b6 46 20             movzbl 0x20(%rsi),%eax
> >   50089a:       8b 4e 20                mov    0x20(%rsi),%ecx
> >   50089d:       ba                      .byte 0xba
> >   50089e:       fe                      (bad)
> >   50089f:       ff                      .byte 0xff
> > 
> > 
> > So "c7 04 24" turned into
> >    "ba fe ff"
> 
> What do you mean by "we have"?  Where did your two disassembly listings 
> come from?  The values in the oops message above don't match either of 
> your listings, at least not exactly.

Beacuse I'm an idiot :)


The first disassembed code comes from a 2.6.18 compiled with gcc 3.3.6
(but different config than Arkadiusz).


The second (and wrong one) comes from:

--- 1.c ---
char str[]={0x5c,0x89,0x57,0x2c,0x8b,0x40,0x44,0xc7,0x47,0x40,0x00,0x00,0x
00,0x00,0x89,0x47,0x3c,0x8b,0x45,0x00,0x8b,0x55,0x04,0x89,0x02,0x89,0x50,0
x04,0x89,0x6d,0x00,0x8d,0x47,0x18,0x89,0x6d,0x04,0x39,0x47,0x18,0x75,0x4b,
0x0f,0xb6,0x47,0x50,0xa8,0x02,0x88,0x44,0x24,0x08,0x74,0x3f,0x0f,0xb6,0x46
,0x20,0x8b,0x4e,0x20,0xba,0xfe,0xff};
void main(void){}
--------------

disassembled with "objdump -D".

The problem was that I'm on AMD64 and I've forgot to add "-m32" at gcc
options to produce a i386 executable ;)


This one should be correct:

00000000 <str>:
   0:   5c                      pop    %esp
   1:   89 57 2c                mov    %edx,0x2c(%edi)
   4:   8b 40 44                mov    0x44(%eax),%eax
   7:   c7 47 40 00 00 00 00    movl   $0x0,0x40(%edi)
   e:   89 47 3c                mov    %eax,0x3c(%edi)
  11:   8b 45 00                mov    0x0(%ebp),%eax
  14:   8b 55 04                mov    0x4(%ebp),%edx
  17:   89 02                   mov    %eax,(%edx)
  19:   89 50 04                mov    %edx,0x4(%eax)
  1c:   89 6d 00                mov    %ebp,0x0(%ebp)
  1f:   8d 47 18                lea    0x18(%edi),%eax
  22:   89 6d 04                mov    %ebp,0x4(%ebp)
  25:   39 47 18                cmp    %eax,0x18(%edi)
  28:   75 4b                   jne    75 <main+0x75>
  2a:   0f b6 47 50             movzbl 0x50(%edi),%eax
  2e:   a8 02                   test   $0x2,%al
  30:   88 44 24 08             mov    %al,0x8(%esp)
  34:   74 3f                   je     75 <main+0x75>
  36:   0f b6 46 20             movzbl 0x20(%esi),%eax   <----- crash!
  3a:   8b 4e 20                mov    0x20(%esi),%ecx
  3d:   ba                      .byte 0xba
  3e:   fe                      (bad)
  3f:   ff                      .byte 0xff


So now the problem is, as you pointed out, to discover why EIP is
pointing to "b6" intead of "0f".

-- 
        Paolo Ornati
        Linux 2.6.18 on x86_64

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to