?
Solved

how to solves these errors? use borland c 3.1 .

Posted on 2004-11-01
8
Medium Priority
?
469 Views
Last Modified: 2008-03-04
compiling  my project don't appear any errors ,but linking my project appear tow errors.
 the errores :

linker Error:Fixup overflow at _TEXT:015E,targer = _OSStartHighRdy in module
UCOS_II.C
linker Error:Fixup overflow at _TEXT:015E,targer = _OSIntCtxSw in module
UCOS_II.C
0
Comment
Question by:lmphp
  • 2
  • 2
  • 2
  • +2
8 Comments
 
LVL 46

Assisted Solution

by:Kent Olsen
Kent Olsen earned 600 total points
ID: 12462919

Hi lmphp,

The Turbo C 3.x library doesn't contain these two routines.  They have names that suggest that they are communications related, so you're probably not linking from the correct library or the names have been misspelled.

Kent
0
 
LVL 16

Assisted Solution

by:PaulCaswell
PaulCaswell earned 300 total points
ID: 12463782
Take Kents advice first but if that doesn work (perhap these functions ARE there):

Fixup overflow usually means that a segment has broken a 64K limit. Try generating a .MAP file using linker parameters (I dont know the Borland ones but the Microsoft ones use /MAP). With this MAP file you may be able to see which segment needs splitting.

Paul
0
 
LVL 46

Accepted Solution

by:
Kent Olsen earned 600 total points
ID: 12463874

Paul's right.  Those modules exist, or you'd get "unsatisfied external" errors.

Generate a loadmap and check it.  The Text segment (code segment) is probably more than 64K.

Depending on a LOT of different things, you might be able to get around this by using the HUGE memory model, or performing any of several "tricks".

Basically, you've got a huge program that you want to run in a 16-bit world.  You might have to get very creative.

Kent
0
The eGuide to Automating Firewall Change Control

Today’s IT environment is constantly changing, which affects security policies and firewall rules. Discover tips to help you embrace this change through process improvement & identify areas where automation & actionable intelligence can enhance both security and business agility.

 
LVL 61

Assisted Solution

by:Julian Hansen
Julian Hansen earned 450 total points
ID: 12463988
I think Kdo is close on this one. From what I remember of my Borland days was the memory module you chose to compile under was very important when it came to linking. Selecting large or huge had certain ramifications when it came to declaring functions and variables - you need to specify the pointers as large or huge so they would work across segment boundaries.

I cannot remember enough to give you an exact solution but I would start by looking at your memory modle and work from there.
0
 
LVL 22

Assisted Solution

by:grg99
grg99 earned 150 total points
ID: 12466229
"Fixup overflow" is a hard problem to fix.   Sometimes it's due to a symbol being defined into the wrong segment.  Then when the linker tries to define the symbol, the value overflows the segment.  

The problem *might* be that somewhere "_OSStartHighRdy" and "_OSIntCtxSw" are defined as externals, either as "NEAR" externals or not explicitly as "FAR" externals.   Or they're not declared into their own "combine type", or accidentally declared into the main "CODE" combine type.
Then later on the linker tries to cram the code of those routines into the default CODE segment, and they won't fit.

The fix is to carefully read the instructions for using those routines.  The writers probably ran into the same problem, and if they're nice they documented how to get things to work, either with an explicit "FAR" somewhere, or a special linker directive to place the extra code in its own segment.


0
 
LVL 16

Assisted Solution

by:PaulCaswell
PaulCaswell earned 300 total points
ID: 12470819
I think your first step is as greg suggests. Look for any any linker directives in the suppliers documentation.

If this doesnt help, try building your package in the 'huge' model. This is the only one that allows for multiple code segments.

After that you're in the realm of massaging the build process.

The quickest answer, if it works, is to look for static data that may be being installed in your code segment. With the Microsoft compilers you can use /Gt32 (or less) to make static data larger than the specified value go into a data segment. I dont know if there is an equivalent in the borland system.

Next, try to find code that is unnecessary. You may have an excess of debug code. There are techniques for making debug completely disappear at release time. Use of one of those along with removing some rarely used code from the debug version can often provide a stop-gap solution.

Has anything we have suggested worked? Get back to us, even if its to say you've solved the problem.

Paul
0
 
LVL 1

Author Comment

by:lmphp
ID: 12491639
thanks all of you !
the problems was solved. when i used another compiler , these codes worked very well.
may be I should split those codes to all of you for thanks!
0
 
LVL 1

Author Comment

by:lmphp
ID: 12491649
thanks all of you !
the problems was solved. when i used another compiler , these codes worked very well.
may be I should spilt those codes to all of you for thanks!
0

Featured Post

Has Powershell sent you back into the Stone Age?

If managing Active Directory using Windows Powershell® is making you feel like you stepped back in time, you are not alone.  For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were small…
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.

593 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question