About the WM6.1 issue, in the case newer gcc\binutils doesn't solve the
issue I am following another
track.
Actually the problem with WM6.1 comes from a modification done in the
kernel(nk.exe) and especially
in the loader. What you need to know is the fact Microsoft give access to
Windows CE sources through its platform
builder software and so we can have loader source code.
Unfortunately we don't have access to Windows Mobile sources and only
manufacturer can, so I need to disassemble
a WM6.1 nk.exe and compare with assembly and source code from WinCE 5.0.  

My problem is very simple, I am spending too much time on this task  and
preventing my girld friend
to make some shopping (I am kidding but it's almost true) ;-) 
So if you have time I would need some help, what I need is very simple :

I have two text files one called nk-HTC-SHADOW2-WM61.map with the following
format :

 Address         Publics by Value              Rva+Base     Lib:Object
 
 0001:0000001c       cinfAPISet                 0001101c     nk:objdisp.obj

 0001:00000030       APISetMethods              00011030     nk:objdisp.obj
 0001:00000048       cbMDStkAlign               00011048     nk:mdarm.obj
 0001:0000004c       NKCpuType                  0001104c     nk:mdarm.obj
 0001:00000054       IdStrings                  00011054     nk:mdarm.obj  

 0001:00000080       NKSignon                   00011080     nk:mdarm.obj
 ...
 0001:00023a8c       IsLoadingInExclusiveVA     00034a8c f   nk:loader.obj 

 0001:00023b50       InitStackSlotSetting       00034b50 f   nk:loader.obj
 0001:00023bdc       IsStackSlotSet             00034bdc f   nk:loader.obj
 0001:00023d38       FreeProcModList            00034d38 f   nk:loader.obj


and another one nk-HTC-SHADOW2-WM61.asm with the assembly
  
  8492901C: 53495041 movtpl      r5, #0x9041
  84929020: 00050602 andeq       r0, r5, r2, lsl #12
  84929024: 84929030 ldrhi       r9, [r2], #0x30
  84929028: 00000000 andeq       r0, r0, r0
  8492902C: 00000000 andeq       r0, r0, r0
  ...
  84937B80: 0A000007 beq         84937BA4
  84937B84: E31004FE tst         r0, #0xFE, 8
  84937B88: 03A03010 moveq       r3, #0x10
  84937B8C: 02433DDE subeq       r3, r3, #0xDE, 26
  84937B90: 05933000 ldreq       r3, [r3]
  84937B94: 0593300C ldreq       r3, [r3, #0xC]
  84937B98: 01833000 orreq       r3, r3, r0
  84937B9C: 058D3010 streq       r3, [sp, #0x10]
  84937BA0: 0A000000 beq         84937BA8
  84937BA4: E58D0010 str         r0, [sp, #0x10]
  84937BA8: E59F3040 ldr         r3, [pc, #0x40]
  84937BAC: E3A06C01 mov         r6, #1, 24
  ...

I would need a script(perl, python, ruby, sh,..) or a program that maps
address in ASM with
its corresponding name found in .map.
It would be called like that : mapasm nk-HTC-SHADOW2-WM61.asm
nk-HTC-SHADOW2-WM61.map and it would produce
a file with the functions name before assembly :

cinfAPISet:
  8492901C: 53495041 movtpl      r5, #0x9041
  84929020: 00050602 andeq       r0, r5, r2, lsl #12
  84929024: 84929030 ldrhi       r9, [r2], #0x30
  84929028: 00000000 andeq       r0, r0, r0
  8492902C: 00000000 andeq       r0, r0, r0
...
XXX:

To do so, the important value in nk-HTC-SHADOW2-WM61.map are the
2nd(publics By value) and 3d column(Rva+Base) :

  Address         Publics by Value              Rva+Base     Lib:Object

 0001:0000001c       cinfAPISet                 0001101c     nk:objdisp.obj

 0001:00000030       APISetMethods              00011030     nk:objdisp.obj

It means that cinfAPISet starts at virtual address 0001101c and 
symbol APISetMethods starts 00011030-0001101c = 0x14 after  cinfAPISet.

if we apply this to our asm we know that  0001101c corresponds to 8492901C,
so we can find the following symbol address 8492901C+0x14 = 84929030:

cinfAPISet:
  8492901C: 53495041 movtpl      r5, #0x9041
  ...
APISetMethods:
  84929030:
...

You will find everything here :
http://www.smartmobili.com/Downloads/cegcc-bug-wm61.zip


Thanks















------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel

Reply via email to