knudsen@ihwpt.UUCP (mike knudsen) (03/17/86)
Has anyone using Microware's Level I 6809 C Compiler ever seen anything like this? The Linker reads the .r files and the Library, then prints out a dozen lines of the form: Missing Symbol Ref'ed in In file _11 mused_c mused.r _52 mused_c mused.r _123 mused_c mused.r etc. Now, mused.c is the file containing only my main() program and nothing else (the word "mused" doesn't even appear inside it). I've seen lots of legitimate linker errors, when a function or external variable couldn't be found (these were listed by name and easily recognized), but never any _<number> symbols. I know the intermediate Assembler code uses labels in the underscore-number format. Some theories: (1) These are calls to mult, divide, etc. routines and the library is braindamaged and doesn't supply them. (2) These are external constants made up by the compiler that somehow got lost. (3) One of the compiler phases screwed up and put out a bogus intermediate file. Sometimes the phases do mis-load from CMDS/ and when that happens they either crash or sometimes write bad output that the next phase *usually* chokes on. Funny, OS9 isn't supposed to load disk files with bad CRCs -- the bytes must get hosed during or after being written to RAM. I'd appreciate hearing from anyone who has seen this style of error and can save me from re-inventing the wheel. I plan to re-compile the main program (mused.c) and try again. It had been only slightly modified since the last good compile/link. Also, is "ident" supposed to work on C libraries? It always gives me "incorrect header" error. Is that normal? Ident works fine on "os9boot". Thanks, mike k
brad@laidbak.UUCP (Bradley Bosch) (03/18/86)
I decided to post this since it seems like one of the nastier problems one can have with the Microware compiler. In article <765@ihwpt.UUCP> knudsen@ihwpt.UUCP (mike knudsen) writes: >Has anyone using Microware's Level I 6809 C Compiler >ever seen anything like this? >The Linker reads the .r files and the Library, >then prints out a dozen lines of the form: > >Missing Symbol Ref'ed in In file >_11 mused_c mused.r >_52 mused_c mused.r >_123 mused_c mused.r > You probably ran out of disk space for the assembly output file The second pass seems not to recognize disk errors. This causes the output file to be truncated, causing references to undefined symbols. I have seen this before and increasing the free space on the disk always solved the problem. > ... >Some theories: > ... >(2) These are external constants made up by the compiler >that somehow got lost. Thats right, these are labels (constants) used in the assembly stage. > ... >Also, is "ident" supposed to work on C libraries? Use the rdump command which is supplied in source form with the C disk. Ident only works on executable modules, not relocatable library files. > ... >Thanks, mike k Brad Bosch ...ihnp4!laidbak!brad
emjej@uokvax.UUCP (03/20/86)
/* Written 12:29 pm Mar 17, 1986 by knudsen@ihwpt.UUCP in net.micro.6809 */ Also, is "ident" supposed to work on C libraries? It always gives me "incorrect header" error. Is that normal? Ident works fine on "os9boot". /* End of text from net.micro.6809 */ C libraries are concatenations of .r files, which are NOT OS-9 modules, even though the compiler docs misnames them "modules." (WOOF! on the doc writer for that.) You can see what's in there with the "rdump" utility that should come with the compiler. The reason .r files aren't modules is that they are designed to work with a woofish, old-fashioned static linker of a kind that a language that TRULY uses OS-9's advantages over Unix would not use. Someone needs to fix that, preferably by doing a Modula-2 or Ada or Russell compiler RIGHT for OS-9. James Jones
latham@bsdpkh.UUCP (Ken Latham) (03/23/86)
Sender: In article <765@ihwpt.UUCP> knudsen@ihwpt.UUCP writes: >Has anyone using Microware's Level I 6809 C Compiler >ever seen anything like this? >The Linker reads the .r files and the Library, >then prints out a dozen lines of the form: > >Missing Symbol Ref'ed in In file >_11 mused_c mused.r >_52 mused_c mused.r >_123 mused_c mused.r > >(3) One of the compiler phases screwed up and put out >a bogus intermediate file. > Bingo! Assembly language output ( if you check it ) is truncated! So the resolution to some of its own labels are missing! Yours doesn't look too long, seems like you JUST didn't quite make it. Occurs when the compiler decides theres not enough room in memory to finish the job ( Unresolved label list gets too big I guess ) ...... geeesh I wish it would TELL YOU! I had OS9 on a 64K CoCo that had to be loaded stupid ( NOTHING ADDED ) in order to have enough room to compile some ( well ... MOST ) things. I finally wrote a little shell to Unlink all the little utilities I loaded in directly after boot ( I never put any thing in the boot itself ). And then do the compile and load them back in again.... is that what you call swapping ? :-) . Ken Latham