Keil Logo

BL51: WARNING 16 (UNCALLED SEGMENT, IGNORED FOR OVERLAY ...)


Information in this article applies to:

  • C51 All Versions

QUESTION

When I build my project, the linker generates a warning:

Warning L16: UNCALLED SEGMENT - IGNORED FOR OVERLAY PROCESS

with a segment name ?CO?modulename. I have a source file called modulename.c, but how can I tell which function is not being called?

ANSWER

The ?CO? that was prepended to the modulename indicates that the segment is a "CO"nstant data segment, not a code segment - thus, the warning is referring to any global constant data declared in MODULENAME.C. Likely culprits are arrays or tables declared with a "CODE" memory class, such as

code unsigned char bob[] = "This string is located in code space.";

The warning in this case is insignificant and can be ignored. However, the linker doesn't know that and generates this warning everytime that you build your project. The best solution to this problem is to insert a reference to this constant data somewhere in your code to make the linker happy. For example:

unsigned char x = bob[0];

eliminates the warning in this case.

MORE INFORMATION

SEE ALSO

FORUM THREADS

The following Discussion Forum threads may provide information related to this topic.

Last Reviewed: Friday, November 16, 2007


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.