| 1 |  | 
|---|
| 2 |  | 
|---|
| 3 | R e l e a s e    N o t e s    G C C   f o r   O S / 2 | 
|---|
| 4 | +----------------------------------------------------+ | 
|---|
| 5 |  | 
|---|
| 6 |  | 
|---|
| 7 | (C)'2003-2005 InnoTek Systemberatung GmbH | 
|---|
| 8 | http://www.innotek.de | 
|---|
| 9 | (C)'2004-2005 Knut St. Osmundsen | 
|---|
| 10 |  | 
|---|
| 11 |  | 
|---|
| 12 | GCC v3.3.5 / LIBC v0.6 - Beta 4: | 
|---|
| 13 | -------------------------------- | 
|---|
| 14 |  | 
|---|
| 15 | Thanks to Lorne, Froloff and nickk for sending me patches, | 
|---|
| 16 | debugging problems and testing fixes. | 
|---|
| 17 |  | 
|---|
| 18 | New features: | 
|---|
| 19 |  | 
|---|
| 20 | o Added st_dev and st_ino calculation for fstat and stat. | 
|---|
| 21 |  | 
|---|
| 22 | o Added most of the wide string functions. | 
|---|
| 23 | N.B. the stream functions are still missing. | 
|---|
| 24 |  | 
|---|
| 25 | o New functions: | 
|---|
| 26 | SafeDosStartSession(), wcscat(), wcschr(), wcscmp(), | 
|---|
| 27 | wcscoll(), wcscpy(), wcscspn(), wcslcat(), wcslcpy(), | 
|---|
| 28 | wcslen(), wcsncat(), wcsncmp(), wcsncpy(), wcspbrk(), | 
|---|
| 29 | wcsrchr(), wcsspn(), wcsstr(), wcstok() and wcswidth() | 
|---|
| 30 |  | 
|---|
| 31 |  | 
|---|
| 32 | Bug fixes: | 
|---|
| 33 |  | 
|---|
| 34 | o settimeofday() year problem. | 
|---|
| 35 |  | 
|---|
| 36 | o Some underflow/overflow problems tested for by many | 
|---|
| 37 | Configure scripts was fixed by using a 64-bit time | 
|---|
| 38 | type internally. | 
|---|
| 39 |  | 
|---|
| 40 | o fxsave/fxrstore problem in fork(). (This isn't tested | 
|---|
| 41 | because lack of (reliable) obsolete hardware.) | 
|---|
| 42 |  | 
|---|
| 43 | o Fixed fork() and DosLoadModule problem in child. | 
|---|
| 44 |  | 
|---|
| 45 | o nl_langinfo(CODESET) now returns something useful, | 
|---|
| 46 | adding a few ascii codeset aliases at the same time. | 
|---|
| 47 |  | 
|---|
| 48 | o Bug in socket inheritance over exec/spawn. | 
|---|
| 49 |  | 
|---|
| 50 | o Missing semphore and signal blocking when processing | 
|---|
| 51 | external signals. | 
|---|
| 52 |  | 
|---|
| 53 | o Two rmdir errno problems, and made it fail on symlink. | 
|---|
| 54 |  | 
|---|
| 55 | o Fixed incorrect monetary locale for the "C" locale | 
|---|
| 56 | after setlocale call. | 
|---|
| 57 |  | 
|---|
| 58 | o Fixed signal queue node leak. | 
|---|
| 59 |  | 
|---|
| 60 | o Fixed missing release of signal semaphore and signal | 
|---|
| 61 | unblocking in a failure code path. | 
|---|
| 62 |  | 
|---|
| 63 | o Fixed a few filehandle conversion bugs in os2_select. | 
|---|
| 64 |  | 
|---|
| 65 | o Fixed libsocket to set errno to ENOSOCK when given a | 
|---|
| 66 | filehandle instead of a socket. Previous was ENOSYS. | 
|---|
| 67 |  | 
|---|
| 68 | o Corrected NP_NBLK define in os2emx.h. | 
|---|
| 69 |  | 
|---|
| 70 | o Export __mcount stub. LIBCxx.prf export non-stub. | 
|---|
| 71 |  | 
|---|
| 72 | o Added missing libdl stub libraries (dlfcn is in libc | 
|---|
| 73 | as of last release). | 
|---|
| 74 |  | 
|---|
| 75 | o Fixed missing WNOHANG handling in the wait functions. | 
|---|
| 76 |  | 
|---|
| 77 | o Adjusted the ECHILD and EINVAL errnos usage in | 
|---|
| 78 | the wait functions to match the waitpid() spec. | 
|---|
| 79 |  | 
|---|
| 80 | o ??? | 
|---|
| 81 |  | 
|---|
| 82 | Todos before LIBC06.DLL: | 
|---|
| 83 |  | 
|---|
| 84 | 0. Fix all bugs. :-) | 
|---|
| 85 |  | 
|---|
| 86 | 1. Reimplement opendir in BSD style (+fchdir). | 
|---|
| 87 |  | 
|---|
| 88 | 2. Shared IPC structures for XSI msq, sem and shm. | 
|---|
| 89 |  | 
|---|
| 90 | 3. Missing job pgid functions. | 
|---|
| 91 |  | 
|---|
| 92 | 4. Port GLIBC intl/*. gettext is a pita! because it's | 
|---|
| 93 | passing FILE pointers around between different LIBCs. | 
|---|
| 94 | objdump is constantly broken between LIBC versions. | 
|---|
| 95 |  | 
|---|
| 96 | 5. Figure out the EA exclusive read access trouble. | 
|---|
| 97 |  | 
|---|
| 98 | 6. Calc ino_t on file creation and store it in EAs. | 
|---|
| 99 |  | 
|---|
| 100 | 7. Some sysctl() required for coreutils + a bit | 
|---|
| 101 | of tcpip additions. | 
|---|
| 102 |  | 
|---|
| 103 | 8. adjtime() implementation. | 
|---|
| 104 |  | 
|---|
| 105 |  | 
|---|
| 106 |  | 
|---|
| 107 | GCC v3.3.5 / LIBC v0.6 - Beta 2: | 
|---|
| 108 | -------------------------------- | 
|---|
| 109 |  | 
|---|
| 110 | New features: | 
|---|
| 111 |  | 
|---|
| 112 | o wchar.h and wctype.h and much of the non-stream functions | 
|---|
| 113 | declared therein are implemented. Though, the FreeBSD | 
|---|
| 114 | string/w*.c functions are still in the porting queue. | 
|---|
| 115 |  | 
|---|
| 116 | o Added __mcount stub to all LIBC DLLs but the .prf one which | 
|---|
| 117 | is forwarding __mcount from kProfile.dll. | 
|---|
| 118 |  | 
|---|
| 119 | o DosLoadModuleEx and DosFreeModuleEx was created to support | 
|---|
| 120 | loaded modules over a fork(). dlopen/dlclose backend was | 
|---|
| 121 | changed to use these. | 
|---|
| 122 |  | 
|---|
| 123 | o Fixed rand() range problem. Using the BSD code for this | 
|---|
| 124 | too, which means a new algorithm. | 
|---|
| 125 |  | 
|---|
| 126 | o Update all BSD source-files (not headers) to FreeBSD 5.3 | 
|---|
| 127 | level. | 
|---|
| 128 |  | 
|---|
| 129 | o New functions: | 
|---|
| 130 | DosLoadModuleEx(), DosFreeModuleEx(), sranddev(), | 
|---|
| 131 | getsubopt(), rand_r(), llabs(), lldiv(), dlfunc(), | 
|---|
| 132 | issetugid(), pread(), pwrite(), _UTF8_mbrtowc(), | 
|---|
| 133 | _UTF8_mbsinit(), _UTF8_mbsnrtowcs(), _UTF8_wcrtomb(), | 
|---|
| 134 | _UTF8_wcsnrtombs(), digittoint(), isideogram(), | 
|---|
| 135 | isrune(), iswalnum(), iswalpha(), iswascii(), | 
|---|
| 136 | iswblank(), iswcntrl(), iswctype(), iswdigit(), | 
|---|
| 137 | iswgraph(), iswhexnumber(), iswideogram(), iswlower(), | 
|---|
| 138 | iswnumber(), iswprint(), iswpunct(), iswrune(), | 
|---|
| 139 | iswspace(), iswupper(), iswxdigit(), btowc(), mbrlen(), | 
|---|
| 140 | mbrtowc(), mbsinit(), mbsnrtowcs(), mbsrtowcs(), | 
|---|
| 141 | nl_langinfo(), towctrans(), wcrtomb(), wcsftime(), | 
|---|
| 142 | wcsnrtombs(), wcsrtombs(), wcstod(), wcstof(), | 
|---|
| 143 | wcstoimax(), wcstol(), wcstold(), wcstoll(), wcstoul(), | 
|---|
| 144 | wcstoull(), wcstoumax(), wctob(), wctrans(), wctype(), | 
|---|
| 145 | towlower(), towupper(). | 
|---|
| 146 |  | 
|---|
| 147 |  | 
|---|
| 148 | Bug fixes: | 
|---|
| 149 |  | 
|---|
| 150 | o Fixed missing WNOHANG handling in waitpid(), wait4() | 
|---|
| 151 | and waitid(). | 
|---|
| 152 |  | 
|---|
| 153 | o Corrected several severe bugs in the path resolver. | 
|---|
| 154 |  | 
|---|
| 155 | o Fixed handling of paths ending with slash. | 
|---|
| 156 |  | 
|---|
| 157 | o Fixed weird fork() problem which showed up as a heap | 
|---|
| 158 | deadlock. | 
|---|
| 159 |  | 
|---|
| 160 | o Fixed broken _getdrive(). | 
|---|
| 161 |  | 
|---|
| 162 | o Made _chdrive() return -1 on error. It used to always | 
|---|
| 163 | return success earlier. (don't ask me why) | 
|---|
| 164 |  | 
|---|
| 165 | o Fixed incorrect handling of -shared in GCC. It should | 
|---|
| 166 | be treated as -Zdll. | 
|---|
| 167 |  | 
|---|
| 168 | o Various incorrect assertions in the strict/log build. | 
|---|
| 169 |  | 
|---|
| 170 | o ... | 
|---|
| 171 |  | 
|---|
| 172 | Known Limitiations/Problems: | 
|---|
| 173 |  | 
|---|
| 174 | o Static linking not possible - might be fixed later. | 
|---|
| 175 |  | 
|---|
| 176 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 177 | This won't change. | 
|---|
| 178 |  | 
|---|
| 179 | o Missing some process group interfaces required for | 
|---|
| 180 | job control. They'll show up soon I hope. | 
|---|
| 181 |  | 
|---|
| 182 | o Not tested too well. Especially the regex update. | 
|---|
| 183 |  | 
|---|
| 184 | Todos before LIBC06.DLL: | 
|---|
| 185 |  | 
|---|
| 186 | 0. Fix all bugs. :-) | 
|---|
| 187 |  | 
|---|
| 188 | 1. Implement new ino_t scheme and reimplement opendir | 
|---|
| 189 | in BSD style while doing so (+fchdir). | 
|---|
| 190 |  | 
|---|
| 191 | 2. Shared IPC structures for XSI msq, sem and shm. | 
|---|
| 192 |  | 
|---|
| 193 | 3. Port string/w* functions. | 
|---|
| 194 |  | 
|---|
| 195 | 4. Missing job pgid functions. | 
|---|
| 196 |  | 
|---|
| 197 | 5. Port GLIBC intl/*. gettext is a pita! because it's | 
|---|
| 198 | passing FILE pointers around between different LIBCs. | 
|---|
| 199 | objdump is constantly broken between LIBC versions. | 
|---|
| 200 |  | 
|---|
| 201 |  | 
|---|
| 202 |  | 
|---|
| 203 | GCC v3.3.5 / LIBC v0.6 - Beta 1: | 
|---|
| 204 | -------------------------------- | 
|---|
| 205 |  | 
|---|
| 206 | New features: | 
|---|
| 207 |  | 
|---|
| 208 | o setitimer/alarm implementation. Needs some review later | 
|---|
| 209 | the accuracy isn't extacly great. | 
|---|
| 210 |  | 
|---|
| 211 | o Added a couple of missing os2emx.h features. | 
|---|
| 212 |  | 
|---|
| 213 | o Some more 16-bit thunkers. | 
|---|
| 214 |  | 
|---|
| 215 | Bug fixes: | 
|---|
| 216 |  | 
|---|
| 217 | o Select worker called wrong tcpip function. | 
|---|
| 218 |  | 
|---|
| 219 | o Incorrect assertion during thread destruction. | 
|---|
| 220 |  | 
|---|
| 221 | o Fixed broken chdir and getdrive. | 
|---|
| 222 |  | 
|---|
| 223 | o Improved deadlock detection (fmutex have changed, | 
|---|
| 224 | thus stdio FILE is also changed). | 
|---|
| 225 |  | 
|---|
| 226 | o ... | 
|---|
| 227 |  | 
|---|
| 228 |  | 
|---|
| 229 | Known Limitiations/Problems: | 
|---|
| 230 |  | 
|---|
| 231 | o Static linking not possible - will be fixed. | 
|---|
| 232 |  | 
|---|
| 233 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 234 | This won't change. | 
|---|
| 235 |  | 
|---|
| 236 | o Missing some process group interfaces required for | 
|---|
| 237 | job control. They'll show up soon. | 
|---|
| 238 |  | 
|---|
| 239 | o Doesn't evaluate trailing slash in paths as directory | 
|---|
| 240 | specifier, it's currently ignored. | 
|---|
| 241 |  | 
|---|
| 242 |  | 
|---|
| 243 |  | 
|---|
| 244 | GCC v3.3.5 / LIBC v0.6 - Alpha 3: | 
|---|
| 245 | --------------------------------- | 
|---|
| 246 |  | 
|---|
| 247 | This release have been timebombed and will stop working at the | 
|---|
| 248 | end of December 2004. The reason for this is that data structures | 
|---|
| 249 | shared between LIBC 0.6 and all future LIBC versions are not yet | 
|---|
| 250 | quite finalized. (For your comfort the timebomb will go away when | 
|---|
| 251 | the betas start, and this is the last planned LIBC v0.6 alpha.) | 
|---|
| 252 |  | 
|---|
| 253 |  | 
|---|
| 254 | New Features: | 
|---|
| 255 |  | 
|---|
| 256 | o Updated GCC to version 3.3.5. | 
|---|
| 257 |  | 
|---|
| 258 | o Replaced the signal implementation. The new implementation | 
|---|
| 259 | is much closer to the POSIX specs and implements a lot of | 
|---|
| 260 | new interfaces. | 
|---|
| 261 |  | 
|---|
| 262 | o Experimental delayed loading import libraries. emximp have | 
|---|
| 263 | a new -l option for generating such libraries. At present | 
|---|
| 264 | emximp can only generate a.out libraries of this kind - so | 
|---|
| 265 | use emxomf to convert to OMF. | 
|---|
| 266 |  | 
|---|
| 267 | o The dlfcn.h functions are in LIBC now. | 
|---|
| 268 |  | 
|---|
| 269 | o New functions: | 
|---|
| 270 | getgrouplist(), initgroups(), memalign(), valloc(), | 
|---|
| 271 | mprotect(), _signal_os2(), _signal_sysv(), | 
|---|
| 272 | __sigpause_bsd(), bsd_signal(), killpg(), psignal(), | 
|---|
| 273 | sigaltstack(), sigblock(), sighold(), sigignore(), | 
|---|
| 274 | siginterrupt(), sigpause(), sigrelse(), sigsetmask(), | 
|---|
| 275 | sigtimedwait(), sigvec(), sigwait(), sigwaitinfo(), | 
|---|
| 276 | sigqueue(), sigset(), getgrgid(), getpwnam(), | 
|---|
| 277 | getpwuid(), setegid(), seteuid(), setregid(), | 
|---|
| 278 | setresgid(), setresuid(), setreuid(), | 
|---|
| 279 | setrgid(), setruid(), waitid(), wait3(), | 
|---|
| 280 | wait4() and getopt_long_only(). | 
|---|
| 281 |  | 
|---|
| 282 |  | 
|---|
| 283 | Bug fixes; | 
|---|
| 284 |  | 
|---|
| 285 | o Sockets were broken on some systems. Hopefully, this | 
|---|
| 286 | should be corrected now. | 
|---|
| 287 |  | 
|---|
| 288 | o stat() failed on a file open for writing. | 
|---|
| 289 |  | 
|---|
| 290 | o fork() didn't work for processes which allocated lot's | 
|---|
| 291 | of memory. Fixed incorrect syncing of memory objects. | 
|---|
| 292 |  | 
|---|
| 293 | o ... | 
|---|
| 294 |  | 
|---|
| 295 |  | 
|---|
| 296 | Known Limitiations/Problems: | 
|---|
| 297 |  | 
|---|
| 298 | o Static linking not possible - will be fixed. | 
|---|
| 299 |  | 
|---|
| 300 | o alarm() is still missing. Code is 80% done but didn't | 
|---|
| 301 | make it for the release. | 
|---|
| 302 |  | 
|---|
| 303 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 304 | This won't change. | 
|---|
| 305 |  | 
|---|
| 306 | o Missing some process group interfaces required for | 
|---|
| 307 | job control. They'll show up soon. | 
|---|
| 308 |  | 
|---|
| 309 |  | 
|---|
| 310 |  | 
|---|
| 311 | GCC v3.3.4 / LIBC v0.6 - Alpha 2: | 
|---|
| 312 | --------------------------------- | 
|---|
| 313 |  | 
|---|
| 314 | This release have been timebombed and will stop work at the | 
|---|
| 315 | end of October 2004. The reason for this is that data structures | 
|---|
| 316 | shared between LIBC 0.6 and all future LIBC versions are not yet | 
|---|
| 317 | finalized. | 
|---|
| 318 |  | 
|---|
| 319 |  | 
|---|
| 320 | New Features: | 
|---|
| 321 |  | 
|---|
| 322 | o Updated GCC to version 3.3.4. | 
|---|
| 323 |  | 
|---|
| 324 | o 2nd fork() implementation. | 
|---|
| 325 | All binaries are by default forkable, use the link option | 
|---|
| 326 | -Zno-fork to disable this. | 
|---|
| 327 | The fork implementation rendered _rmutex useless and it | 
|---|
| 328 | has been removed. | 
|---|
| 329 |  | 
|---|
| 330 | o Symlinks using EAs. This is work in progress. One of the | 
|---|
| 331 | limitiations is that readir will not report DT_LNK yet. | 
|---|
| 332 |  | 
|---|
| 333 | o Unix compartment using chroot(). This offers a | 
|---|
| 334 | redirection of '/' to the chroot'ed root. The entrance | 
|---|
| 335 | to the compartment is the '/'. The exits are drive letters. | 
|---|
| 336 | The unix compartment is inherited by LIBC child processes. | 
|---|
| 337 |  | 
|---|
| 338 | o getcwd() will now return the driveletter too (as VAC does) | 
|---|
| 339 | when not inside the unix compartement. | 
|---|
| 340 | _getcwdux() has been provided for porters which requires | 
|---|
| 341 | behaviour like the old getcwd() implementation. | 
|---|
| 342 |  | 
|---|
| 343 | o Paths to unix files #defined in headers are now prefixed | 
|---|
| 344 | with "/@unixroot" which will be redirected to where the | 
|---|
| 345 | environment variable UNIXROOT points. After calling | 
|---|
| 346 | chroot() the target of "/@unixroot" will be changed too. | 
|---|
| 347 |  | 
|---|
| 348 | o LIBC specific path rewriting (redirection). Built in is | 
|---|
| 349 | "/dev/null", "/dev/tty" and "/@unixroot". | 
|---|
| 350 | The environment variable LIBC_PATHREWRITERS is examined | 
|---|
| 351 | during init and DLLs specified in it are loaded and called. | 
|---|
| 352 | See src/emx/src/sys/pathrewrite.c for more details. | 
|---|
| 353 |  | 
|---|
| 354 | o Non-unix like mode - link option -Zno-unix. | 
|---|
| 355 | This affects slashes and various other Unix-like features | 
|---|
| 356 | like for instance fork and symlinks. | 
|---|
| 357 |  | 
|---|
| 358 | o Printf et al. have been extended to support some new format | 
|---|
| 359 | specifiers. (It's still lacking a bit to be SuS comforming.) | 
|---|
| 360 |  | 
|---|
| 361 | o Sockets handles are now inherited by LIBC child processes. | 
|---|
| 362 |  | 
|---|
| 363 | o LIBC specific filehandle flags are now inherited by LIBC | 
|---|
| 364 | child processes. | 
|---|
| 365 |  | 
|---|
| 366 | o The GCCxyz.DLL is no longer needed when LIBC is used. | 
|---|
| 367 | However it is still shipped for special cases where LIBC | 
|---|
| 368 | isn't needed. | 
|---|
| 369 |  | 
|---|
| 370 | o A good bunch of 'new' functions both from the SuS and from | 
|---|
| 371 | various Unix flavors, even one or two PC functions have been | 
|---|
| 372 | added. Accompanying these are new headers and header updates. | 
|---|
| 373 | Here are most of the new function names: | 
|---|
| 374 | __strverscmp(), _atfork_callback(), _getcwdux(), | 
|---|
| 375 | _getdcwd(), _nsdbtaddsrc(), _nsdbtput(), _nsdispatch(), | 
|---|
| 376 | _realrealpath(), canonicalize_file_name(), catclose(), | 
|---|
| 377 | catgets(), catopen(), chown(), chroot(), eaccess(), | 
|---|
| 378 | endgrent(), endnetgrent(), endusershell(), fchown(), | 
|---|
| 379 | fstatfs(), fstatvfs(), getdtablesize(), getfsstat(), | 
|---|
| 380 | getgrent(), getgrent_r(), getgrgid_r(), getgrnam_r(), | 
|---|
| 381 | getloadavg(), getmntinfo(), getnetgrent(), | 
|---|
| 382 | getpwent_r(), getpwnam_r(), getpwuid_r(), getrlimit(), | 
|---|
| 383 | getusershell(), innetgr(), lchown(), link(), mknod(), | 
|---|
| 384 | readlink(), setgrent(), setgroupent(), setgroups(), | 
|---|
| 385 | setnetgrent(), setpassent(), setrlimit(), | 
|---|
| 386 | setusershell(), sl_add(), sl_find(), sl_free(), | 
|---|
| 387 | sl_init(), statfs(), statvfs(), strmode(), strtok_r(), | 
|---|
| 388 | symlink() and sync(). | 
|---|
| 389 |  | 
|---|
| 390 |  | 
|---|
| 391 | Bug fixes: | 
|---|
| 392 |  | 
|---|
| 393 | o setlocale() have been rewritten. The code page is now | 
|---|
| 394 | taken from the locale rather than OS/2. Old behaviour | 
|---|
| 395 | is used if environment variable LIBC_SETLOCALE_OLDSTYLE | 
|---|
| 396 | is defined. | 
|---|
| 397 |  | 
|---|
| 398 | o Buggy strspn() replaced by BSD implementation. | 
|---|
| 399 |  | 
|---|
| 400 | o Thread backend have been reworked fixing certain | 
|---|
| 401 | problems when LIBC was loaded and initialized in threads | 
|---|
| 402 | other than the primary one. A LIBC specific TLS api | 
|---|
| 403 | was created during this effort. | 
|---|
| 404 |  | 
|---|
| 405 | o Fixed a missing export from GCCxyz.dll which was causing | 
|---|
| 406 | incorrect behaviour of C++ exceptions in all previous | 
|---|
| 407 | releases. | 
|---|
| 408 |  | 
|---|
| 409 | o Fixed a buffer overrun in iconv_open() which caused a | 
|---|
| 410 | corruption of the FS selector register, thus crashing | 
|---|
| 411 | the processing. | 
|---|
| 412 |  | 
|---|
| 413 | o ... | 
|---|
| 414 |  | 
|---|
| 415 |  | 
|---|
| 416 | Known limitations and bugs: | 
|---|
| 417 |  | 
|---|
| 418 | o mktime() works incorrectly for exterme values causing | 
|---|
| 419 | configure test to fail. | 
|---|
| 420 |  | 
|---|
| 421 | o NSS probably doesn't work. | 
|---|
| 422 |  | 
|---|
| 423 | o Trailing slashes of a path specification are not | 
|---|
| 424 | handled correctly after the rewrite of the path | 
|---|
| 425 | handling. | 
|---|
| 426 |  | 
|---|
| 427 | o New path handling is not DBCS ready. | 
|---|
| 428 |  | 
|---|
| 429 | o Socket handle duplication have not been implemented yet. | 
|---|
| 430 |  | 
|---|
| 431 | o The __<syscall> function are in the process of being | 
|---|
| 432 | removed. | 
|---|
| 433 |  | 
|---|
| 434 | o Not tested with mozilla. | 
|---|
| 435 |  | 
|---|
| 436 |  | 
|---|
| 437 |  | 
|---|
| 438 | v3.2.2 Beta 4 CSD 1: | 
|---|
| 439 | -------------------- | 
|---|
| 440 |  | 
|---|
| 441 | Bug fixes: | 
|---|
| 442 |  | 
|---|
| 443 | o Fixed crash in file stream allocation code. | 
|---|
| 444 |  | 
|---|
| 445 | o Fixed incorrect time on machines which had DATETIME::timezone | 
|---|
| 446 | set. This fix changes the time granularity from hundredths of | 
|---|
| 447 | a second to milliseconds. | 
|---|
| 448 |  | 
|---|
| 449 | o Added the SPBCDATA struct, the defines FCF_CLOSEBUTTON and | 
|---|
| 450 | BS_NOTEBOOKBUTTON and infosegment structs to os2emx.h | 
|---|
| 451 |  | 
|---|
| 452 | o Fixed bug in sys/locale.h where it hid the lconv struct. | 
|---|
| 453 |  | 
|---|
| 454 | o Fixed missing error number translations in getsockopt() and | 
|---|
| 455 | setsockopt(). | 
|---|
| 456 |  | 
|---|
| 457 | o Fixed potential conflict caused by sys/types.h not defining | 
|---|
| 458 | _KEY_T with the key_t typedef. | 
|---|
| 459 |  | 
|---|
| 460 | o Fixed missing 64bit I/O support in ftell(), fstat() and stat(). | 
|---|
| 461 |  | 
|---|
| 462 | o Fixed UCS-2 codepage mappings. | 
|---|
| 463 |  | 
|---|
| 464 | o Fixed problem with emxbind not recognizing option -e and | 
|---|
| 465 | a problem with case sensitivity in the export checking. | 
|---|
| 466 |  | 
|---|
| 467 |  | 
|---|
| 468 | v3.2.2 Beta 4: | 
|---|
| 469 | -------------- | 
|---|
| 470 |  | 
|---|
| 471 | (The changelog is removed, thus the release notes are more detailed.) | 
|---|
| 472 |  | 
|---|
| 473 | New features and fixes: | 
|---|
| 474 |  | 
|---|
| 475 | o Filehandle rewrite. Files, pipes and sockets now share the same | 
|---|
| 476 | handle space. | 
|---|
| 477 |  | 
|---|
| 478 | o Updated binutils from v2.11.2 to v2.14 adding as-elf.exe and | 
|---|
| 479 | ld-elf.exe as goodies for the adventurous. | 
|---|
| 480 |  | 
|---|
| 481 | o GCC defines __INNOTEK_LIBC__=0x005. | 
|---|
| 482 | The value reflects the LIBC version, form: 0xGMM | 
|---|
| 483 | Where G=major version and MM=middle version numbers. | 
|---|
| 484 |  | 
|---|
| 485 | o Changed library search algorithms for the linkers (emxomfld | 
|---|
| 486 | and ld). Three variations, static, shared and shared+dll. | 
|---|
| 487 | (The options indicated corresponds to what binutils 2.12.x | 
|---|
| 488 | documents.) | 
|---|
| 489 | static: (-Bstatic, -non_shared, -dn, -static) | 
|---|
| 490 | 1. libfoo_s.a | 
|---|
| 491 | 2. foo_s.a | 
|---|
| 492 | 3. libfoo.a | 
|---|
| 493 | 4. foo.a | 
|---|
| 494 | shared: (default, -Bshared, -call_shared, -dy) | 
|---|
| 495 | 1. libfoo_dll.a | 
|---|
| 496 | 2. foo_dll.a | 
|---|
| 497 | 3. libfoo.a | 
|---|
| 498 | 4. foo.a | 
|---|
| 499 | 5. libfoo_s.a | 
|---|
| 500 | 6. foo_s.a | 
|---|
| 501 | shared+dll: (-Zdll-search with -Bshared, -call_shared, -dy) | 
|---|
| 502 | 1. libfoo_dll.a | 
|---|
| 503 | 2. foo_dll.a | 
|---|
| 504 | 3. libfoo.a | 
|---|
| 505 | 4. foo.a | 
|---|
| 506 | 5. foo.dll | 
|---|
| 507 | 6. libfoo_s.a | 
|---|
| 508 | 7. foo_s.a | 
|---|
| 509 |  | 
|---|
| 510 | o Added some deadlock checking/termination checks to semphores. | 
|---|
| 511 |  | 
|---|
| 512 | o Added macros to os2emx.h for preserving FPU control word and | 
|---|
| 513 | applied these to certain read and write operations in LIBC. | 
|---|
| 514 |  | 
|---|
| 515 | o Added feature to emxomfld to automatically convert a.out | 
|---|
| 516 | libraries and objects to OMF (using temporary files). Enabled | 
|---|
| 517 | by default but can be disabled by the option -Zno-autoconv. | 
|---|
| 518 |  | 
|---|
| 519 | o Added support to emximp for dlls. | 
|---|
| 520 |  | 
|---|
| 521 | o Added support for automatic conversion of dlls to temporary | 
|---|
| 522 | import libraries emxomfld and ld. | 
|---|
| 523 |  | 
|---|
| 524 | o Added getopt_long() and changed getopt() to FreeBSD | 
|---|
| 525 | implementations. | 
|---|
| 526 |  | 
|---|
| 527 | o Added a few more code page aliases. | 
|---|
| 528 |  | 
|---|
| 529 | o Added optional breakpoint in abort. The presense of the env.var. | 
|---|
| 530 | LIBC_BREAKPOINT_ABORT triggers the breakpoint instruction. | 
|---|
| 531 |  | 
|---|
| 532 | o Added syslog interfaces (contrib from Yuri Dario). | 
|---|
| 533 |  | 
|---|
| 534 | o Added to libc and updated BSD db code to FreeBSD 5.1 level. | 
|---|
| 535 |  | 
|---|
| 536 | o Added to libc and updated regex code to FreeBSD 5.1 level. | 
|---|
| 537 |  | 
|---|
| 538 | o Ported the posix spawn api from GLIBC v2.3.2. | 
|---|
| 539 |  | 
|---|
| 540 | o Updated with os2emx.h flags for DosQueryMemState(). | 
|---|
| 541 |  | 
|---|
| 542 | o Changed size_t to unsigned int (from unsigned long int) and | 
|---|
| 543 | ptrdiff_t to signed int (from signed long int) to comply with | 
|---|
| 544 | most of the other i386 environments. | 
|---|
| 545 |  | 
|---|
| 546 | o Changed abort and default signal termination messages to say | 
|---|
| 547 | which process it's printed from. | 
|---|
| 548 |  | 
|---|
| 549 | o Changed the glob() and globfree() implemenation with a port of | 
|---|
| 550 | the FreeBSD 5.1 implemenation. | 
|---|
| 551 |  | 
|---|
| 552 | o Changed so_ioctl() to os2_ioctl() to better match the toolkit. | 
|---|
| 553 |  | 
|---|
| 554 | o Changed time_t to be signed as in BSD & linux. | 
|---|
| 555 | (Negative values means date/time before epoc.) | 
|---|
| 556 |  | 
|---|
| 557 | o Changed to FreeBSD implementation of difftime(). | 
|---|
| 558 |  | 
|---|
| 559 | o Increased default stream buffer size to 2 pages. | 
|---|
| 560 |  | 
|---|
| 561 | o Workaround for DosSetFileLocksL() on non JFS volumes. | 
|---|
| 562 |  | 
|---|
| 563 | o Workaround for bad FIL_STANDARDL buffer handling in os2krnl. | 
|---|
| 564 |  | 
|---|
| 565 | o Fixed waitpid() to respect the WNOHANG flag. | 
|---|
| 566 |  | 
|---|
| 567 | o Fixed strerror() to set errno if an invalid error number is | 
|---|
| 568 | specified. | 
|---|
| 569 |  | 
|---|
| 570 | o Fixed problem with emxexp emitting ordinal without being told. | 
|---|
| 571 |  | 
|---|
| 572 | o Fixed broken setenv(). | 
|---|
| 573 |  | 
|---|
| 574 | o Fixed errno value for read() and write() when the handle isn't | 
|---|
| 575 | opened for that operation. | 
|---|
| 576 |  | 
|---|
| 577 | o Fixed a bad record length problem in emxomf. | 
|---|
| 578 |  | 
|---|
| 579 | o Fixed type_tag too long issue in emxomf. | 
|---|
| 580 |  | 
|---|
| 581 | o Fixed repetition of main source file in HLL debuginfo (emxomf). | 
|---|
| 582 |  | 
|---|
| 583 | o Fixed weakld problem with selfrefering aliases. | 
|---|
| 584 |  | 
|---|
| 585 | o Fixed weakld problem with PUBLIC and COMM clash. | 
|---|
| 586 |  | 
|---|
| 587 | o Fixed problem with streams not being flushed on termination. | 
|---|
| 588 |  | 
|---|
| 589 | o Fixed define clash in float.h when in C99 mode. | 
|---|
| 590 |  | 
|---|
| 591 | o Fixed abend in GCC if TMPDIR or TMP was ending with a slash. | 
|---|
| 592 |  | 
|---|
| 593 | o Fixed crash in ld when having fixups to weak symbols. | 
|---|
| 594 |  | 
|---|
| 595 | o Fixed bad conversion of dll0*.o to OMF, the OMF version got an | 
|---|
| 596 | unwanted stack object. | 
|---|
| 597 |  | 
|---|
| 598 | o New functions: | 
|---|
| 599 | isblank(), ishexnumber(), isnumber(), mempcpy(), realpath(), | 
|---|
| 600 | strnlen(), asctime_r(), ctime_r(), gmtime_r(), localtime_r(), | 
|---|
| 601 | strerror_r(), usleep(). | 
|---|
| 602 |  | 
|---|
| 603 | o New functions & globals (from FreeBSD 5.1): | 
|---|
| 604 | imaxabs(), imaxdiv(), strtoimax(), strtoumax(), hcreate(), | 
|---|
| 605 | hdestroy(), hsearch(), insque(), lfind(), lsearch(), | 
|---|
| 606 | remque(), tdelete(), tfind(), tsearch(), twalk(), reallocf(), | 
|---|
| 607 | strsignal(), sys_signame, sys_siglist, sys_nsig, regcomp(), | 
|---|
| 608 | regerror(), regexec(), regfree(), + bsd db functions. | 
|---|
| 609 |  | 
|---|
| 610 | o New functions (from GLIBC 2.3.2): | 
|---|
| 611 | error(), error_at_line(), strndup(), argz_add(), | 
|---|
| 612 | argz_add_sep(), argz_append(), argz_count(), argz_create(), | 
|---|
| 613 | argz_create_sep(), argz_delete(), argz_extract(), | 
|---|
| 614 | argz_insert(), argz_next(), argz_replace(), argz_stringify(), | 
|---|
| 615 | posix_spawnp() posix_spawn(), posix_spawnattr_destroy(), | 
|---|
| 616 | posix_spawnattr_getflags(), posix_spawnattr_getpgroup(), | 
|---|
| 617 | posix_spawnattr_getschedparam(), | 
|---|
| 618 | posix_spawnattr_getschedpolicy(), | 
|---|
| 619 | posix_spawnattr_getsigdefault(), | 
|---|
| 620 | posix_spawnattr_getsigmask(), posix_spawnattr_init(), | 
|---|
| 621 | posix_spawnattr_setflags(), posix_spawnattr_setpgroup(), | 
|---|
| 622 | posix_spawnattr_setschedparam(), | 
|---|
| 623 | posix_spawnattr_setschedpolicy(), | 
|---|
| 624 | posix_spawnattr_setsigdefault(), | 
|---|
| 625 | posix_spawnattr_setsigmask(), | 
|---|
| 626 | posix_spawn_file_actions_addclose(), | 
|---|
| 627 | posix_spawn_file_actions_adddup2(), | 
|---|
| 628 | posix_spawn_file_actions_addopen(), | 
|---|
| 629 | posix_spawn_file_actions_destroy(), | 
|---|
| 630 | posix_spawn_file_actions_init() | 
|---|
| 631 |  | 
|---|
| 632 | o New headers: | 
|---|
| 633 | nerrno.h (toolkit compatability). | 
|---|
| 634 |  | 
|---|
| 635 | o New headers (from FreeBSD 5.1): | 
|---|
| 636 | search.h, sys/queue.h, net/if_types.h. | 
|---|
| 637 |  | 
|---|
| 638 | o New headers (from GLIBC 2.3.2): | 
|---|
| 639 | features.h (somewhat crippled), | 
|---|
| 640 | sys/gnu/cdefs.h (included from BSD styled sys/cdefs.h). | 
|---|
| 641 |  | 
|---|
| 642 | o Updated headers: | 
|---|
| 643 | stddef.h (FreeBSD, sys/stddef.h (FreeBSD), | 
|---|
| 644 | ulsitem.h (missing defines), os2emx.h, ... | 
|---|
| 645 |  | 
|---|
| 646 | o What I forgot... | 
|---|
| 647 |  | 
|---|
| 648 |  | 
|---|
| 649 | v3.2.2 Beta 3 Fix 1 (private build): | 
|---|
| 650 | ------------------------------------ | 
|---|
| 651 |  | 
|---|
| 652 | Fixes to LIBC: | 
|---|
| 653 |  | 
|---|
| 654 | o Crash if calloc was called before main(). | 
|---|
| 655 |  | 
|---|
| 656 | o TZ parsing of timezones such as PST8EDT. | 
|---|
| 657 |  | 
|---|
| 658 | o sigsetjmp() and siglongjmp() visibility. | 
|---|
| 659 |  | 
|---|
| 660 |  | 
|---|
| 661 | v3.2.2 Beta 3: | 
|---|
| 662 | -------------- | 
|---|
| 663 |  | 
|---|
| 664 | A few new features and fixes. | 
|---|
| 665 |  | 
|---|
| 666 | o Fixed a bunch of debug info problems. | 
|---|
| 667 |  | 
|---|
| 668 | o Added large file support. | 
|---|
| 669 |  | 
|---|
| 670 | o Enabled high memory support for LIBC. Two new options to GCC: | 
|---|
| 671 | -Zhigh-mem and -Zhigh-low. If the program is to be enabled for | 
|---|
| 672 | high memory use, specify -Zhigh-mem when linking. | 
|---|
| 673 |  | 
|---|
| 674 | Note that socket is not high memory enabled yet. | 
|---|
| 675 |  | 
|---|
| 676 | o Made LIBC preserve the FS selector. | 
|---|
| 677 |  | 
|---|
| 678 | o Added random() and *rand48() from BSD. | 
|---|
| 679 |  | 
|---|
| 680 | o Fixed crash with link386 and unresolved symbols. | 
|---|
| 681 |  | 
|---|
| 682 |  | 
|---|
| 683 | v3.2.2 Beta 2: | 
|---|
| 684 | -------------- | 
|---|
| 685 |  | 
|---|
| 686 | A few bugfixes and a some new features (as usual). | 
|---|
| 687 |  | 
|---|
| 688 | o Added file locking support to LIBC. | 
|---|
| 689 |  | 
|---|
| 690 | o Fixed _System and _Optlink bugs and made _Optlink support | 
|---|
| 691 | floating point argument passing in registers. | 
|---|
| 692 |  | 
|---|
| 693 | o Header updates related to limits and file locking primarily. | 
|---|
| 694 |  | 
|---|
| 695 | o Timezone fixes. | 
|---|
| 696 |  | 
|---|
| 697 | o Fixed some CRT init trouble in regards to getenv and putenv. | 
|---|
| 698 |  | 
|---|
| 699 | o And some other minor stuff.. | 
|---|
| 700 |  | 
|---|
| 701 |  | 
|---|
| 702 | v3.2.2 Beta 1: | 
|---|
| 703 | -------------- | 
|---|
| 704 |  | 
|---|
| 705 | A few bugfixes and a some new features. | 
|---|
| 706 |  | 
|---|
| 707 | o Locale support in libc. | 
|---|
| 708 |  | 
|---|
| 709 | o Implemented a different approach to OMF and weak symbols. This | 
|---|
| 710 | new hack performs pre-linking before invoking the OMF linker | 
|---|
| 711 | generating new .def files if needed and an extra object file with | 
|---|
| 712 | aliases to resolve the weak symbols correctly. | 
|---|
| 713 | The old approach will be used used when GCC_WEAKSYMS is present in | 
|---|
| 714 | the environment. | 
|---|
| 715 |  | 
|---|
| 716 | Please note that due to a bug in BFD, weak symbols don't work | 
|---|
| 717 | 100% correctly. This will be addressed as soon as we have | 
|---|
| 718 | performed the switch to a more recent version of binutils. | 
|---|
| 719 |  | 
|---|
| 720 | o A couple of new functions in libc, and a few corrections to | 
|---|
| 721 | existing in respect to namespaces. | 
|---|
| 722 |  | 
|---|
| 723 | o Addressed issues with calling conventions. We now detect | 
|---|
| 724 | incompatible calling conventions, emitting warnings and errors | 
|---|
| 725 | where appropriate. | 
|---|
| 726 |  | 
|---|
| 727 | o _Optlink is much better, but there are still some issues | 
|---|
| 728 | left. Passing prototyped floating point parameters to | 
|---|
| 729 | _Optlink doesn't work. Mixing of parameters which go into | 
|---|
| 730 | registers (eax, edx, ecx) and parameters which | 
|---|
| 731 | don't - void foo(int eax, struct sss s, int edx) - doesn't | 
|---|
| 732 | work. All these issues are being addressed and are expected | 
|---|
| 733 | to be fixed in the next build. | 
|---|
| 734 |  | 
|---|
| 735 | o Changed GCC to link with shared libc by default. This means | 
|---|
| 736 | that in order to link with the static libc one has to specify | 
|---|
| 737 | -static. It also means that -Zmtd or -Zcrtdll are no longer | 
|---|
| 738 | required for linking with shared libc and can be removed from | 
|---|
| 739 | all makescripts. | 
|---|
| 740 |  | 
|---|
| 741 | o Changed EMXOMFLD defaults to ilink from Visual Age for C++ | 
|---|
| 742 | v3.6.5 or later (preferably later). The emxomfld usage output | 
|---|
| 743 | will instruct you on how to use older linkers. For VAC308 and | 
|---|
| 744 | VAC365 linkers /dbgpack is specified if debuginfo is to be | 
|---|
| 745 | generated. Emxomf checks for EMXOMFLD_TYPE=link386 when choosing | 
|---|
| 746 | debug info level. | 
|---|
| 747 |  | 
|---|
| 748 | o Shipping three extra libc dlls: | 
|---|
| 749 | libc02.dbg:     Unstripped version of libc02.dll. This is | 
|---|
| 750 | identical except from the presense of debug | 
|---|
| 751 | info. | 
|---|
| 752 | libc02.prf:     Linked together from profiled enabled | 
|---|
| 753 | libraries using kProfiler. | 
|---|
| 754 | libc02.elh:     Standard libc but linked with an external | 
|---|
| 755 | electrical fence heap from kLibDbg. | 
|---|
| 756 | These libc02.* dlls can be used instead of libc02.dll. kLibDbg | 
|---|
| 757 | and kProfiler is available in separate zip files at same | 
|---|
| 758 | location as the rest of the InnoTek GCC suite. However these | 
|---|
| 759 | external tools are provided as is. (I might actually not find | 
|---|
| 760 | time to put them out yet.) | 
|---|
| 761 |  | 
|---|
| 762 | o Distribution is splitted into several zips: | 
|---|
| 763 | -core.zip:  All you really need. | 
|---|
| 764 | -dbg.zip:   Map files, unstripped tools and libs, and | 
|---|
| 765 | libc02.elh. | 
|---|
| 766 | -prf.zip:   Profiling libraries and libc02.prf. | 
|---|
| 767 | libc.zip:   The runtime libraries. (included in core.) | 
|---|
| 768 | The big zip is everything. | 
|---|
| 769 |  | 
|---|
| 770 | v3.2.2 Alpha 3: | 
|---|
| 771 | --------------- | 
|---|
| 772 |  | 
|---|
| 773 | Primarily bugfixes. | 
|---|
| 774 |  | 
|---|
| 775 | o Changed code generator for floating point truncations (double | 
|---|
| 776 | to int casts and such) so PM can freely mess up the fpu status. | 
|---|
| 777 |  | 
|---|
| 778 | o We were using the wrong float.h in two sense. We're now using | 
|---|
| 779 | the correct one which includes all the PC defines and | 
|---|
| 780 | prototypes. | 
|---|
| 781 |  | 
|---|
| 782 | o Fixed a few issues with error defines and tcpip. | 
|---|
| 783 | Note that some of the error defines have changed value in the | 
|---|
| 784 | process so we could become compatible with the tcpip stack | 
|---|
| 785 | and FreeBSD. | 
|---|
| 786 |  | 
|---|
| 787 | o Corrected bugs in a number of headers. | 
|---|
| 788 |  | 
|---|
| 789 | o Added more OS/2 prototypes and imports. There is still work | 
|---|
| 790 | left on the header part, | 
|---|
| 791 |  | 
|---|
| 792 | o Optimized emxomf debug info conversion. | 
|---|
| 793 |  | 
|---|
| 794 | o Wrapped bsdselect for BSD 4.4 header mode to implement | 
|---|
| 795 | bsdselect(). | 
|---|
| 796 |  | 
|---|
| 797 | o .... what did we forget... | 
|---|
| 798 |  | 
|---|
| 799 |  | 
|---|
| 800 | v3.2.2 Alpha 2: | 
|---|
| 801 | --------------- | 
|---|
| 802 |  | 
|---|
| 803 | A few bugfixes and a couple of new features. | 
|---|
| 804 |  | 
|---|
| 805 | o The TCP/IP headers and libraries scheme have been changed. | 
|---|
| 806 | The default is the current OS/2 tcpip toolkit (BSD 4.4 based). | 
|---|
| 807 | To target the older OS/2 tcpip stack (BSD 4.3 based) you must | 
|---|
| 808 | define TCPV40HDRS before including any TCP/IP headers and make | 
|---|
| 809 | sure usr/lib/tcpipv4 is searched before usr/lib (this is to | 
|---|
| 810 | get the right libsocket). It is recommended to use the -D | 
|---|
| 811 | compiler option for the define and either the LIBRARY_PATH or | 
|---|
| 812 | the -L compiler/linker option for the library. | 
|---|
| 813 |  | 
|---|
| 814 | o There are a couple of new and updated based on FreeBSD 5.1. | 
|---|
| 815 | sys\stdint.h and inttypes.h (and a few internal once) are new. | 
|---|
| 816 | sys\types.h and unistd.h are the ones most heavily updated. | 
|---|
| 817 | We're working on getting the headers and libc in a better | 
|---|
| 818 | shape standardwise to easy compatability and portability. | 
|---|
| 819 |  | 
|---|
| 820 | o A infinite loop in emxomf has been fixed. | 
|---|
| 821 |  | 
|---|
| 822 | o Linker error on sopen() has been corrected. | 
|---|
| 823 |  | 
|---|
| 824 | o .... what did we forget... | 
|---|
| 825 |  | 
|---|
| 826 |  | 
|---|
| 827 | v3.2.2 Alpha 1: | 
|---|
| 828 | --------------- | 
|---|
| 829 |  | 
|---|
| 830 | This is the first release from InnoTek, and it contains the InnoTek LIBC. | 
|---|
| 831 | In addition to the new LIBC there is a number of other major changes: | 
|---|
| 832 |  | 
|---|
| 833 | o Name mangling in OMF mode have changed. | 
|---|
| 834 | Until this release emxomf used to pretty much strip one leading '_' | 
|---|
| 835 | from symbols when converting them to omf. This is now longer done | 
|---|
| 836 | chiefly in order to correctly support mangling calling conventions | 
|---|
| 837 | like __stdcall and __cdecl. This change have the following side | 
|---|
| 838 | effects: | 
|---|
| 839 | - _System and __cdecl no longer produces the same names and hence | 
|---|
| 840 | all OS/2 API which are _System must be declared as _System in | 
|---|
| 841 | order to link. | 
|---|
| 842 | - Assembly code might need an extra underscore to work, or | 
|---|
| 843 | perhaps change the prototypes to _System. | 
|---|
| 844 | - Global variables are prepended and underscore, so mixing VAC and | 
|---|
| 845 | GCC, or accessing globals from asm, take care. | 
|---|
| 846 | (MSC v6.0 does this too, so it's not any uncommon practise.) | 
|---|
| 847 |  | 
|---|
| 848 | The OS/2 headers which are included are all updated to use _System. | 
|---|
| 849 |  | 
|---|
| 850 | o TCPIP headers are updated a quite a bit to match the toolkit ones | 
|---|
| 851 | and to reflect the fact that the new libc does not a having common | 
|---|
| 852 | handle space for files and sockets. These changes aren't 100% | 
|---|
| 853 | completed yet, and usage probably will uncover some issues left in | 
|---|
| 854 | there. Also for the programmer there is the following changes in | 
|---|
| 855 | the apis provided: | 
|---|
| 856 | - TCPV40HDRS are supported and should work like with the toolkit | 
|---|
| 857 | headers. It will alias all functions to tcpip40_ editions | 
|---|
| 858 | (using #defines) so we get the right imports thru -llibsocket. | 
|---|
| 859 | - There is no support for sockets in select(). To do select on | 
|---|
| 860 | sockets you will have to use bsdselect() or os2_select(). | 
|---|
| 861 | bsdselect() is only available for TCPV40HDRS. For | 
|---|
| 862 | !defined(TCPV40HDRS) fd_set is in the emx/bsd format and not the | 
|---|
| 863 | OS/2 tcpip v5.0 format. | 
|---|
| 864 | - Socket IOCTLs are not supported by the ioctl() libc function | 
|---|
| 865 | because of the separate handle space for sockets. For sockets | 
|---|
| 866 | so_ioctl() and os2_ioctl() are used. os2_ioctl() is not available | 
|---|
| 867 | when TCPV40HDRS is defined. According to the tcpref in v5.0 | 
|---|
| 868 | so_ioctl() only supports BSD ioctls. | 
|---|
| 869 | - writev() and readv() also clashes with libc. For socket handles | 
|---|
| 870 | use so_writev() and so_readv(). | 
|---|
| 871 |  | 
|---|
| 872 | o The prefered OMF linker is now ilink. link386 will fail with an odd | 
|---|
| 873 | error message if you tell gcc/g++ to make debug info. Set the | 
|---|
| 874 | EMXOMFLD_LINKER environment variable to value ilink in order to use | 
|---|
| 875 | ilink as OMF linker. | 
|---|
| 876 | It likely that we will change the default OMF linker to ilink in an | 
|---|
| 877 | later version of the GCC suite. | 
|---|
| 878 |  | 
|---|
| 879 | o .... what did we forget... | 
|---|