| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | EMX 0.9a patch/change list, p1 of 2 |
Hello all!
Here is the list of fixes and changes in EMX 0.9a
============================================================================== =
history.doc emx 0.9a HISTORY 05-Dec-1994
============================================================================== =
Copyright (c) 1990-1994 by Eberhard Mattes
0.9a (??-???-1994)
==================
Important notes
---------------
- emx.dll no longer supports the -f option
- emx.dll no longer creates a stack object if the stack size is 16KB
or less. You have to relink programs which use emx.dll and assume
that emx.dll creates a big stack if the stack size is 16KB or less.
If relinking is not possible, you can use the emxstack tool
- C++ include files have been moved from /emx/include.cpp to
/emx/include/cpp. Don't forget to update the environment variables
CPLUS_INCLUDE_PATH and PROTODIR. If /emx/include is also included
in CPLUS_INCLUDE_PATH, you can now use
#include
to avoid reading /emx/include/getopt.h instead of
/emx/include/cpp/GetOpt.h
- EMSDOS, defined in , has been renamed to ENOSYS
- The `d_mode' member of `struct dirent' and `struct direct' has been
renamed to `d_attr'. You can check for this change by testing the
macro `_DIRENT_D_MODE_RENAMED_D_ATTR'
- When linking programs which use the hardware I/O port functions
(such as _inp8()), -lemxio (emxio.a or emxio.lib) is no longer
required and should no longer be used
- SIGPIPE is now implemented. When attempting to write to a broken
pipe, SIGPIPE will be raised by write(). In that case, write() only
returns (with errno set to EPIPE) if SIGPIPE is ignored or if the
signal handler for SIGPIPE returns. You might want to install a
signal handler (or set SIG_IGN) for SIGPIPE to avoid termination of
your process
- The -w option has been removed from GAS, the -Zwait option has been
removed from GCC
- \emx\lib\omflib.cmd has been renamed to \emx\lib\omflibs.cmd. It is
now written in REXX. Moreover, it now rebuilds the .lib file if the
.a file is newer than the .lib file
- Raising fatal signals such as SIGSEGV and SIGFPE with raise() or
kill() no longer terminates the process
- Libraries which exist both in a single-thread and a multithread
version have been moved to the `st' and `mt' directories,
respectively, using the same name for both versions (for instance,
cmt.a has been renamed to mt/c.a)
- Calling exec() in a forked process now runs the child process
synchronously to avoid some anomalies. For instance, this makes
`bash' get correct return codes of its child processes
- The C library has been split into several libraries to support
additional variants of DLLs. If you use GCC for linking, there is
no difference. However, if you run the linker manually, you have to
arrange for the new libraries. c.a contains the modules which are
common to all types of applications and DLLs. That library is
complemented by one of the following libraries:
c_app.a modules which are specific to applications
c_dllrt.a modules which are specific to custom C runtime DLLs
c_dllso.a modules which are specific to stand-alone DLLs
c_dllnrt.a modules which are specific to DLLs without runtime
environment
cdll.a has been renamed to c_import.a. (All this applies also to
.lib files.) cdllobj.def has been renamed to cdll.def. Import
libraries for custom C runtime DLLs should contain appinit.o and
dllinit.o in addition to ctor.o and dtor.o (this also applies to
.obj files)
Highlights
----------
- Complete source code is now available
- GAS 2.3 (which can generate listings)
- GCC 2.6.3
- GDB 4.13
- GNU termcap 1.2
- libg++ 2.6.1 and iostream 0.66. The iostream library can now be
linked to both single-thread and multithread programs. However, the
library is not thread-safe
- Several changes to get closer to ANSI X3.159-1989 (ANSI C) and IEEE
1003.1 (aka POSIX.1 aka ISO/IEC 9945-1:1990)
- POSIX.1 and System V signal handling models are available
- There are now two versions of emxlibc.dll: emxlibcs.dll for
single-thread applications and emxlibcm.dll for multithread
application. emxlibc.dll just contains forwarders to emxlibm.dll to
keep compatibility with existing applications. Some functions such
as getc() and putc() are much faster in the single-thread library
than in the multithread library
- New emxaout tool for converting .obj files to .o files
- Stand-alone DLLs can now be built with -Zomf -Zsys
- Henry Spencer's regexp library has been added. The documentation
(file /emx/bsd/man/regexp.man) is in bsddev.zip as it (the
documentation!) is covered by the USG license. The library can be
used freely (see /emx/src/regexp/COPYRIGH). Note: the regexp
library may get replaced in a future emx release with another one
which conforms to POSIX.2
- Support for sockets (IBM TCP/IP for OS/2) has been added to emx.dll.
Socket handles are treated like file handles. Use -lsocket to link
with the socket library. Note: This is quite preliminary, little
tested stuff. See libref.inf for details
emx for OS/2 (emx.dll)
----------------------
- exec() in a forked process now waits until the child terminates,
passing signals to the child process. This makes signals and work
and causes the correct termination status to be returned by wait()
- When a process is debugging another process, wait() can now be also
used for other child processes
- waitpid() can be used with ptrace()
- wait() and waitpid() can now be interrupted by a signal
- WNOHANG option of waitpid() implemented
- The SIGCLD signal stays pending until status for all terminated
child processes has been fetched with wait() or waitpid(). This
fixes the problem of lost SIGCLD signals when two or more child
process terminate within a short period of time
- kill(getpid(),signo) now dumps core if called from the main thread
(for those signals and signal actions which cause a core dump)
- spawn*() no longer uses the `MKS Korn shell' method for passing
command line arguments to child processes. However, you can enable
that method by using the P_TILDE flag with spawn*()
- The -q option can be used to enabling quoting of command line
arguments (that is, disabling _wildcard() and _response() in the
child process) passed to child processes. This is requivalent to
using the P_QUOTE flag of spawn*()
- Command line arguments passed with the `MKS Korn shell' method are
now automatically `quoted', that is, not expanded by _wildcard() and
_response(). To override this, use the -x (expand) emx option
- New -n option for suppressing exception popups
emx for DOS (emx.exe)
---------------------
- Command line arguments passed to child processes are no longer
quoted by default. The -q option can be used to enabling quoting of
command line arguments (that is, disabling _wildcard() and _response()
in the child process) passed to child processes. This is requivalent
to using the P_QUOTE flag of spawn*()
- An emulator for the numeric coprocessor is now available and is
automatically loaded if and when required: emxfpemu. There are some
limitations such as problems with debugging and exceptions
- The heap of dumped executables (such as emacs.exe) was not correctly
handled
- emxl.exe fixed: it crashed with VSHIELD /SWAP
- emx.exe no longer checks the emx version number of executables
- emx.exe skips the FNSAVE and FRSTOR coprocessor instructions if no
coprocessor is installed. GCC uses FNSAVE and FRSTOR for untyped
calls and returns. That feature is used by the Objective C runtime
of GCC 2.6.0, even for programs which don't use floating point code
- Function 0x09 of interrupt 0x33 fixed
- emx now tries to use VCPI even if no EMS is present. This may cause
crashes with VCPI servers which don't support certain undocumented
behavior
- emx no longer ignores XMS memory if VCPI is used
- alarm(0) now works correctly
- The -e option (ignore 387) has been renamed to -E. The new -e
option now redirects the standard error handle (2) to standard
output (1)
- A facility for emergency exit has been added: emx.exe will be
terminated if Ctrl-Break is pressed five times in a second, unless
emx.exe is blocked in a DOS call
- The I command of the debugger of emxd.exe now shows the file handle
mappings of the processes
Libraries (new features)
------------------------
- Add locale.h, setlocale() and localeconv(). Add dummy strcoll() and
strxfrm(). LC_COLLATE and LC_CTYPE are currently ignored. The
definition of locales is preliminary, in a future versions locales
are probably represented differently. Any volunteer for writing
localedef? ;-)
- Add multibyte character support: mblen(), mbtowc(), mbstowcs(),
wctomb(), wcstombs(), printf(), scanf(), strftime(), etc. However,
there are currently no locales which use multibyte charaters
- New functions for POSIX.1: sysconf(), pathconf(), fpathconf(),
getgrgid(), getgrnam(), getgroups(), setgid(), setuid(),
sigaction(), sigaddset(), sigdelset(), sigemptyset(), sigfillset(),
sigismember(), sigpending(), sigprocmask(), sigsuspend(), tcdrain(),
tcflow(), tcflush(), tcgetattr(), tcgetpgrp(), tcsendbreak(),
tcsetattr(), and tcsetpgrp()
- New function for POSIX.2: fnmatch()
- Custom C runtime DLLs can now be built both as single-threaded and
multithreaded libraries. Instead of cdllobj.lib, the following
libraries are now required: gcc.lib, c.lib, c_dllrt.lib, emx.lib,
emx2.lib, and os2.lib. Moreover, cdllobj.def has been renamed to
cdll.def
- For building stand-alone DLLs (which don't use a C runtime DLL and
emx.dll), c_dllso is provided. GCC automatically selects that
library if the options -Zdll -Zomf -Zsys -Zso are given
- The stream functions are linked into the executable only when
necessary. This reduces the size of programs (such as DLLs and PM
applications) which don't use stream I/O
- SIGCLD is an alias for SIGCHLD
- F_DUPFD request of fcntl() implemented
- _fnlwr2() function added for lower-casing only a suffix of a path
name
- gcvt() function added for formatting floating point numbers
- _getvol() function added for retrieving the volume label of a disk
drive
- _imphandle() function added for registering an OS/2 file handle with
the emx run-time system
- strptime() function added, which is incompatible with everybody
else's strptime() (all strptime() implementations are mutually
incompatible)
- New graphics modes available:
G_MODE_EGA_C EGA 640x200, 16 colors
G_MODE_EGA_E EGA 640x350, 16 colors
G_MODE_VGA_H VGA 640x480, 16 colors
Warning: These modes are quite slow and need access to the I/O ports
- __open() now translates "/dev/null" to "nul", and
"/dev/tty" to "con"
- cuserid() and getlogin() now take the user name from the LOGNAME and
USER environment variables
- fseek(), ftell(), fgetpos(), and fsetpos() now work correctly for
text-mode streams (unless the file contains both LFs with and
without preceding CR)
- The video library source code can now be compiled with IBM's C/C++
Tools
- getopt() may return a colon; error messages now include argv[0];
optopt is now implemented
- New flags for open() and sopen(): O_NOINHERIT and O_SYNC (currently,
O_SYNC is ignored under DOS)
- The F_SETFD request of fcntl() has been implemented under DOS;
however, FD_CLOEXEC is ignored when running DOS programs
- New flags for spawn*(): P_TILDE (use `MKS Korn shell' method for
passing command line arguments) and P_QUOTE (disable _wildcard() and
_response() in the child process)
- sleep() now returns the number of remaining seconds if interrupted
by a signal
- Change sys/video.h and sys/winmgr.h to enable argument checking for
v_printf(), v_vprintf(), wm_printf(), and wm_vprintf()
- _wildcard() now keeps the letter case of the directory part. Only
the last (expanded) component of the path names is converted to
lower case
- DosMon* and Spl* functions added
- setvbuf() may choose to ignore the BUFFER and SIZE arguments
- Support for indirect thunk calls added (new test program:
c16test2.c)
- Programs statically linked with the multithread libraries (-Zmt
or -Zmts) now can work under DOS (relinking is required to take
advantage of this)
- strchr (p, c) speed improved for c == 0
- _scrsize() is now also implemented in the system call libraries (-Zsys)
- perror() and strerror() now include the error code in the message if
the error code is unknown
- The startup code of the system call libraries (-Zsys) no longer
copies the environment strings to the stack
- emxlibcm.map and emxlibcs.map are now provided in \emx\etc to
simplify debugging
- heapsort() and strsep() added to BSD library
Libraries (bug fixes)
---------------------
- errno is now zero at program startup
- dup2() now sets errno to EBADF if HANDLE2 is out of range
- _msize() fixed
- The __fixunssfdi helper function was missing (it is used for
converting `float' to `unsigned long long')
- Very small numbers (close to LDBL_MIN) were not printed correctly by
printf()
- write() no longer returns ENOSPC when writing in blocking mode to a pipe
- write() now correctly handles text mode for non-blocking writes to a
pipe
- Memory leak in scanf() fixed
- scanf() rejected floating point numbers with a trailing decimal
point
- A lot of bugs in scanf() fixed
- printf ("%c", 0) didn't print a null character
- freopen() now ignores failure to close the file
- mktime() no longer rejects negative values in the structure.
Overflow is now detected and reported. The full range of time_t is
now supported by mktime(), gmtime(), and localtime()
- The output of strftime ("%j", ...) is 1-based (was incorrectly
0-based)
- v_clear() fixed
- Make qsort() more robust w.r.t. broken comparison functions which
never return 0
- fork() now works in multithread statically linked programs (it
doesn't work when using -Zcrtdll or -Zmtd)
- Fix WIFSIGNALED macro of sys/wait.h
- The window manager functions sometimes produced garbage on the
screen because the data wasn't properly aligned for access by
16-bit code
- _osmode was not defined when building a DLL. In consequence,
setjmp() and longjmp() could not be used in a DLL
- _CRT_init() and _CRT_term() are now protected against multiple calls
- "fistpll" in /emx/src/lib/math/pow.s replaced with "fistpl"
- Prototype of signal() fixed
- ioctl(): Fix handling of IGNCR, ICRNL, and INLCR. It's now possible
to swap CR and LF by setting both ICRNL and INLCR
- _ead_add() didn't work correctly for non-empty eads
- rmdir() now sets errno more correctly
emxbind
-------
- No longer support the -f emx option and the -k0 emxbind option
- "emxbind file.exe" no longer destroys file.exe
- emxbind can now write a .map file (-m otion)
- If the -E option is not given, emxbind takes the name of (a
replacement DLL for) emx.dll from the EMXBIND_DLL environment
variable. If neither -E nor EMXBIND_DLL are set, emx.dll will be
used
emxomf
------
- emxomf now supports N_SETD
- emxomf can now convert (I1) import records in libraries
---
---
---
---
--- timEd/2-B9
* Origin: The OS/2 Source BBS (303)744-0373 (1:104/338)SEEN-BY: 12/2442 54/54 620/243 624/50 632/348 640/820 690/660 711/409 410 413 SEEN-BY: 711/430 807 808 809 934 942 949 712/353 623 713/888 800/1 @PATH: 104/338 730 1 3615/50 229/2 12/2442 711/409 54/54 711/808 809 934 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.