home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / pgccgcc.zip / emx / doc.new / OS2CHANGES < prev    next >
Text File  |  1999-03-08  |  9KB  |  196 lines

  1. The following small changes (apart from those in ChangeLog's) have been made
  2. to PGCC+EMX relatively to GCC+EMX 2.7.2.1 (unordered):
  3.  
  4. o PGCC has NO bound checking.
  5.  
  6. o The symbol __OS2__ is defined if -Zomf is used.
  7.  
  8. o I've removed some of Eberhard Mattes' patches that were related to 8.3
  9.   naming convention. FAT is ugly, besides you mostly won't have any problems
  10.   with 8.3 names even without these patches. They were related mostly to
  11.   GCC-developer related things, like .cse2, .flow, .combine, .sched and
  12.   other file name extensions. If you need these files, you should use
  13.   a normal filesystem :-)
  14.  
  15. o The -ZC++-comments switch is gone now (hopefully forever) since GCC
  16.   always enable C++-style comments (unless -traditional or -lang-c89 is
  17.   specified)
  18.  
  19. o The -Zexe switch now works correctly (before it worked only in couple
  20.   with -o switch). ld and emxomfld were patched too for this. Also now
  21.   the -Zexe option not only creates a fresh file without extension
  22.   to keep "make" happy; the behaviour has been changed to copy a file
  23.   called ldstub.bin that should be located in same directory where
  24.   ld or emxomfld is into the file with same name as executable but without
  25.   extension: this avoids two problems at once: first, many "configure"
  26.   scripts expects after compiling a test program to obtain a *non-empty*
  27.   file; and second, they expect the file to be runnable, otherwise C compiler
  28.   is considered a cross-compiler. ldstub determines the name under which
  29.   it has been launched and launches in turn the executable that has same
  30.   name but with ".exe" appended. So, for example, if you copy ldstub.bin
  31.   into "sh" then when you do from, say, bash:
  32.  
  33.   [c:/] ./sh
  34.  
  35.   you will launch "sh" which in turn will look for "sh.exe" (located in
  36.   same directory as "sh" itself) and will run it.
  37.  
  38. o All compilers were compiled with -Zcrtdll, so you will need an
  39.   installed EMX runtime to run them. Anyway, I think everybody reading
  40.   this already have it :-)
  41.  
  42. o The -mprobe switch is retained for backward compatibility, however it
  43.   is highly recommended that you use -mstack-arg-probe and -mno-stack-arg-probe
  44.   instead since these options are new from mainstream GCC version, and maybe
  45.   someday -mprobe will disappear.
  46.   Another switch that has to do with stack probing is -f{no-}stack-check.
  47.   These switches have same functionality as -m{no-}stack-arg-probe but uses
  48.   inline instructions instead of alloca call, so they're faster. Here is how
  49.   alloca(20000) is compiled with different switches:
  50.  
  51.   without any switches:
  52.  
  53.     subl $20000,%esp
  54.  
  55.   with -mstack-arg-probe:
  56.  
  57.     movl $20000,%eax
  58.     call __alloca
  59.  
  60.   with -fstack-check options:
  61.  
  62.     movl $0,-4392(%esp)
  63.     movl $0,-8488(%esp)
  64.     movl $0,-12584(%esp)
  65.     movl $0,-16680(%esp)
  66.     movl $0,-24392(%esp)
  67.     addl $-20000,%esp
  68.  
  69. o Now alloca() is stack-probe safe, i.e. if you`re compiling with
  70.   -mstack-arg-probe switch, alloca() will do stack probes.
  71.  
  72. o 64-bit ([signed & unsigned] long long) division is now FAST! :-) Its written
  73.   in assembly now, and I`ve optimized them by hand.
  74.  
  75. o -mepilogue did not worked in C++ and possibly other languages which mangles
  76.   names. Fixed.
  77.  
  78. o _set_new_handler now is called set_new_handler. However, _set_new_handler
  79.   will work too as an alias.
  80.  
  81. o There is a new optional environment variable: CLH_TERM.
  82.   If GCC was compiled with built-in command-line help system (try gcc --help)
  83.   this variable will be used (or TERM as a fallback) to find the corresponding
  84.   entry in TERMCAP file to highlight command-line help. I've included my
  85.   TERMCAP file in this directory as a example. I'm using 'SET TERM=OS2'.
  86.   If CLH_TERM is equal to '-' (i.e. SET CLH_TERM=-) command-line help will
  87.   not be colored.
  88.  
  89. o Libgcc has been put in a separate DLL. This happened because libgcc changes
  90.   often - with each new major gcc release, sometimes even in minor releases.
  91.   To avoid conflicts with future/previous libgcc versions, libgcc will have
  92.   a name consisting of 'gcc' and gcc's internal version number without dots.
  93.   For example, gcc version 2.90.27 will have its runtime in gcc29027.dll.
  94.  
  95. Known bugs and limitations:
  96.  
  97. o Exceptions in C++ currently are single-threaded. This means you cannot
  98.   throw in two threads at the same time, otherwise you'll crash.
  99.  
  100. o emxomf now traps (sometimes?) when compiling with -g (debug) switch.
  101.  
  102. o f77 compiler does not incorporate the changes made for the `main' ported
  103.   version for OS/2. I do not know whenever there are other changes other than
  104.   those needed `just to make it work'.
  105.  
  106. --------------------------------------------------------------------------------
  107.                              PGCC/2 change history
  108. --------------------------------------------------------------------------------
  109.  
  110. (*) pgcc-1.1.1
  111.   - Upgraded to pgcc 1.1.1
  112.   - Upgraded to emx 0.9d: PGCC will not work anymore with emx 0.9c.
  113.   - Now command-line help works without termcap; this is better since it
  114.     achieves consistent results across different termcap files (the one that
  115.     comes with emx works not too well with CLH). The CLH_TERM variable
  116.     can be assigned three different values: "-" for non-colored output,
  117.     "mono" for monochrome output and anything other (or unset) for colored
  118.     output.
  119.   - Exceptions will work from now ONLY if you will link with g++ and ONLY
  120.     if you did not used -fno-exceptions during linking. Otherwise a different
  121.     version of libgcc is used that has smaller size overhead (~10K) by the
  122.     cost of exception handling.
  123.  
  124. (*) pgcc-1.0.2 release 2 - minor bugfixes
  125.   - Re-compiled ld.exe and emxomfld.exe to not use gcc290.dll from pgcc-1.0.0
  126.   - Changed front-end to pre-define __OS2__ symbol when using -Zomf
  127.   - Fixed an inconsistency between ld and emxomfld: ld used ldstub.bin when
  128.     run with -Zexe while emxomfld searched for ldstub.bin. Now the "launcher"
  129.     stub is always called ldstub.bin.
  130.   - minor bug in emxfix.cmd: lib/st and lib/mt already exists, so there is
  131.     no need to create them.
  132.   - New libraries: gpp*.a (which have almost the same functionality as their
  133.     gcc*.a counterparts). I was forced to split g++ runtime from gcc runtime
  134.     since g++ when used with frame-unwind exceptions required a slightly longer
  135.     initialization sequence which pulls a lot of unused code into executables,
  136.     even for plain C and F77 not speaking of C++ code without exceptions.
  137.     So I suggest now linking with gcc even C++ code without exceptions -
  138.     this will produce slightly smaller executables (5-10K).
  139.   - Fixed the bug with creating a ".exe" file when feeding only linker
  140.     files to frontent (ex: gcc -s a.o b.o c.o will produce ".exe").
  141.     Now it takes the basename of first object file and appends .exe or .dll.
  142.  
  143. (*) pgcc-1.0.2
  144.   - Upgraded to egcs-1.0.2.
  145.   - Ooops! Due to a bug in my makefiles, libgcc previously used C versions
  146.     of some functions instead of optimized versions I wrote in
  147.     config/i386/emx-libgcc1.asm. 64-bit division should be slightly faster
  148.     now.
  149.   - Renamed dynamically-loaded libgcc from gcc290.dll to gcc29027.dll.
  150.     This happened because libgcc in pgcc-1.0.2 has been changed, to
  151.     avoid conflicts with previous versions of gcc*.dll.
  152.   - Added include/cpp/new, include/cpp/exception, include/cpp/typeinfo files.
  153.     I don't really know what they are for :-) I don't use libstdc++.
  154.   - Included GNU -liberty library into base PGCC/2 binary distribution.
  155.     The files added were:
  156.      - libiberty.h - mostly interface for string functions in libiberty
  157.      - objalloc.h  - obstack management
  158.      - obstack.h   - same
  159.      - getopt.h    - GNU getopt (getopt_long included too).
  160.                      Replaces EMX's getopt.h
  161.      - demangle.h  - C++/Java name demangling functions
  162.      - fnmatch.h   - Wildcard filename match function
  163.                      Replaces EMX's fnmatch.h
  164.      - ansidecl.h  - auxiliary file
  165.      - iberty.a    - static library
  166.      - ibertydll.a - import library
  167.      - iberty.dll  - dynamic library
  168.  
  169.     To link against static version of GNU -liberty library use:
  170.  
  171.      gcc [...] -liberty
  172.  
  173.     To link against dynamic version of GNU -liberty library use:
  174.  
  175.      gcc [...] -libertydll
  176.  
  177.     iberty.dll should be on your LIBPATH (and distributed with your
  178.     programs, if used). Distribution policy is contained in file COPYING.
  179.  
  180. (*) pgcc-1.0 release 2
  181.   - multi-threaded and single-threaded libstdc++ library!
  182.   - fixed a bug with _IO_flockfile and _IO_funlockfile in libstdc++
  183.   - fixed a number of minor bugs in supplied header files
  184.     - removed limits.h - emx's is good enough
  185.     - removed float.h - emx's is good enough
  186.     - removed sysinclude.h which is garbage
  187.     - removed proto.h which is garbage
  188.     - fixed a definition conflict with emx headers in
  189.       varargs.h and stdarg.h
  190.   - changed behaviour of command-line help. Now by default "gcc -h"
  191.     will list a digest of most used GCC options. To see the full help
  192.     index use gcc -h* or gcc --help=*
  193.  
  194. (*) pgcc-1.0 release 1
  195.   This was the first release of pgcc-1.0 for OS/2
  196.