We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I know you have many discussions about warning L16 but I couldn't find one that would match with my problem below. I got a warning L16: uncalled segment - SEGMENT: ?PR?API_module2?MODULE2 which my app had nothing to do with. See code below:
in test.c: ---> app code built with lib1.lib main { api_module1(); } in module1.c: ----> part of lib1.lib volatile char var1 api_module1( void ) { var1 = ... } in module2.c: ----> part of lib1.lib extern volatile char var1 api_module2 ( void ) { if (var1 == ...) }
I created a simple project and linked it and I do not get the same problem you do. Here is the linker MAP file.
BL51 BANKED LINKER/LOCATER V5.03 BL51 BANKED LINKER/LOCATER V5.03, INVOKED BY: C:\KEIL\C51\BIN\BL51.EXE main.obj, .\libprj.LIB TO codeprj RAMSIZE (256) MEMORY MODEL: SMALL INPUT MODULES INCLUDED: main.obj (MAIN) .\libprj.LIB (FUNC1) C:\KEIL\C51\LIB\C51S.LIB (?C_STARTUP) LINK MAP OF MODULE: codeprj (MAIN) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0001H UNIT ?DT?FUNC1 IDATA 0009H 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE CODE 0003H 000CH UNIT ?C_C51STARTUP CODE 000FH 0005H UNIT ?PR?MAIN?MAIN CODE 0014H 0004H UNIT ?PR?FUNC1?FUNC1 OVERLAY MAP OF MODULE: codeprj (MAIN) SEGMENT +--> CALLED SEGMENT --------------------- ?C_C51STARTUP +--> ?PR?MAIN?MAIN ?PR?MAIN?MAIN +--> ?PR?FUNC1?FUNC1 SYMBOL TABLE OF MODULE: codeprj (MAIN) VALUE TYPE NAME ---------------------------------- ------- MODULE MAIN C:0000H SYMBOL _ICE_DUMMY_ C:000FH PUBLIC main ------- PROC MAIN C:000FH LINE# 3 C:000FH LINE# 4 C:000FH LINE# 5 C:0012H LINE# 7 ------- ENDPROC MAIN ------- ENDMOD MAIN ------- MODULE FUNC1 C:0000H SYMBOL _ICE_DUMMY_ D:0008H PUBLIC libvar C:0014H PUBLIC func1 ------- PROC FUNC1 C:0014H LINE# 3 C:0014H LINE# 4 C:0014H LINE# 5 C:0017H LINE# 6 ------- ENDPROC FUNC1 ------- ENDMOD FUNC1 Program Size: data=10.0 xdata=0 code=24 LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)