On Tue, 13 Aug 2024 at 17:11, Luther Johnson <luther.johnson@makerlisp.com> wrote:
... of course it is serialized, there has to be some convention on
writing a tree out in some order to a file ... well anyway I'm sure they
can tell you what that product is and does.

Just wanted to follow up to provide what I've learned, in case it will be helpful for someone else at some point.  I contacted EDG and the impression I got is that they don't have readily available documentation for products so old.  They were able to provide me with the manual for the current C++ front end as a starting point for my investigation.  Most of what I've learned has come from a combination of intuition and knowledge from other utilities, combined with a healthy dose of brute force.  EDG were not able to provide any insight on their relationship with SGI specifically, which I suppose is not unexpected given the amount of time that has passed and the vagaries of corporate agreements, though they did indicate that in some areas EDG and SGI were competitors in that time frame (early '90s).  That's why I found SGI's inclusion of the tool so fascinating.  It's just an odd historical artifact, especially as it is not useful for reasonably complex code.

Here's the boring part, what I've been able to gather of the command options to /usr/lib/ecfe.  Any single character not listed is not a valid option:

-d[1-5] : debug, level, this can be extremely verbose even at low levels
-i(file): not sure, wants a file as input but isn't a single-file include
-n: don't actually do anything?  Doesn't produce an output file that I can see, no output to stdout/stderr
-r: "remarks?"  does create output file but is no different than without for hello.c
-s: forces signed chars
-u: forces unsigned chars
-v does what you would think, prints version info
-w does what you would think, suppresses warnings
-A: ANSI C extensions of some nature
-C: not sure, possibly C dialect related
-D(name): does what you would expect from a preprocessor, define
-E: output to stdout, like a preprocessor, doesn't actually apply any transformations?
-H: outputs what headers are being included
-I(path): does what you would expect from a preprocessor
-K: K&R, does not define __STDC__ which it looks like we are defining normally
-L(file): "raw output listing", interesting output format with first column meaning something
-M: makefile dependencies like you would expect, to stdout
-P: "preprocessing only", not sure how this is different from -E
-S(file): no idea, produces a blank file
-U: does what you would expect from a preprocessor, undef
-X: ???

-Henry