On Wed, 2006-08-30 at 07:45, Kanwal Preet Singh CHANANA wrote: > Hi Richard, > > I have tried the wayout suggested by you but problem still remains. > > I used the following file: > Sym.s: > .global MaskInterrupt > .type MaskInterrupt %function > .equ MaskInterrupt, 0x00c008f8 > No, if it's a Thumb function you need to set the bottom bit in the address; so you need .equ MaskInterrupt, 0x00c008f9 > Note: MaskInterrupt is Thumb function located at ROM address(0x00c008f8). > > When my application calls this function then there is no Interworking stub > called. Also there is no __MaskInterrupt_from_arm function present in my > application Map file. That's because you didn't set the bottom bit... R. > Kindly check the above file & suggest a wayout. > > Regards, > Kanwal > > > -----Original Message----- > From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] On > Behalf Of Kanwal Preet Singh CHANANA > Sent: Wednesday, August 30, 2006 9:36 AM > To: 'Richard Earnshaw' > Cc: vinayakbhalkar@xxxxxxxx; gcc-help@xxxxxxxxxxx; > crossgcc@xxxxxxxxxxxxxxxxxx > Subject: RE: FW: GCC ARM Cross Linker Problem > > > Hi Richard, > > Thanks for valuable suggestion. I will try the following to certify if Image > is running correctly on target. > > Another thing, the symbols I am linking are in ROM. ROM code is compiled > with ADSv1.2 & "symbols.o" was generated using "-symdefs symbols.o" option > for armlink. Now when I link my Flash (project) code with "symbols.o" using > ADSv1.2 or RVDSv2.2,linker generates image with no error but if I use > GCC-ARM ,linker gives a error " symbols.o: File format not recognised". This > occurs due to EABI differences between ADS & GCC-ARM. > > As per your suggestion, one "sym.s" will be included in project code. We > want to use the same source code for ADS,RVDS & GCC-ARM(few changes in *.s > files are done using perl script). This will make sources to be generic & > compiled with above mentioned too chains. > > Can I change "symbols.o" in a way so that GCC-ARM linker recognises it ? In > this way I don’t have to add "sym.s" file. > > Regards, > Kanwal > > -----Original Message----- > From: Richard Earnshaw [mailto:Richard.Earnshaw@xxxxxxx] > Sent: Tuesday, August 29, 2006 7:54 PM > To: Kanwal Preet Singh CHANANA > Cc: vinayakbhalkar@xxxxxxxx; gcc-help@xxxxxxxxxxx; > crossgcc@xxxxxxxxxxxxxxxxxx > Subject: RE: FW: GCC ARM Cross Linker Problem > > > The following works fine for me: > > sym.s: > .global tfunc > .type tfunc %function > .equ tfunc, 0x1235 > main.c: > extern void tfunc(void); > int main() > { > tfunc(); > return 0; > } > > arm-elf-as sym.s -o sym.o > arm-elf-gcc main.c sym.o -o main.exe > arm-elf-objdump -xd main.exe > ... > 00008224 <main>: > 8224: e1a0c00d mov ip, sp > 8228: e92dd800 stmdb sp!, {fp, ip, lr, pc} > 822c: e24cb004 sub fp, ip, #4 ; 0x4 > 8230: eb0007f8 bl a218 <__tfunc_from_arm> > 8234: e3a03000 mov r3, #0 ; 0x0 > 8238: e1a00003 mov r0, r3 > 823c: e89da800 ldmia sp, {fp, sp, pc} > ... > 0000a218 <__tfunc_from_arm>: > a218: e59fc000 ldr ip, [pc, #0] ; a220 > <__tfunc_from_arm > +0x8> > a21c: e12fff1c bx ip > a220: 00001235 andeq r1, r0, r5, lsr r2 > ... > > Notice that __tfunc_from_arm loads the value 0x1235 into a register and > issues a bx instruction, which will then correctly switch to Thumb state. > > R. > > On Tue, 2006-08-29 at 14:47, Kanwal Preet Singh CHANANA wrote: > > Hi Vinayak, > > Kindly refer to below mail. I am already using this following method > > but it is not working. > > > > Regards, > > Kanwal > > > > -----Original Message----- > > From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] > > On Behalf Of Vinayak Bhalkar > > Sent: Tuesday, August 29, 2006 5:42 PM > > To: kanwalpreet.singh@xxxxxx > > Cc: gcc-help@xxxxxxxxxxx; crossgcc@xxxxxxxxxxxxxxxxxx > > Subject: Re: FW: GCC ARM Cross Linker Problem > > > > > > > > Try following- > > > > MaskInterrupt = 0x00c008f9; > > > > Regards, > > vinayak > > > > --- kanwalpreet.singh@xxxxxx wrote: > > > > From: Kanwal Preet Singh CHANANA <kanwalpreet.singh@xxxxxx> > > To: <gcc-help@xxxxxxxxxxx>, <crossgcc@xxxxxxxxxxxxxxxxxx> > > Subject: FW: GCC ARM Cross Linker Problem > > Date: Tue, 29 Aug 2006 14:59:35 +0530 > > > > Hi all, > > > > I am able to compile & Link my source files with a workaround > > mentioned below: > > > > The absolute symbols defined in symbols.o are > > > > 0x000002a8 D CurTask > > 0x00c008f8 T MaskInterrupt > > Where Curtask is data located in RoM & MaskInterrupt is function in > > Thumb Mode. > > > > I used following definations in Linker Script > > > > pCurTask = 0x000002a8; > > MaskInterrupt = 0x00c008f8; > > > > With this I am able to link & built Image.axf file. But when running > > on target,the image crashes at a point when it jumps to > > MaskInterrupt(shown above) . The reason is that the Linker assumes > > MaskInterrupt function to be in ARM mode.When it jumps there, it > > expects 4 byte ARM instruction but the code at this location has 2 > > Byte Thumb Instruction. > > > > The Thumb Interwork option is enabled in Build options. > > > > Can anyone suggest me a method to Link above symbols in a way so that > > GCC-ARMv4.0.3 knows whether the symbols is Data or Thumb Function or > > ARM function? If there is a way, then Image will run correctly on > > Target. Also if anyone needs any help on Project porting from ADS to > > GCC-ARM,then I can help him out. > > > > Please suggest a wayout to fix the above problem. > > Regards, > > Kanwal > > > > > > > > > > -----Original Message----- > > From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] > > On Behalf Of Kanwal Preet Singh CHANANA > > Sent: Monday, August 21, 2006 3:48 PM > > To: gcc-help@xxxxxxxxxxx > > Subject: GCC ARM Cross Linker Problem > > > > > > Hi all, > > > > I am porting my project from ADS from ARM to GCC ARM Tool chain. I am > > able to compile my source files but fail to link. I have a symbols file > (symbols.o) with absolute symbols addresses in format > > Symboladdress SymbolType Symbolname e.g > > > > 0x000002a8 D CurTask > > 0x00c008f8 T MaskInterrupt > > > > These symbols are located in ROM( code built with ADS) & project image > > will be in flash. When I use this same file during build with ARM ADS, > > it works fine but with GCC ARM tool chain,I get following error > > message > > > > "./symbols.o: file not recognized: File format not recognized" > > > > Can anybody please tell me the solution to this error? Can I link > > objects built with ADS with GCC ARM ? > > > > Regards, > > Kanwal > > > > > > > > _____________________________________________________________ > > Get your free web-based e-mail account from http://www.Math.net Your > > online tourguide of Mathematics, with books, links, news, message > > boards, and much more! > > > > > > -- > > For unsubscribe information see http://sourceware.org/lists.html#faq