Hello ALL! I would ask the next question... according http://www.keil.com/support/docs/2379.htm one must manually remove the reference between func2 and the ?CO?EXAMPLE1 segment and add MAIN ! FUNC2 reference between MAIN and FUNC2. But from App129 if I define code void (*func_array[])() = { func2 }; with the storing table in code space, I will get the correct call tree. Now is a question: if I would not make this overlay command like sad in the http://www.keil.com/support/docs/2379.htm bl51 EXAMPLE1.OBJ IX OVERLAY & (?CO?EXAMPLE1 ~ FUNC2, MAIN ! FUNC2) would I have any problem? How I understood it's harmless because there are no actual recursive calls in the code, just a reference from one item in the constant segment to another. Could somebody please make it a little bit more clear for me? Thank you very much, A.
Additionally... For the LX51 linker/locater in the manual "Macro assembler and utilities" in the chapter "Pointer to a function in Arrays or tables" one can find a sentence: "The LX51 linker always ignores the references from constant segments to program code and requires only to add the function calls". I've tried it out and what I saw after I've analysed the map file... During overlay analysis it realy ignores these references, but does not remove it from the call tree, like it does SPEEDOVL in the BL51! It means, one still needs delete the references manually! With best regards, A.