<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ERROR L121: IMPROPER FIXUP SEGMENT: ABSOLUTE OFFSET:  0023H</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/33243/error-l121-improper-fixup-segment-absolute-offset-0023h</link><description> I got this error when linking with uVision version 1.24 (using &amp;lt;2Kb memory model): 
 ERROR L121: IMPROPER FIXUP 
 MODULE: SIO.obj (SIO) 
 SEGMENT: ABSOLUTE 
 OFFSET: 0023H 
 
And I fixed the error by disabling &amp;quot;Enable variable overlaying&amp;quot; option in </description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: ERROR L121: IMPROPER FIXUP SEGMENT: ABSOLUTE OFFSET:  0023H</title><link>https://community.arm.com/thread/39917?ContentTypeID=1</link><pubDate>Thu, 03 Apr 2003 08:44:37 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:9c238ad1-b244-4cd1-affe-98f77928d0a1</guid><dc:creator>Jon Ward</dc:creator><description>&lt;p&gt;You may actually want to fix the problem than simply rely on a side-effect of a compile switch.&lt;br /&gt;
&lt;br /&gt;
The error message you receive:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
ERROR L121: IMPROPER FIXUP
MODULE: SIO.obj (SIO)
SEGMENT: ABSOLUTE
OFFSET: 0023H&lt;/pre&gt;
&lt;br /&gt;
Tells me that this is either an assembler routine or that it is the vector for an interrupt service routine (because the segment is ABSOLUTE).&lt;br /&gt;
&lt;br /&gt;
The error improper fixup indicates that the target address (for an ajmp) or for a relative offset is too far away.&lt;br /&gt;
&lt;br /&gt;
The offset of 0023H tells me that the problem happens at the interrupt vector location.  The only thing that would cause this problem there is an AJMP to an ISR that is too far away.  C51 inserts AJMP instructions in the interrupt vector only in ROM(SMALL).  C51 inserts LJMPs in ROM(COMPACT) and ROM(LARGE).&lt;br /&gt;
&lt;br /&gt;
So, if you wrote in assembly, I&amp;#39;d change the AJMP at addtess 23h to an LJMP.&lt;br /&gt;
&lt;br /&gt;
It you are using C, this problem should not occur.&lt;br /&gt;
&lt;br /&gt;
If none of my advice helps, you may actually want to contact technical support for assistance with this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Jon&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERROR L121: IMPROPER FIXUP SEGMENT: ABSOLUTE OFFSET:  0023H</title><link>https://community.arm.com/thread/55112?ContentTypeID=1</link><pubDate>Wed, 02 Apr 2003 16:30:18 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:0dd5e65e-2c21-4d5c-9be8-b6616f874680</guid><dc:creator>Phil Ouellette</dc:creator><description>&lt;p&gt;The improper fixup error occurs because his code is using more than 256 bytes of data.  Overlaying data space reduces data space usage and corrects the bug.&lt;br /&gt;
&lt;br /&gt;
I have seen this error pop up when a function is no longer called but is still in the code.  The compiler creates a pointer in data space to the uncalled function, I think to support bank switching.&lt;br /&gt;
&lt;br /&gt;
If you are using all or most of your data (or idata) space, then don&amp;#39;t allow any uncalled functions to remain in your code.  This happens to me mostly while debugging code when I temporarily comment out the only place a function is being call from.&lt;br /&gt;
&lt;br /&gt;
Phil&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERROR L121: IMPROPER FIXUP SEGMENT: ABSOLUTE OFFSET:  0023H</title><link>https://community.arm.com/thread/39918?ContentTypeID=1</link><pubDate>Mon, 10 Mar 2003 06:12:03 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:70395f4f-33cf-4aa3-9804-6fca5ed2e6b4</guid><dc:creator>John Donaldson</dc:creator><description>&lt;p&gt;I don&amp;#39;t think this option exists on its own any more. If you select optimisation level 2 or higher in the &amp;#39;C51&amp;#39; tab of the &amp;#39;Options for target&amp;#39; dialog then DATA space overlaying will be enabled.&lt;br /&gt;
&lt;br /&gt;
I don&amp;#39;t know why this should fix your &amp;#39;Improper fixup&amp;#39; error though.&lt;br /&gt;
&lt;br /&gt;
Stefan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>