CLIPPER 5.0 SUPPORT BULLETIN #7 BULLETIN REVISED: 22nd Jan, 1992 PRODUCT: Clipper 5.0 AFFECTED VERSIONS: 5.01 SUBJECT: RTLink Questions and Answers Q1: RTLink hangs occasionally with 386 Max (and other memory managers). Can I disable RTLink's use of expanded memory? A1: To turn off EMS useage, use SET RTLEMSOFF=1. To turn off XMS useage, use SET RTLXMSOFF=1. An alternative to slow swap files being created when you turn off EMS or XMS useage is to redirect the swap file to a RAMdisk. To do this, specify WORKFILE E: in the link file, or set the environmental variable TMP to E:. Q2: Does incremental linking work? A2: Yes, but it only works on Clipper code. Therefore, the effect is not very noticable unless you use a prelinked library so that you are not relinking the code in CLIPPER.LIB. Q3: What is the difference between the RTLink LIB and SEARCH statements? A3: Nothing. SEARCH is included for compatibility only Q4: What is the easiest way to create a prelinked library? How do I determine what should be REFERed and what should be EXCLUDEd? A4: The easiest way to create a (.PLL) file is to use the NOTABLEOFCONTENTS command to list all the symbols that are being linked in. You must also specify the VERBOSE command. Then use REFER to specify these symbols in your linker script file. REFER adds a symbol to the search request list, and EXCLUDE removes one. Q5: What is the current default stack size? A5: 1000 hex (4096 dec). If problems are encountered, try increasing the stack size to 5000 hex (20480 decimal). This can be done using the STACK command, as follows: STACK 5000 // 5000 hex STACK 20480. // Hex syntax, but period specifies decimal /STACK:20480 // 20480 decimal /STACK:5000. // Hex syntax, but period specifies hex Q6: What does the error "Cannot combine common segment " mean? A6: Common segments cannot have a symbol in an .EXE and another in a prelinked library. To correct the problem either EXCLUDE the symbol that is in the (.PLL) or INCLUDE the symbol that is in the .EXE. Either way, both symbols must be moved so that they are in the same place. Q7: Is there any overhead associated with static overlays? A7: Yes. When a static overlay is created, the Static Overlay Manager is included in the .EXE file. As this takes up about 10K, the overlay being created must save this much memory in order to be useful. ADDITIONAL NOTES 1. Automatic search requests (the ones the compiler puts in to automatically search all the Clipper libraries) are satisfied AFTER the search of any libraries listed in the LIB statement. For example: RTLINK FI MyObj LIB FuncLib FuncLib will be searched BEFORE Clipper, Extend, etc. If you want CLIPPER.LIB to be searched before FuncLib, use the following: RTLINK FI MyObj LIB Clipper, FuncLib 2. The NOTABLEOFCONTENTS command can be used to prevent unresolved symbols in cases where the table of contents is not complete for some reason. NoTableOfContents causes the linker to manually search each object and library file instead of using the table of contents to determine what symbols each file contains. Libraries created with Borland's TLIB utility have a table of contents that RTLink does not recognize, and should be linked using the NOTABLEOFCONTENTS command. 3. A prelinked library will satisfy a search request BEFORE any object or library files are searched. Therefore, a symbol in a (.PLL) will always take precedence over a symbol in the (.OBJ) or (.LIB). 4. The MODULE command, which forces a file to be overlayed, overrides the LIB command, which causes symbols from the file being linked to be put into the root 5. To allow static overlays to be called from a symbol in the same overlay area, the command RELOAD FAR must be used to allow the RETURN to take place properly. The default figure for the reload stack is 100–this allows you to make 100 calls into an overlay section before any RETURNs are recorded. Increasing this figure to 200 provides enough entries in the overlay entry table to handle the code and function calls in a standard C runtime library. END: CLIPPER 5.0 SUPPORT BULLETIN #7