+++ /dev/null
--------------------------------------------------------------\r
- __THE EiC BINARY DISTRIBUTION__\r
-\r
- by\r
-\r
- Ed Breen\r
--------------------------------------------------------------\r
-Contents:\r
-\r
- COPYRIGHT\r
- BINARY DISTRIBUTIONS\r
- INSTALLATION NOTES\r
- BRIEF INTRODUCTION\r
- REPORTING BUGS \r
- MAJOR KNOWN BUGS\r
- APPENDIX\r
- BUILDING THE BINARY DISTRIBUTION\r
-\r
--------------------------------------------------------------\r
-COPYRIGHT\r
-\r
- Please refer to the LICENCE document provided\r
-with this distribution. To proceed beyond this point,\r
-is to agree with the licence agreement.\r
-\r
--------------------------------------------------------------\r
-BUGS OR QUESTIONS CAN BE DIRECTED TO:\r
-\r
-A Bug Report form is located at:\r
- \r
- http://pobox.com/~eic\r
-\r
-General questions to:\r
-\r
- Ed.Breen@Altavista.net\r
-\r
--------------------------------------------------------------\r
-BINARY DISTRIBUTIONS\r
-\r
-The following PLATFORM distributions are available:\r
-\r
-\r
-EiC has been ported to: Linux, Solaris, Sun OS, DEC OSF, SGI IRIX,\r
- HPUX, Solaris/i386, and NetBSD\r
-\r
-There also exist an alien port of EiC to the PowerPC 403 by\r
-Larry Battraw.\r
- \r
-Its source code is available as well as pre-compiled binaries for the\r
-following platforms:\r
-\r
- Releases version VERSION\r
-\r
- EiC_LINUX_VERSION.tgz i486 Linux (elf)\r
- EiC_SOLARIS_VERSION.tgz SUN SPARC SOLARIS 2.x\r
- EiC_SUNOS_VERSION.tgz SUN OS 4.1.x\r
- EiC_OSF1_VERSION.tgz DEC ALPHA OSF 3.x and 4.x\r
- EiC_IRIX_VERSION.tgz SGI IRIX 6.x\r
-\r
-\r
-Each distribution contains a binary executable of eicc, documentation,\r
-licence, and EiC's set of include files.\r
-\r
-Hard copies of the documentation, if desired, can be obtained on\r
-request.\r
-\r
---------------------------------------------------------------\r
-INSTALLATION NOTES\r
-\r
- IMPORTANT:\r
- \r
- If EiC is not installed in /usr/local/EiC, or /usr/EiC, \r
- you will need to explicity set were EiC's home directory\r
- is as follows:\r
- To be able to run EiC properly you will now need to set the \r
- environmental variable HOMEofEiC.\r
-\r
- The HOMEofEiC environmental variable must be set to\r
- point to the directory that contains the EiC include \r
- directory. For example: $HOME/EiC\r
-\r
- In bash, ksh or zsh use:\r
- $ export HOMEofEiC=...\r
- In tcsh enter:\r
- $ setenv HOMEofEiC ...\r
- where the dots represent the name of the EiC directory\r
-\r
- You may wish to include the command in one\r
- of your startup scripts such as the .cshrc or the\r
- .bashrc file.\r
-\r
- Also the HOMEofEiC environmental variable overrides automatic\r
- detection of directories /usr/local/EiC and /usr/EiC. Inturn\r
- /usr/local/EiC overrides /usr/EiC\r
-\r
-To install a BINARY distribution, first untar the appropriate PLATFORM\r
-distribution:\r
-\r
- if using GNU tar\r
- % tar xvzf EiC_PLATFORM_3_7_2.tgz\r
-\r
- else\r
- % gunzip EiC_PLATFORM_3_7_2.tgz\r
- % tar xvf EiC_PLATFORM_3_7_2.tar\r
-\r
-Now change to the directory EiC's directory:\r
-\r
- % cd EiC\r
-\r
-EiC is configured so that its home directory is the EiC directory that\r
-it un-tarred into. It uses this directory to hold its implementation\r
-files and directories. However, during the installation procedure, the\r
-install procedure will setup a link used for launching eicc, in the\r
-directory specified by the macro definition INSTALL_DIR in the file\r
-EiC/Makefile. By default, this directory will be ${HOME}/bin -- but\r
-this is easily changed. Before installing EiC, first check what the\r
-installation procedure will do, from the EiC directory enter (see the\r
-Makefile for more details):\r
-\r
- % make -n installBinary\r
-\r
-If you wish to change the install directory; for example, say to\r
-/usr/local/bin, then enter:\r
-\r
- % make INSTALL_DIR=/usr/local/bin installBinary\r
-\r
-However, if, as by default, you are installing a local version in your\r
-home bin directory, then just enter:\r
-\r
- % make installBinary\r
-\r
-Now set HOMEofEiC (the example given is for tsch):\r
-\r
- % setenv HOMEofEiC $PWD\r
- % rehash\r
-\r
-or\r
- % export HOMEofEiC=$PWD\r
-\r
-Now run eic and when you want to exit just enter :exit\r
-\r
- % eic\r
-\r
--------------------------------------------------------------------------\r
-BRIEF INTRODUCTION\r
-\r
-To run EiC, enter:\r
-\r
- % eic\r
-\r
-In interactive mode, the user enters commands, or immediate\r
-statements, at the interpreter prompt EiC #>; for example:\r
-\r
-EiC 1> #include <string.h>\r
- (void)\r
-EiC 2> #define PI 3.14159\r
- (void)\r
-EiC 3> PI * strlen("Hello, World!\n"); \r
- 43.98226\r
-\r
-The function `strlen' is a standard C function, which returns the\r
-number of characters in the argument string, which happens to be in\r
-this instance: "Hello, World!\n"; for example:\r
-\r
-EiC 4> strlen("Hello, World!\n");\r
- 14\r
-\r
-To exit EiC, simply enter:\r
-\r
-EiC 5> :exit\r
-\r
-Note the colon:\r
-\r
-While EiC is an interactive C interpreter it can also be run in batch\r
-mode:\r
-\r
- % eic foo.c\r
-\r
-For Futher information refer to EiC's documentation `EiC.ps'\r
-\r
-----------------------------------------------------------------\r
-REPORTING BUGS \r
-\r
-If you have need and wish to report a bug, use the following template,\r
-follow the example given below and email it to the email address given\r
-at the bottom of this document:\r
-\r
- REPORTER:\r
- PLATFORM:\r
- PROBLEM:\r
- EXAMPLE:\r
- POSSIBLE SOLUTION:\r
- TESTPROGRAM:\r
- STATUS: Not Fixed\r
-\r
-\r
-However, before reporting any bug, and if possible, check that the\r
-problem does not exist if the same source code is compiled and run\r
-using your normal C/C++ compiler. If you have decided that you have\r
-found a real bug, then the following example will help in preparing\r
-your report (but don't worry if you can't suggest a possible solution):\r
-\r
- \r
- REPORTER: Ed Breen\r
- PLATFORM: Linux\r
- PROBLEM: EiC does not cast structures properly via va_args.\r
- EXAMPLE:\r
-\r
- #include <stdarg.h>\r
- #include <stdio.h>\r
-\r
- typedef struct { int a, b; } ab_t;\r
- ab_t a = {5,5};\r
-\r
- int p(char *fmt, ...)\r
- {\r
- ab_t x;\r
- va_list ap; \r
- va_start(ap, fmt);\r
- \r
- x = va_arg(ap, ab_t);\r
- va_end(ap);\r
-\r
- return x.a;\r
- }\r
-\r
-\r
- int main(void)\r
- {\r
- // the following call returns garbage!!!\r
- printf("5 = %d\n",p("",a));\r
- return 0;\r
- }\r
-\r
- POSSIBLE SOLUTION:\r
-\r
- The solution is to get the stack code to `drefptr' the pointer\r
-contained at the `ap' stack position, immediately before the `refmem'\r
-instruction. Although, this is easy to do, it upsets other existing\r
-code such as referencing members within an array of structures and\r
-structure assignments -- a rethink is in order.\r
-\r
-\r
- TESTPROGRAM:\r
- see above\r
-\r
- STATUS: Not Fixed, but the current EiC implementation\r
- flags the passing of a structure or union to\r
- a variadic function, such as shown above, as an error.\r
-\r
-\r
-mail bug report to eic_free@geocities.com\r
-\r
---------------------------------------------------------------------\r
-MAJOR KNOWN BUGS\r
-\r
- (none at the moment)\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r