history

advertisement
=========================================================================
======
history.doc
emx 0.8h
HISTORY
14Dec-1993
=========================================================================
======
Copyright (c) 1990-1993 by Eberhard
Mattes
0.8h (14-Dec-1993)
==================
Important notes
--------------- The emxdoc.ndx file has been renamed emxbook.ndx. You should set
the EMXBOOK environment variable instead of EMXDOC. Replace EMXDOC
with EMXBOOK in the HELPNDX environent variable. If you're using
GNU Emacs, don't forget to update the value of the `os2help'
variable
- Each thread now has its own set of signal handlers. raise() raises
a signal in the current thread, kill() can be used to send a signal
to the main thread (thread 1)
- The `lib' prefix has been removed from the file names of the
libraries. The -l option of GNU ld and emxomfld no longer prepends
`lib' to the library name. Now you should use -lcurses (instead of
-lcurse) and -ltermcap (instead of -ltermc)
- The default stack size for -Zomf has been increased to 0x8000 bytes
- The address of the emx-list mailing list has changed, see readme.doc
- The iostream classes are no longer in libg++.
instead (replace -lgpp with -liostream)
Use libiostream
Highlights
---------- GPPDEMID.DLL has been provided to let LINK386 demangle C++ symbols
in error messages
- The new emxload utility speeds up compiling by keeping the compiler
passes in memory. Use
SET GCCLOAD=5
to keep the compiler in memory for 5 minutes
- emxomf now generates HLL version 3 debugging information for IPMD of
the C/C++ Tools 2.0 package, including C++
- emxomf has been enhanced to support creation of dynamic link
libraries with both instance data and private data
- Exceptions are now mapped to SIGFPE, SIGILL and SIGSEGV signals.
SIGTERM is now supported under OS/2
- New emxexp utility to simplify creating C++ dynamic link libraries
- New versions of GNU programs have been ported: GCC 2.5.7 (see
\emx\doc\NEWS.GCC), GDB 4.11, libg++ 2.5.2 and libiostream 0.62.
Linking with the GNU C++ iostream library doesn't put your program
under GPL (see \emx\doc\COPYING.IOS for details)
- Static constructors and destructors in dynamic link libraries are
now supported officially
- Support for creating custom C run-time DLLs added (cdllobj.lib).
Support for creating resource DLLs added (res0.obj)
- A REXX procedure (emxinst.cmd) for creating a documentation folder
is now included
emx for OS/2
------------ __signal() did not return the previous signal handler if emx.dll was
used
- Don't crash if a signal is received in 16-bit code of the operating
system
- The stack object of an executable with preloaded data (-c option of
emxbind) was omitted from core dumps. This has been fixed (revision
index 14 of emx.dll)
- Bug in __clock() fixed: the return values were not monotonous
emx for DOS
----------- emxl.exe now runs rsx.exe (a DPMI-compliant DOS extender by Rainer
Schnittker which implements a subset of the emx system calls)
instead of emx.exe if a DPMI server, but no VCPI server is found.
In that case, the RSX environment variable will be used instead of
EMX
- emx no longer displays a register dump if a protection violation has
been detected. A core dump file is written instead
- __spawnve() now supports P_NOWAIT. However, the process will be run
synchronously. You can now use wait() with the spawn*() functions
if you use P_NOWAIT.
process
SIGCLD is raised before continuing the parent
- __memaccess() bug fixed. For _memaccess (0, n*4095-1, 0), page 0 was
mapped n times and the other pages were not mapped
- __select() now returns EINTR when interrupted by a signal
- __select() no longer returns EINVAL for nearly all non-zero values
of tv_usec
emxbind
------- A bug has been removed which caused a corrupt fixup page table in
rare cases
- Speed up processing programs which import many symbols
- New -E option for renaming emx.dll
- emxbind now supports import by name when using method (I2)
emximp
------ emximp now can directly convert a .def file to a .lib file, without
having to create an intermediate .imp file
- emximp now supports import by name when writing an .a file for
method (I2)
emxomf
------ Write IDMDLL record. The name of the identifier manipulation DLL
can be changed with the -I command line option
- Generate HLL version 3 debugging information for IPMD of the C/C++
Tools 2.0 package
- New -D option for renaming the data segment. This can be used for
creating dynamic link libraries which have both instance data and
shared data
- The default stack size for modules translated with the -m option has
been increased to 0x8000 bytes
- Support import by name
- The -l option now takes an option argument, the entry symbol
emxomfld
-------- New -O option for passing options to LINK386.
- New -Zdll option to tell emxomfld that a DLL is being built
- Pass /base:0x10000 to LINK386 unless a DLL is built or the -T option
is specified
- The -l option no longer prepends `lib' to the name of the library
- The directories set by -L options are now inserted at the start of
the LIB environment variable
listomf
------- List HLL version 3 debugging information. Older versions of HLL
debugging information are no longer supported
- Now lists more OMF record types in human-readable form
GCC
--- Version 2.5.7 has been ported to emx.
details
See \emx\doc\NEWS.GCC for
- Under OS/2, GCC now supports -pipe
- GCCLOAD and GCCOPT environment variables added
- New -Zlinker option to pass options to LINK386
- Pass -Zdll option to emxomfld
GNU ld
------ Use new C++ demangler
- The -l option no longer prepends `lib' to the name of the library
GNU nm
------ Use new C++ demangler
Libraries
--------- os2emx.h: Rename CPSZ to PCSZ, CPCH to PCCH
- Definition of HUGE and HUGE_VAL changed
- The type of the fields of struct tms (sys/times.h) has been changed
from time_t to clock_t
- All the libraries have been renamed to remove the `lib' prefix
- Each thread now has its own set of signal handlers. raise() raises
a signal in the current thread, kill() can be used to send a signal
to the main thread (thread 1)
- access(): Directories on a CDROM are not writable
- _msize() now returns 0 if the argument is NULL
- _fnexplode(): No longer crashes when applied to an empty directory
- open() etc.: Move to the end of the file when opening a file for
appending. This is required for passing the handle to a child
process
- popen() and system(): The COMSPEC environment variable can now be
overriden with the EMXSHELL environment variable
- popen() and system(): Use -c instead of /c unless COMPSPEC (or
EMXSHELL) points to cmd.exe, 4os2.exe, command.com or 4dos.com
- printf(), scanf() etc. and strtod() have been rewritten. Several
small bugs have been removed (and replaced by new ones :-)
- rand() is now thread-safe when using the multi-threaded libraries
- Various small bugs in strtol() and strtoul() fixed
- Bug in memcmp() and strcmp() fixed (wrong sign)
- _threadstore() and _threadid added
- _osminor and _osmajor fixed for -Zsys
- open() and fopen() etc. didn't update the time stamp of a file when
opening an existing file of size 0 for writing
- open() and fopen() etc. now remove the final Ctrl-Z when opening a
file for appending in write-only mode. Previously, this was done
only in read/write mode. Note that this requires opening the file
in read/write mode, temporarily.
- _execname() added (not yet implemented under DOS)
- _envargs() added
- Functions which support the `long double' format have been added
- You can now build DLLs with -Zomf and -Zsys.
startup code of the emx 0.8g C library
There was a bug in the
- The `load' sample program has been replaced with the `emxload' tool
- Library functions for keeping OS/2 programs in memory added:
_emxload_env() etc.
- System call library (-Zsys): Decommit pages when shrinking the size
of the heap with brk() or sbrk()
- System call library (-Zsys): waitpid() waits for any child process
if PID is -1
- wait(): Set errno to ECHILD (not ESRCH) if there are no child processes
- Functions __ctordtorInit() and __ctordtorTerm() for calling static
constructors and destructors, respectively, in dynamic link
libraries have been added
- Add _errno() function for creating libraries that can be used for
single-threaded and multi-threaded programs
- New library for reading module definition files: moddef (see
_md_open() for details)
Other changes
------------- The supplemental files for patching the GNU programs have been moved
from \emx\gnu to \emx\gnu\patches
- bsddev.doc is now available as OS/2 on-line book
0.8g (13-Jul-1993)
==================
Important notes
--------------- IMPORTANT: The -Zmt GCC option has been renamed -Zmtd. If GCC
complains about an unknown -Zmt option, use -Zmtd instead (unless
you want to use static linking). Most existing makefiles use -Zmt
for dynamic linking
- The emx runtime is now available in a separate package: emxrt.zip.
user.doc has been renamed emxrt.doc and improved. See also
emxrt.inf
Highlights
---------- You can now statically link multi-threaded programs
- emxomf now converts debugging information suitable for IBM's IPMD
debugger
- os2emx.h enhanced
- New versions of GNU programs have been ported: GCC 2.4.5 (see
\emx\doc\NEWS.GCC), GDB 4.9 (including DUEL and REXX) and texinfo 3.1
- Source code for emxomf, emxomfar and emxomfld is now available
- Dynamic link library for the 32-bit wrappers for 16-bit OS/2 API
functions
- Hypertext documentation in OS/2 .inf format (on-line books)
emx
--- SIGUSR1 and SIGUSR2 added
- umask() fixed
emx for OS/2
------------ waitpid() returned an incorrect termination status
- termio keyboard buffer size increased (1024 characters now, was 256)
- Decommit pages when shrinking the size of the heap with brk() or
sbrk(). This saves memory (swap space) when using a malloc()
package which can shrink the size of the heap
- __spawnve() now does special argument quoting for CMD.EXE and
4OS2.EXE. Note that this may break existing programs such as MAKE.
If you have trouble with an emx port of MAKE, get the latest version
of that port -- the problem has probably been fixed in the
meantime
- P_PM and P_NOSESSION implemented for spawn*()
- Core dumps caused by signals and _core() improved, EIP is now in the
function which called __raise() or __core(). This simplifies post
mortem debugging after abort() has been called as GDB's backtrace
command will work properly
- Thunks to both _pascal and _cdecl functions can be built
emx for DOS
----------- Using emxl.exe no longer reduces the maximum length of the command
line
- Several emx options are now local to the process for which they have
been given (by emxbind)
- Options set by emxbind are now honored by emx programs started by
emx programs
- Nearly asynchronous handling of Ctrl-Break
- Additional interrupts supported: VESA functions of INT 10H, mouse
interface via INT 33H
- Bug in emxl.exe fixed: now you no longer have to sort the PATH
directories by length
- Bug fixed: debuggers couldn't access the initial argv[] and envp[]
arrays and strings
- __spawnve() now does special argument quoting for COMMAND.COM and
4DOS.COM
emxbind
------- Derive the module name from the output file name
- Reduce the alignment of the DOS stub
- The value of the STACKSIZE statement was rounded slightly
incorrectly
- The -h# and -k# options now accept octal and hexadecimal numbers
emxcat
------ Collect INCL_ definitions at the start of the output file
- Topological sort of #include statements
- Move #include <sys/emx.h> before all other #include statements
- New option: -D (define symbol)
- Moved from emxlib.zip to emxdev.zip
emximp
------ Bug fixed: emximp couldn't read .LIB files which use the 32-bit
variant of the MODEND record
emxomf
------ New option: -i (add default library request)
- New option: -p (set page size for LIB files)
- Convert debugging information for IBM's IPMD debugger
listomf
------- This program is new, it list an .obj file
GCC
--- Version 2.4.5 has been ported to emx.
details
See \emx\doc\NEWS.GCC for
- The -Zmt option has been renamed -Zmtd (dynamically linked
multi-threaded program)
- New option: -Zmts (statically linked multi-threaded program)
- Treat *.cpp as C++ files
- New option: -Zexe (simplify makefiles by adding .exe to output file
name and creating an empty file without extension)
- The -M option (create dependencies) now works with -Zomf (create
.obj files)
- New -Zstack option: set stack size (passed down to ld or emxomfld)
- New -ZC++-comments option: enable C++-style // comments in C programs
GDB
--- Version 4.9 has been ported to emx
- Redirection fixed (set args)
- DUEL added
- Anthony Green's REXX extension added
GNU ld
------ New Zstack option: set stack size (passed down to emxbind)
Libraries
--------- Library reference moved to \emx\doc\libref.doc
- Sample programs moved to \emx\samples
- libmt.a and libmt.lib renamed libcdll.a and libcdll.lib,
respectively
- libsys.lib renamed libsysst.lib
- static multi-threaded libraries added: libcmt.a and libsysmt.lib
- Dynamic link library for 16-bit OS/2 API functions added:
emxwrap.dll with import libraries libwrap.a and libwrap.lib
- _clear87(), _control87(), _fpreset() and _status87() added
- cuserid(), getpass(), _fnisrel(), _makepath() and pause() added
- Argument quoting of system() and popen() fixed
- strncpy() documentation fixed
- _chdrive(): accept lower-case letters
- Special streams added: _mfopen(), v_fopen() and wm_fopen()
- fflush (NULL) fixed
- realloc() problem fixed -- it now tries to move the block before
expanding the heap (that's slower but takes less memory)
- _tmalloc() and friends implemented. These functions can be used to
allocate memory for use with 16-bit functions
- stderr never buffered by default
- Type of second argument of getcwd() changed from int to size_t
- _chdir2() behaviour is now defined if the argument is a drive letter
- Flags returned by _int86() fixed
- access() now treats a trailing slash like stat() does
- _emx_rev variable added
- When a linefeed is written to a line-buffered stream, try to use one
write() to flush the buffer to make Emacs (gud.el) happy
0.8f (03-Jan-1993)
==================
Important notes
--------------- IMPORTANT: You have to rewrite the initialization code of dynamic
link libraries created with emx: main() has been replaced with
_DLL_InitTerm()
- IMPORTANT: mkdir() now has two arguments. Before linking, change
and recompile all modules that use mkdir()
Highlights
---------- New versions of GNU programs have been ported: GCC 2.3.3, GDB 4.7
- _DLL_InitTerm(), _CRT_init() and _CRT_term() for dynamic link
libraries
- (Awkward) support for calling 16-bit OS/2 API functions
- Keyboard (Kbd), Mouse (Mou) and Video (Vio) subsystems can now be
used under OS/2
- A simple graphics library has been added (320x200x256 mode only)
- A text-mode video library has been added
- Functions for reading and writing extended attributes have been
added
emx
---
- New system call for __read_kbd(); some but not all _read_kbd() bugs
fixed
- New system calls: __sleep2(), __waitpid()
- File name truncation (SET EMXOPT=-t) fixed
emx for OS/2
------------ emxio.dll: the functions didn't save the EBX register
- fork() fixed: fork() didn't work before a call to malloc()
- FIONREAD also works if ICANON is set for the handle
- _outps8() fixed
- _syserrno() now returns the last error code for the current thread
- If the size of the stack object is 16 KB or smaller, emx.dll creates
a new object for the stack and expands the stack as needed using a
guard page and an exception handler. (emx.dll 0.8e and older always
do this, independently of the size of the stack object.) If the
size of the stack object is greater than 16 KB, the stack is not
changed, that is, the stack object is used for the stack. Programs
that use emx.dll and are linked with LINK386 and need more stack
space than declared in the .EXE file and the stack size declared in
the .EXE file is greater than 16 KB, don't work with emx 0.8f and
later. The default stack size (defined by emxomf) is 8 KB.
Therefore programs are unaffected unless they use more stack than
declared by the STACKSIZE statement or the /STACK option of LINK386
or by the .STACK segment in an OBJ file and that stack size is 16 KB
or smaller. No real programs should be affected. Note that the
(obsolete) Limited Availability release of OS/2 allocates space in
SWAPPER.DAT for all pages of the stack object. Therefore, you
should use a stack size of 16 KB or smaller and the -mprobe option
of GCC if compatibility to the Limited Availability release of OS/2
is essential. If your program uses DosSetPriority and the stack
size is set to 16 KB or smaller, you have to rename DosSetPriority
to DosTrueSetPriority in /emx/lib/os2/dos.imp, assemble
/emx/lib/os2/code1.s, rebuild libos2.a and put code1.o into
libos2.a. This is only required if you re-link your program, it
isn't required for existing executables
- An import library for emxio.dll is now available; _outp8() etc. are
supported when linking with LINK386 or when using emxlibc.dll
- longjmp() now works with user-installed exception handlers
emx for DOS
----------- New emx option: -ac (data and stack executable)
- New emx option: -C# (commit memory)
- Bug fixed: -c didn't work
- Access to ports 0 through 0xffff can be enabled by _portaccess().
Previous versions restricted access to ports 0 through 0x3ff
- FIONREAD works for all types of handles
- select() has been implemented
- Additional debugger commands: VP and VX; page table dump changed
emxbind
------- TERMGLOBAL and TERMINSTANCE module definition file statements now
supported
- Option for setting the heap size: -h#
- Option for setting the OS/2 stack size: -k#
- The STACKSIZE statement can be used for setting the OS/2 stack size
- By default, a 16 MB stack object for OS/2 is now put into the .EXE
file
emxomf
------ Convert (I2) import records to (I3) import records
- Convert line number information unless -s is used.
enables limited debugging with IBM's IPMD debugger
This feature
- No longer requests emx.lib to be linked
emxomfld
-------- Call RC to handle .res file
- New -Zstack option: set stack size
- Bug fixed: LIB environment variable not correctly set
- Use /debug option of LINK386 unless -s or -S are used
touch
----- New -c option: don't create files
GCC
--- #pragma pack implemented for C++
- The -s option is passed to emxomf
- The -mnoprobe option has been renamed -mno-probe
- -mno-probe is now default. If you create threads with
DosCreateThread and don't set bit 1 of the flags argument, you have
to use -mprobe. -mprobe is also required if you want to trap stack
overflow
- GCC now passes libemx1 and libemx2 instead of libemx (and emx.lib)
to the linker
- As emxomfld now knows about .res files, you can use .res files on
the GCC command line even when using -Zomf
- After all the other libraries but before -lemx2, -los2 is passed to
the linker. Therefore, you no longer have to use -los2. Using -los2
(in old makefiles, for instant) doesn't hurt
GDB
--- `info float' command fixed
- Switch to debuggee session only on CALL instructions
- Redirection supported by `set arg'
GNU ld
------ The -R option is no longer automatically turned on for import
libraries of type (I1)
- `.o' is appended to the symbol indicating the start of the text
segment of a module unless the symbol starts with `-l' or already
ends with `.o'. This is required to make GDB work with GCC's
MKTEMP_EACH_FILE `feature'
GNU nm
------ New -d option: don't demangle C++ symbols
Header files and libraries
-------------------------- Header files adapted for -traditional and C++
- Value of HZ (defined in sys/param.h) fixed
- Prototypes added to curses.h
- New header files: conio.h, sys/utsname.h, sys/wait.h
- S_ISCHR etc. defined in sys/stat.h
- There are now two emx syscall
with libemx1.a and libemx2.a,
replaced with libemx1.lib and
syscall interface to emx.dll,
emx.dll
libraries: libemx.a has been replaced
libemx.lib and emx.lib have been
libemx2.lib. libemx1 contains the
libemx2 is the import library for
- New functions: ffs(), uname(), waitpid(), _dt_*(), _ea*(),
_getname(), _inps16(), _inps32(), _int86(), _memdif(), _outps8dac(),
_outps16(), _outps32(), _sleep2(), _splitargs(), _wait*()
- _read_kbd() now available with -Zsys
- The sign of the number returned by _fncmp() is now significant
- pclose() now uses waitpid()
- popen() now parses the command line correctly
- emxlibc.dll now supports 256 file handles and 256 streams
- malloc() and friends in emxlibc.dll are thread-save now
- tempnam() return value fixed; avoid infinite loop for invalid PREFIX
- nls_init() fixed
- frexp() fixed
- popen() improved
- open() and sopen(): errno fixed for O_CREAT
- mkdir(): now sets errno to EEXIST if directory already exists
- scanf(): bugs fixed
- mktime(): the argument is interpreted as local time
- wait(): use errno of system call
- memcmp() return value fixed (sign was wrong)
- strstr (s, "") should return s
- _flush() writes a linefeed immediately in _IOLBF mode
- index(), rindex(), strchr(), strcmp() and strrchr() coded in
assembly language
- Bug fixed: strtol ("0", whatever, 0) didn't work
- printf() no longer prints "-#NAN".
"#NAN" is printed instead
- SOM added to libos2
Sample and test programs
------------------------ New sample programs: eatool, graph, wm_demo and wm_hello
- align.c renamed pack.c
0.8e (13-Sep-1992)
==================
Important notes
--------------- IMPORTANT: Recompilation of all source files is required due to
changes in the header files and the C library. All .o and .a files
must be recreated from the source
- If the linker complains about `_streams' undefined, you haven't
recompiled all source files
- IMPORTANT: the -s emxbind option has been renamed -i
- When using GNU Emacs 18.58.3 for OS/2 2.0 with emx.dll 0.8e, you
have to replace the string
"/s /c"
with the two strings
"/s" "/c"
in compile.el, shell.el and simple.el.
Also replace
"/q /s"
with
"/q" "/s"
and byte-compile compile.el, shell.el and simple.el.
dump-emacs.cmd
Then, run
- When recompiling GNU Emacs 18.58.3 for OS/2 2.0 using emx 0.8e, you
should put the line
(setq completion-ignore-case t)
into the .emacs file as readdir() no longer turns all file names
into lower case
Highlights
---------- C++
- LINK386 can be used for linking
- fork()
- New versions of GNU programs have been ported: GCC 2.2.2, GDB 4.6
- C library in dynamic link library
- Create `native' OS/2 programs that don't need emx.dll
emx
--- New system calls: __stat(), __fstat(), __utimes(), __filesys(),
__chsize(), __ftime(), __getppid(), __nls_memupr(), __clock(),
__fork(), __open(), __newthread(), __endthread()
- Changed system calls: __ftruncate(), __umask(), __memaccess(),
__open()
- Removed system calls: __creat(); still supported for old programs
emx for OS/2
------------ REXX-callable entry point for getting the revision number
- emxio.dll
- MKS-ksh-style argument passing under OS/2
- System calls are now (almost) reentrant
- New scan codes for C-SPACE, A-SPACE and C-INSERT
- New system call: __brk()
- Bug fixed: argument quoting on the command line
- Bug fixed: scan code of Ctrl-Break (OS/2 full screen)
- Bug fixed: __sbrk() didn't work currectly for small arguments
emx for DOS
----------- _scrsize() fixed for DOS
- Bug fixed: __spawnve() didn't close the file handle when calling a DOS
program
- If a memory manager provides both DPMI and VCPI, use VCPI instead of
giving up
- termio bug fixed (`New' extended scan codes)
emxbind
------- The -s option has been renamed -i
- Option for stripping the symbol table
- Automatically seeks emxl.exe
- Support for new method of importing (I2)
- Support for creating dynamic link libraries
emximp
------ Automatically call assembler
- Automatically generate output file names
- Additional conversions: .lib -> .imp, .imp -> .def, .lib -> .a
GCC
--- GCC 2.2.2
- Expansion of wildcards on the command line
- The preprocessor macro `unix' is no longer defined
- The preprocessor macro `__32BIT__ is defined
- New -Zdll option for creating dynamic link libraries
- New -Zomf option for creating .OBJ files
GDB
--- GDB 4.6
- Bug fixed: global variables can now be viewed
- Forward slashes must be used instead of backward slashes in path names
GAS
--- wait instructions are no longer inserted automatically unless -w given
GNU ld
------ New ld option: -R (automatically set when creating a .dll file or
using a special class of import libraries)
- Pass on module definition file name and resource file name to
emxbind
GNU ar
------ Expansion of wildcards on the command line
- Extension of the temporary file shortened for FAT file systems
Header files and C library
--------------------------
- New include files: malloc.h, sys/hw.h, sys/kbdscan.h
- float.h fixed
- min() and max() removed from stdlib.h
- HT_DEV_KBD (sys/ioctl.h) has been replaced with HT_DEV_CON;
HT_DEV_VIO has been removed -- it was never returned
- time_t changed to unsigned long (was long), timezone declared long
(was time_t)
- Support for long long
- Functions renamed: itoa() -> _itoa(), ltoa() -> _ltoa(), ultoa() ->
_ultoa(), rmtmp() -> _rmtmp()
- _memaccess() and _portaccess() now documented. Note the changed
argument list if you've already used _memaccess(): You have to
change and recompile programs that use _memaccess()
- spawn*() now quotes arguments if required
- system() now obeys quoting when parsing the command
- Timezones are implemented, without day light saving (summer time)
- malloc() etc.: the memory blocks are now properly aligned
- Math functions now do argument and result checking and set errno
- stat() now returns time stamps for directories
- stat() now sets the X bit for .exe, .com, .bat and .cmd files
- stat() now sets the st_dev always to 0
- utime() and utimes() fixed
- Bug fixed: buffer for stdout
- Dummy libm.a
- open(): use SH_DENYNO sharing mode
- fseek(): improved to not always flush the buffer
- New functions: fmod(), frexp(), hypot(), cbrt(), rint(), trunc(),
swab(),
_memswap(), _nls_strlwr(), _fnlwr(), getwd(), _getext(), _remext(),
strtoul(), _atoll(), _splitpath(), strftime(), fork(), getppid(),
ftw(),
sopen(), _fsopen(), getw(), putw(), _filesys(), chsize(), v*scanf(),
_beginthread(), _endthread()
- Function versions of isalpha() etc.
- Function versions of abs() and labs()
- qsort() is now reentrant
- readdir() also returns system files
- readdir() and _wildcard() now use _fnlwr() instead of strlwr()
- _wildcard() no longer omits directories
- truncate() and ftruncate() can no longer increase the size of a
file. See chsize()
- Bug fixed: fread() and fwrite() should not return -1 on error
- Memory and string functions improved
- Bug fixed: umask() semantic was wrong (including documentation)
- Bug fixed: strncat() should not pad the destination string
- Bug fixed: times() return value
- Bug fixed: fclose() didn't delete temporary files
- setbuffer() now uses setvbuf()
- _abspath() now preserves a trailing slash
- All members of the exec*() family implemented
- pipe() now sets both handles to text mode
Sample and test programs
------------------------ New sample programs: calc
- stdio renamed stdiotst
- Bug fixed: `sieve' didn't work when compiled with -DBITS
New emx tools
------------- touch
(set time stamp of a file)
- emxrev (display revision number of emx DLLs)
- texi2dvi (typeset texinfo file)
- updt (copy file if changed or if newer)
- emxcat (concatenate source files)
- emxomf (convert a.out to OMF)
- emxomfld (front end for LINK386)
- emxomfar (librarian for OMF libraries)
New GNU programs
---------------- info (the GNU info browser)
- makeinfo (convert texinfo to info)
- texindex (prepare index for TeX)
New BSD libraries
----------------- curses
- libbsd: random()
Other changes
------------- develop.doc split into emxdev.doc and gnudev.doc
- More OS/2 API calls prepared
- termcap.dat improved
- Library sources spread over more directories
- bind.cmd and bind.bat have been removed.
Use emxbind instead
- unzip is now required for unpacking, PKUNZIP doesn't work
- emximp moved from emxlib.zip to emxdev.zip
- gccsrc3.zip merged into gccsrc2.zip
- upda no longer available because `ar' can process wildcards now
0.8d (03-May-1992)
==================
- The default value of the -f# emx option is now 0. If a program
compiled with GCC 1.4 experiences stack exceptions, you should use
emxbind to add an appropriate -f# option to the .exe file
- a core dump file is now written if a protection violation occurs
under OS/2 unless the -c option is used
- Core dumps on SIGKILL are not disabled by the -c option
- Don't lose characters if SIGALRM interrupts termio read(). If ECHO
is on, the characters will be echoed again. In ICANON mode, the
keyboard buffer is still flushed
- termio/SIGALRM problem fixed (OS/2)
- __cgets() bug fixed (OS/2)
- make.cmd and make.bat renamed omake.cmd and omake.bat
- omake.cmd, omake.bat, makebin.cmd, makebin.bat, makebin1.cmd and
makebin1.bat were missing by accident
- Terminals added to termcap.dat: rmono, ansi-color-2, ansi-color-3
- GDB now uses _isterm() instead of isatty() to make it work properly
via pipes (GNU Emacs!)
- GDB reopens the CON device for the debuggee
- GDB changed to use ; instead of : for sending the current line to
GNU Emacs
- GDB: the debuggee window stays open after the process ended, "set
close" command added
- GCC changed to use semicolon instead of colon as directory separator
in environment variables. You now can use C_INCLUDE_PATH and
LIBRARY_PATH to load GCC etc. from another drive. Example:
set C_INCLUDE_PATH=c:/emx/include
set LIBRARY_PATH=c:/emx/lib
- ar: append "$!" instead of "_supersede" to temporary file name
- #pragma pack() in os2.h fixed
- const pointers in os2.h fixed
- os2.h: second argument of window procedure function changed from USHORT
to
ULONG
- dup2() now available -- does not work correctly under DOS
- kill (pid, 0) implemented
- kill() and raise() set errno
- kill (pid, sig) for pid < -1 (process group) implemented for direct
children of the calling process (OS/2 only)
- select() implemented for pipes created by emx and for termio input
(OS/2 only)
- gettimeofday() implemented
- tempnam() fixed
- filelength(), tell() and eof() no longer reset the F_EOF bit
(Ctrl-Z)
- read() now converts CR/LF to LF instead of discarding CR in text
mode. Ctrl-Z is ignored if it is the last character of a file
- O_NDELAY and FIONREAD now work for pipes created by pipe() of emx,
but not for pipes created by CMD.EXE, for instance
- Additional spawn() modes (OS/2 only)
- ioctl (FGETHTYPE) added
- Initialization of file handles and streams by _startup() improved
- signal (SIGKILL, ...) is invalid
- SIGCLD implemented (OS/2 only)
- wait() return value fixed (OS/2)
- _abspath() function added to library
- _syserrno() added
- rand() fixed
0.8c (19-Mar-1992)
==================
Important notes
--------------- *** YOU SHOULD RECOMPILE ALL YOUR PROGRAMS *** because the header
files and the library have changed. If you can't recompile a
program (due to lacking sources, for instance), use
emxbind -u \emx\bin\emxl myprog
to update emx in the .exe file
*** DO NOT RE-LINK A PROGRAM WITHOUT RECOMPILING ALL ITS MODULES ***
As several definitions in stdio.h and fcntl.h have been changed,
just linking with the new library without compiling with the new
include files won't work. Really. We apologize for the
inconvenience
emx
--- The -f# option will be removed for emx 0.8f, better recompile *now*
programs which require -f#
- New emx option -h# to set the number of file handles
- New emx option -c to disable core dumps caused by signals
- The -r emx option is not applied if the file name starts with
/pipe/
- Signal numbers reassigned
- System calls added: __ftruncate(), __fcntl(), __pipe()
- Message for SIGABRT changed. Return code for default processing of
signals under OS/2 changed to 3
- termio: ICANON and IDEFAULT moved from c_iflag to c_lflag
- termio: IDELETE
- _ulimit3() system call replaced with __ulimit() system call
- emx.dll: __ptrace(8) improved, this improves the behaviour of GDB
when the debugee terminates
- emx.dll: __ptrace(9) no longer steps into emx_syscall of emx.dll
- __dup() syscall implemented for OS/2
- __fsync() syscall implemented for OS/2
- __scrsize() syscall implemented (not yet implemented correctly for
DOS)
- __dup2(n,n) fixed for DOS: don't close the file
- __spawnve(): maximum size of arguments increased to 4096, E2BIG is
returned if the limit is exceeded
- __spawnve(): if P_DEBUG is used, the child process will be started
in a separate session unless the -E option is used
- __ioctl2(): FIONREAD, TCFLSH, TCSETAF
- __ptrace(): PTRACE_SESSION
- The following signals now cause a core dump unless catched or
ignored: SIGQUIT, SIGILL, SIGTRAP, SIGEMT, SIGFPE, SIGBUS, SIGSEGV
and SIGSYS
- emx under DOS now uses BIOS instead of DOS calls for termio
emxbind
------- emxbind: -e and -u commands added (set application type, update
emx)
- emxbind: -f, -p and -w options added (application type)
- emxbind: -r option added (add resources)
- emxbind now sets the "no internal fixups" module flag
GCC
--- GCC 2.1
- GCC now requires a math coprocessor (80387)
- GCC: temporary files are created in the current working directory if
TMPDIR is not set. TMPDIR may end with a backslash
- Stack probes implemented in GCC. -mprobe enables stack probes,
-mnoprobe disables stack probes. By default, stack probes are
enabled. Programs compiled with -mprobe can be used with the -f0
emx option
- GCC fixed: -B was ignored; PATH was used for seeking cpp, cc1, as
and ld. Older versions of emx didn't use .exe files, therefore .exe
wasn't appended in gcc.c when seeking a program
GAS
--- gas 1.38.1
- gas: signal problem fixed
- makebin: gas argument replaced with as
GDB
--- GDB 4.4
- GDB no longer adds the .exe default extension
- The debuggee is now started in a separate session
- "set switch" and "show switch" commands added
- GDB now can debug Presentation Manager applications
Header files and C library
-------------------------- Type of count parameter for memcpy etc. and return value of strlen
changed from int to size_t
- size_t changed from "unsigned int" to "unsigned long"
- bcmp, bcopy, bzero, memcmp, memcpy, memmove, memset, strcat, strcpy
and strlen coded in assembly language
- Number of streams increased from 20 to 40
- open() didn't return EMFILE if the operating system ran out of file
handles
- chmod() didn't return 0 on success
- closedir() now returns an int
- div() and ldiv() now perform a signed division
- Bug in exp() fixed
- Bug in utime() fixed
- Return value of acos() now between 0 and pi (was: -pi/2 and pi/2)
- putenv() return value fixed
- abort() declared volatile
- sscanf() whitespace bug fixed
- printf ("%%") bug fixed
- struct _dtd (sys/emx.h) changed to include hundredths of a second
- float.h now available (it's somewhat inaccurate because printf() and
strtod() are somewhat incaccurate)
- unistd.h now available (well, some bits of it)
- Signal numbers reassigned, SIGEMT declared
- I/O flag bits reassigned (see stdio.h, sys/fcntl.h, sys/emx.h)
- Link with /emx/lib/binmode.o for setting the default open mode to
binary
- Some helper functions moved from libc.a (crt0.s) to libgcc.a
- __main() put into libgcc.a for GCC 2.x. Currently, this function
does nothing as C++ is not yet supported
- Obsolete functions removed from C library and include files: prtc(),
prti(), prts(). Test programs changed to not use these functions
- _exit(): The return code will be replaced with 255 if it is greater
than 255
- exit() now uses _cleanup()
- abort() now uses _cleanup() and "raise (SIGABRT)"
- fcntl() now exists, F_GETFL and F_SETFL partially implemented
(O_APPEND should work, O_NDELAY is implemented for termio). F_GETFD
and F_SETFD implemented for OS/2 only
- ioctl(): FIONREAD implemented for handle 0 if IDEFAULT and ICANON
are not set
- ioctl(): TCFLSH implemented for the keyboard
- ioctl(): TCSETAF now flushes the keyboard buffer
- termio: ICANON and IDEFAULT moved from c_iflag to c_lflag
- termio: IDELETE in c_iflag
- getcwd() return value fixed
- sys/emx.h now included
- _seek_hdr() and _fseek_hdr() now work relative to the current
position of the file pointer
- scanf(): %X implemented
- MAXNAMLEN and MAXPATHLEN changed to 260
- P_tmpdir in stdio.h changed to ".".
tempnam() and tmpfile()
This affects tmpnam(),
- _ulimit3() system call replaced with __ulimit() system call
- bsearch() fixed: comparison was reversed
- stdarg.h improved for types with sizeof(type) < 4.
problem with float promoted to double
There's still a
- varargs.h improved(?)
- The names of all the syscall functions now start with two
underscores, all the syscalls are now interfaced by a library
function
- tempnam() fixed for NULL passed to DIR argument
- tempnam() fixed for trailing backslash in DIR argument or TMP
environment variable
- tempnam() now returns an absolute path name
- Check for emx version in _startup()
- fclose() return value fixed
- Global variable _osmode (which contains DOS_MODE or OS2_MODE)
implemented
- New library functions: spawnl(), spawnle(), spawnlp() and
spawnlpe()
- New library functions: pipe(), pclose() and popen().
for OS/2, only
Implemented
- New library funtions: _isterm(), _swchar(), _chdir2(), _fullpath(),
_fngetdrive(), _getcwd1(), _getcwd2(), _getdrive(), _memcount(),
_fsetmode(), _scrsize()
- ftime() implemented, see sys/timeb.h.
implemented
Timezones are still not
- dup() fixed: copy _files[] entry
- _ftime() syscall renamed __filetime()
- fopen() fixed: return value
- eof() fixed: use tell(), not fseek()
- access() fixed: directories accessible, use (mode & 2) instead of
(mode == 2), fix errno values
- printf ("%04d", -1) fixed, put zeros after sign
OS/2 API
-------- OS/2 API calls added: DosFreeModule, DosLoadModule,
DosQueryProcAddr, DosSetFileInfo, DosSetPathInfo, DosQueryPathInfo,
DosQueryCurrentDisk, DosQueryFSAttach, DosQueryDBCSEnv,
DosSetProcessCp, DosQueryModuleName, DosQueryModuleHandle,
DosQueryProcType, DosError, DosErrClass, DosDebug
- OS/2 semaphore API calls added
- OS/2 tasking API calls added
- OS/2 named pipe API calls added
- OS/2 queue API calls added
- OS/2 exception API calls added
- OS/2 session manager API calls added
- Some Presentation Manager calls added
Sample and test programs
------------------------ sieve.c fixed: 3rd argument of memset() was wrong
- /emx/test/makefile updated
- Obsolete test programs deleted
Other changes
------------- Directory structure changed, all GNU programs are now under
/emx/gnu
- GCC documentation now included (TeX)
- upda.exe now included.
library
This utility is required for building the C
- New utility: updt.exe.
Used for building GCC
- emximp bug fixed: list of libraries wasn't cleared when starting a
new output file
- emximp: -p command line option
0.8b (18-Feb-1992)
==================
- See emx.chg for changes to versions older than 0.8b
--------------------------- END OF HISTORY.DOC -----------------------------
Download