9S12DG256 Getting a Link Error: L1907 Fixup overflow in _FSFLOAT, to F_FRLONGK type 3, at offset 0x8

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

9S12DG256 Getting a Link Error: L1907 Fixup overflow in _FSFLOAT, to F_FRLONGK type 3, at offset 0x8

Jump to solution
4,704 Views
darrin
Contributor II
9S12DG256 Getting a Link Error: L1907 Fixup overflow in _FSFLOAT, to F_FRLONGK type 3, at offset 0x8  linker fault.
 
My code was compling and working, then I added a new group of 4 functions. When I enable all of them during compile/linking I get this fault.
 
What is this fault?
 

Message Edited by darrin on 2007-04-0408:52 PM

Labels (1)
Tags (1)
0 Kudos
Reply
1 Solution
810 Views
darrin
Contributor II
I put NON_BANKED and INTERRUPT_ROUTINES into just 1 page and that appears to work.
I just hope I dont run out of room.
 
What is, and where can I get the file  rtshc12.c ?
 
Thanks

View solution in original post

0 Kudos
Reply
4 Replies
810 Views
CompilerGuru
NXP Employee
NXP Employee
I asked google and found an answer I wrote some time ago, I guess you have the same issue as the OP of that thread. Daniel
The problem is that _LDIVS is calling NEG_P with a 8 bit relative offset:1233: void NEAR _LDIVS (void) { /* a = a / b signed */...000a 0700 BSR _NEG_P.. This works fine as long as you do allocate the NON_BANKED section into one single placement.However for your app it looks like all the others would just fill up the FLASH_PAGE4000 segment sothat _NEG_P does still fit into it and _LDIVS is allocated in FLASH_PAGEC000.So now what you can do about it:1. Change the allocation order in your prm file.The problem with this solution is that it does not really resolve the problem but instead it just tries to avoid it.2. Build rtshc12.c with the option -OnB=b.Either rebuild the whole library (lib\hc12c\hc12_lib.mcp) or add rtshc12.c to your project andadd the option in your project. For the second one, make sure rtshc12.c.o is before the ansi library in your link order.3. Distribute the NON_BANKED section manually to either FLASH_PAGE4000 or FLASH_PAGEC000, but not to both.
811 Views
darrin
Contributor II
I put NON_BANKED and INTERRUPT_ROUTINES into just 1 page and that appears to work.
I just hope I dont run out of room.
 
What is, and where can I get the file  rtshc12.c ?
 
Thanks
0 Kudos
Reply
810 Views
CompilerGuru
NXP Employee
NXP Employee
You can fill up the remaining of the segment used for NON_BANKED later on with other content, just place the NON_BANKED mapping first.

If INTERRUPT_ROUTINES is your own section which is compiled with -OnB=b, then you can place it to different segments.
As summary, if you place any section compiled with the near calling convention into multiple segments, then add the compiler option -OnB=b, the NON_BANKED thing is needed if you do not recompile rtshc12.c (or the whole ansi lib) with -OnB=b.

rtshc12.c is located in lib\hc12c\src.

Daniel

0 Kudos
Reply
810 Views
CompilerGuru
NXP Employee
NXP Employee
You can fill up the remaining of the segment used for NON_BANKED later on with other content, just place the NON_BANKED mapping first. If INTERRUPT_ROUTINES is your own section which is compiled with -OnB=b, then you can place it to different segments. As summary, if you place any section compiled with the near calling convention into multiple segments, then add the compiler option -OnB=b, the NON_BANKED thing is needed if you do not recompile rtshc12.c (or the whole ansi lib) with -OnB=b. rtshc12.c is located in lib\hc12c\src. Daniel
0 Kudos
Reply