On 30 Aug 2002, at 15:45, Prof Abimbola Olowofoyeku wrote:
But the "-s" switch may have strayed into the flags for the RTS.
I still don't understand. The GCC manual says that "-s" will "Remove all symbol table and relocation information from the executable," and further that "These options come into play when the compiler links object files into an executable output file. They are meaningless if the compiler is not doing a link step."
But the RTS doesn't involve an executable. From the make file, it appears that RTS source files are compiled to object files, then the object files are merged into a library with "ar". No linking is involved, so "-s" should not be relevant here.
Not sure what the problem is, if it is not a CFLAGS issue.
I'm not sure either, but I note that the debug information appearing in the intermediate assembler output file defines all of the predefined Pascal types in terms of themselves, e.g.:
.stabs "String:t(0,17)=(0,17)",128,0,0,0 .stabs "Complex:t(0,18)=(0,18)",128,0,0,0 .stabs "Timestamp:t(0,19)=(0,19)",128,0,0,0 .stabs "Bindingtype:t(0,20)=(0,20)",128,0,0,0 .stabs "Integer:t(0,21)=(0,21)",128,0,0,0 .stabs "Real:t(0,22)=(0,22)",128,0,0,0 .stabs "Boolean:t(0,23)=(0,23)",128,0,0,0 .stabs "Char:t(0,24)=(0,24)",128,0,0,0 .stabs "Text:t(0,25)=(0,25)",128,0,0,0
The FSF document titled "The STABS Debug Format" notes that the C "void" type is likewise defined in terms of itself, as above. That would seem to explain why GDB shows the above types as void. I haven't been able to determine why they are generated that way in 20020510, however.
-- Dave Bryan