source: branches/libc-0.6/doc/ReleaseNotes.os2@ 2454

Last change on this file since 2454 was 2444, checked in by bird, 20 years ago

0.6 release.

  • Property cvs2svn:cvs-rev set to 1.32
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 43.5 KB
Line 
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)'2004-2005 Knut St. Osmundsen (bird-gccspam@anduin.net)
8(C)'2003-2005 InnoTek Systemberatung GmbH (http://www.innotek.de)
9
10
11GCC v3.3.5 / LIBC v0.6:
12-----------------------
13
14 WARNINGS
15
16 There are several incompatible interface changes. So, you'll have
17 to rebuild static libraries and it's a good idea to do the same
18 thing for dynamic libs and programs too.
19
20 The build is not tested as much as I would've liked. I'm very
21 pressed on time as usual, but I really wanted to get the 0.6 stuff
22 out now. I can only hope everything still builds and works.
23
24
25 The Project is Moving
26
27 The source code has been migrated to subversion and now resides
28 on the svn.netlabs.org server. The server also provides an issue
29 tracker and project management service called trac. Check it
30 out at http://svn.netlabs.org/libc/.
31
32 The source code for this release (and any bugfix releases on
33 the 0.6 code base) can be checked out using this url:
34 http://svn.netlabs.org/repos/libc/branches/libc-0.6
35
36 Developers who wish to contribute to the 0.7 code will have to
37 diff against the trunk. There are several pending restructuring
38 tasks on 0.7, so don't expect everything to build fine or work
39 properly while those are still open. Anyway, the url:
40 http://svn.netlabs.org/repos/libc/trunk
41
42 Users are encouraged to join the gcc-user@netlabs.org mailing list
43 and use that list for questions rather than the InnoTek form. If
44 you think you've found a bug, you should first ask on the mailing
45 list, and if I decide it's a *real*, *new*, bug I'll open a
46 ticket for it and address it.
47
48 Developers which have patches for real bugs or enhancements can
49 create trac tickets and drop me or the gcc-user list a mail (we
50 haven't figure out how to get email notifications from trac yet).
51
52
53 New features:
54
55 o Added __libc_Back_gfProcessHandlePCBatchScripts and
56 __libc_Back_gfProcessHandleHashBangScripts (globale
57 variables) to turn on/off script handling in exec/spawn.
58 Very useful for shells.
59
60 o Changed the default stack of emxomfld and emxbind to 1MB,
61 it used to be 8KB and 8MB.
62
63 o open() can now open directories like on unix, and fchdir()
64 can chdir to the opened directories.
65
66 o Implemented much of the unix-attributes-in EA stuff.
67
68 o Implemented getdirents(), will be used to replace
69 opendir/readdir/seekdir/telldir/closedir in 0.7.
70
71 o Implemented the fcntl interface for setting and clearing
72 the O_NONBLOCK flag on sockets.
73
74
75 Bug fixes:
76
77 o Fixed bug preventing libc from working on legacy systems.
78 Kudos to Andrew Below for spotting it.
79
80 o Fixed ld bustage in rc1.
81
82 o Fixed fork bug in shm.
83
84 o Fixed spawn/exec bug where .exe was appended too early
85 preventing configure and other scripts without suffix
86 from being executed.
87
88 o Fixed several signal bugs (deadlocks, sigsuspend, pause).
89
90 o Fixed symbol truncation problem in emxomf.
91
92 o Fixed a generic error handling bug in ioctl, write, read,
93 dup and dup2 which was causing incorrect errno values.
94
95
96 Known Issues, see open ticket in trac:
97 http://svn.netlabs.org/libc/report/1
98
99
100GCC v3.3.5 / LIBC v0.6 - Release Candidate 1:
101---------------------------------------------
102
103 New features:
104
105 o Replaced the BSD regex with the GLIBC one.
106
107 o Replaced the BSD getopt with the GLIBC one adding optreset
108 for BSD compatability.
109
110 o Added libcrypt from GLIBC.
111
112 o Added argp from GLIBC.
113
114 o Added obstack from GLIBC.
115
116 o Finally added a crude [v]asprintf() implementation.
117
118 o Added missing math bits from GLIBC.
119
120 o New functions:
121 rawmemchr(), strchrnul(), fgets_unlocked(), gets_unlocked(),
122 fwide(), asprintf(), vasprintf(), get_current_dir_name(),
123 getdelim(), getline(), getlogin_r(), _getopt_internal(),
124 _getopt_internal_r(), _getopt_long_only_r(),
125 _getopt_long_r(), argp_error(), argp_failure(),
126 argp_fmtstream_ensure(), argp_fmtstream_free(),
127 argp_fmtstream_point(), argp_fmtstream_printf(),
128 argp_fmtstream_putc(), argp_fmtstream_puts(),
129 argp_fmtstream_set_lmargin(), argp_fmtstream_set_rmargin(),
130 argp_fmtstream_set_wmargin(), argp_fmtstream_update(),
131 argp_fmtstream_write(), argp_help(), argp_input(),
132 argp_make_fmtstream(), argp_parse(),
133 argp_program_bug_address(), argp_program_version(),
134 argp_program_version_hook(), argp_state_help(), argp_usage(),
135 cacos(), cacosf(), cacosh(), cacoshf(), cacoshl(), cacosl(),
136 cargf(), casin(), casinf(), casinh(), casinhf(), casinhl(),
137 casinl(), catan(), catanf(), catanh(), catanhf(), catanhl(),
138 catanl(), ccos(), ccosf(), ccosh(), ccoshf(), ccoshl(),
139 ccosl(), cexp(), cexpf(), cexpl(), clog(), clog10(),
140 clog10f(), clog10l(), clogf(), clogl(), cpow(), cpowf(),
141 cpowl(), cproj(), cprojf(), cprojl(), csin(), csinf(),
142 csinh(), csinhf(), csinhl(), csinl(), csqrt(), csqrtf(),
143 csqrtl(), ctan(), ctanf(), ctanh(), ctanhf(), ctanhl(),
144 ctanl(), exp10(), log2(), log2f(), log2l(), sincos(),
145 sincosf(), sincosl(), asinhl(), atanhl(), llrintl(),
146 lrintl(), erfcl(), erfl(), exp2l(), expm1l(), log1pl(),
147 logbl(), nearbyintl(), remainderl(), remquol(), cabsl(),
148 carg(), cargl(), gammal_r(), exp10f(), tgammaf(), tgammal(),
149 __fpu_control(), acoshl(), exp10l(), j0l(), j1l(), jnl(),
150 lgammal_r(), nexttowardl(), scalbl(), significandl(), y0l(),
151 y1l(), ynl(), gammal(), lgammal(), _obstack_allocated_p(),
152 obstack_alloc_failed_handler(), _obstack_begin(),
153 _obstack_begin_1(), obstack_exit_failure(), obstack_free(),
154 _obstack_memory_used(), _obstack_newchunk(), nftw(),
155 stpncpy(), crypt_r(), encrypt_r(), init_des(), init_des_r(),
156 md5_buffer(), md5_crypt(), md5_crypt_r(), md5_finish_ctx(),
157 md5_init_ctx(), md5_process_block(), md5_process_bytes(),
158 md5_read_ctx(), md5_stream(), setkey_r(), crypt(), encrypt(),
159 setkey(), _ufc_dofinalperm_r(), _ufc_doit_r(), _ufc_foobar(),
160 _ufc_mk_keytab_r(), _ufc_output_conversion_r(),
161 _ufc_setup_salt_r(), getmode(), optreset(), bsd_setmode(),
162 getpgid(), getsid(), setlinebuf(), re_comp(),
163 re_compile_fastmap(), re_compile_pattern(), re_exec(),
164 re_match(), re_match_2(), re_search(), re_search_2(),
165 re_set_registers() and re_set_syntax().
166
167
168 Bug fixes:
169
170 o Fixed various bugs related to __declspec.
171
172 o Fixed a bug in alloca which was causing all -O levels
173 to break.
174
175 o Added UniStrFromUcs and UniStrToUcs to uconv.h and libos2.
176
177 o Fixed quite a few libc issues, see the ChangeLog.LIBC
178 for full details.
179
180
181 Known problems:
182
183 o Static linking not possible - will be fixed.
184
185 o Job control will only be applied to thread 1 in a process.
186 This won't change.
187
188 o Missing some process group interfaces required for
189 job control. They'll show up soon.
190
191 o The HLL debug info isn't working 100% correctly.
192
193
194
195GCC v3.3.5 / LIBC v0.6 - Beta 5:
196--------------------------------
197
198 Thanks to Lorne, Froloff, nickk and Andy for sending me patches,
199 debugging problems and/or testing fixes.
200
201 New features:
202
203 o Added support for __declspec(dllexport), _Export
204 and __declspec(dllimport), the latter being a stub.
205 This also included adding N_EXP to the a.out format.
206
207 o Lot's of math stuff, mostly untested.
208
209 o Optimized zeroing of new file space in ftruncate and
210 chsize with knowlegde about the filesystem. HPFS, JFS
211 and FAT will do the zeroing for us.
212
213 o Support for unlocked stdio, with both BSD and GNU
214 extensions implemented.
215
216 o Execute .cmd, .bat, .btm and hash-bang scripts.
217
218 o Respect single quotes in argument handling (sed craze).
219
220 o Ported fts.h and the BSD implementation.
221
222 o Ported BSD sysctl. (Does not include the tcpip v4.1
223 sysctl() bits yet.)
224
225 o Ported the FreeBSD implementation of SysV semaphores
226 and shared memory.
227
228 o Env.var. LIBC_THREAD_MIN_STACK_SIZE can be used to
229 specify the minimum stack size for new threads. The
230 default minimum is 4096 bytes.
231
232 o Ported (lib)intl from glibc.
233
234 o New gcc arguments -Zargs-wild and -Zargs-resp.
235
236 o New functions (might not be 100% correct):
237 __bindtextdomain(), __dcgettext(), __dcigettext(),
238 __dcngettext(), __dgettext(), __dngettext(), __gettext(),
239 __gettext_extract_plural(), __gettext_free_exp(),
240 __gettextparse(), _nl_make_l10nflist(), __ngettext(),
241 __textdomain(), _nl_locale_name(), on_exit(), nanosleep(),
242 wmemcpy(), wmemchr(), wmemcmp(), wmemmove(), wmemset(),
243 gethrtime(), _nl_expand_alias(), _nl_explode_name(),
244 _nl_normalize_codeset(), __fbufsize(), __fpending(),
245 getpriority(), setpriority(), nice(), sysctl(),
246 sysctlbyname(), sysctlnametomib(), fchmod(), _chdir_os2(),
247 fts_children(), fts_close(), fts_get_clientptr(),
248 fts_get_stream(), fts_open(), fts_read(), fts_set(),
249 fts_set_clientptr(), mkfifo(), futimes(), _getenv_int(),
250 _getenv_long(), _getenv_longlong(), ftok(), semctl(),
251 semget(), semop(), shmat(), shmctl(), shmdt(), shmget(),
252 acosf(), acosh(), acoshf(), asinf(), asinh(), asinhf(),
253 atan2f(), atanf(), atanh(), atanhf(), cabs(), cabsf(),
254 cbrtf(), ceilf(), cimag(), cimagf(), cimagl(), conj(),
255 conjf(), conjl(), cosf(), coshf(), creal(), crealf(),
256 creall(), erf(), erfc(), erfcf(), erff(), exp2(), exp2f(),
257 expf(), expm1(), expm1f(), truncf(), fabsf(), fdim(),
258 fdimf(), fdiml(), fegetenv(), feholdexcept(),
259 feraiseexcept(), fesetexceptflag(), feupdateenv(), floorf(),
260 fma(), fmaf(), fmal(), fmax(), fmaxf(), fmaxl(), fmin(),
261 fminf(), fminl(), fmodf(), frexpf(), hypotf(), ilogb(),
262 ilogbf(), ilogbl(), ldexpf(), lgamma(), lgammaf(), llrint(),
263 llrintf(), llround(), llroundf(), llroundl(), log10f(),
264 log1p(), log1pf(), logb(), logbf(), logf(), lrint(),
265 lrintf(), lround(), lroundf(), lroundl(), modff(),
266 nearbyint(), nearbyintf(), nexttoward(), nexttowardf(),
267 powf(), remainder(), remainderf(), remquo(), remquof(),
268 rintf(), round(), roundf(), roundl(), scalbf(), scalbln(),
269 scalblnf(), scalblnl(), scalbn(), scalbnf(), scalbnl(),
270 signgam(), sinf(), sinhf(), sqrtf(), tanf(), tanhf(),
271 tgamma(), drem(), dremf(), finite(), finitef(), gamma(),
272 gammaf(), gammaf_r(), gamma_r(), j0(), j0f(), j1(), j1f(),
273 jn(), jnf(), lgammaf_r(), lgamma_r(), scalb(),
274 significand(), significandf(), powl(), y0(), y0f(), y1(),
275 y1f(), yn(), ynf(), arc4random(), arc4random_addrandom(),
276 arc4random_stir(), _mktemp(), mkdtemp(), mkstemps(),
277 clearerr_unlocked(), feof_unlocked(), ferror_unlocked(),
278 fgetc_unlocked(), fileno_unlocked(), flockfile(),
279 ftrylockfile(), funlockfile(), getchar_unlocked(),
280 getc_unlocked(), putchar_unlocked(), fputc_unlocked(),
281 putc_unlocked(), fputs_unlocked(), puts_unlocked() and
282 fread_unlocked().
283
284 Removed features:
285
286 o smallcnv is gone.
287
288 o old weak symbol handling in emxomf is gone.
289
290
291 Bug fixes:
292
293 o Numerous bugfixes in libc, see ChangeLog.LIBC for
294 details.
295
296 o Fixed problems with receiving signals during fork().
297
298 o Fixed bug in timer backend if the system had no
299 exiting timers. Kudos to Froloff for noticing this.
300
301
302 Known problems:
303
304 o Static linking not possible - will be fixed.
305
306 o Job control will only be applied to thread 1 in a process.
307 This won't change.
308
309 o Missing some process group interfaces required for
310 job control. They'll show up soon.
311
312 o The HLL debug info isn't working 100% correctly.
313
314
315 Todos before LIBC06.DLL:
316
317 0. Make my way through the glibc testsuite.
318
319 1. New select() from Brian (aka nuke).
320
321 2. Missing job pgid functions.
322
323
324
325GCC v3.3.5 / LIBC v0.6 - Beta 4:
326--------------------------------
327
328 Thanks to Lorne, Froloff and nickk for sending me patches,
329 debugging problems and testing fixes.
330
331 New features:
332
333 o Added st_dev and st_ino calculation for fstat and stat.
334
335 o Added most of the wide string functions.
336 N.B. the stream functions are still missing.
337
338 o New functions:
339 SafeDosStartSession(), wcscat(), wcschr(), wcscmp(),
340 wcscoll(), wcscpy(), wcscspn(), wcslcat(), wcslcpy(),
341 wcslen(), wcsncat(), wcsncmp(), wcsncpy(), wcspbrk(),
342 wcsrchr(), wcsspn(), wcsstr(), wcstok() and wcswidth()
343
344
345 Bug fixes:
346
347 o settimeofday() year problem.
348
349 o Some underflow/overflow problems tested for by many
350 Configure scripts was fixed by using a 64-bit time
351 type internally.
352
353 o fxsave/fxrstore problem in fork(). (This isn't tested
354 because lack of (reliable) obsolete hardware.)
355
356 o Fixed fork() and DosLoadModule problem in child.
357
358 o nl_langinfo(CODESET) now returns something useful,
359 adding a few ascii codeset aliases at the same time.
360
361 o Bug in socket inheritance over exec/spawn.
362
363 o Missing semphore and signal blocking when processing
364 external signals.
365
366 o Two rmdir errno problems, and made it fail on symlink.
367
368 o Fixed incorrect monetary locale for the "C" locale
369 after setlocale call.
370
371 o Fixed signal queue node leak.
372
373 o Fixed missing release of signal semaphore and signal
374 unblocking in a failure code path.
375
376 o Fixed a few filehandle conversion bugs in os2_select.
377
378 o Fixed libsocket to set errno to ENOSOCK when given a
379 filehandle instead of a socket. Previous was ENOSYS.
380
381 o Corrected NP_NBLK define in os2emx.h.
382
383 o Export __mcount stub. LIBCxx.prf export non-stub.
384
385 o Added missing libdl stub libraries (dlfcn is in libc
386 as of last release).
387
388 o Fixed missing WNOHANG handling in the wait functions.
389
390 o Adjusted the ECHILD and EINVAL errnos usage in
391 the wait functions to match the waitpid() spec.
392
393 o ???
394
395 Todos before LIBC06.DLL:
396
397 0. Fix all bugs. :-)
398
399 1. Reimplement opendir in BSD style (+fchdir).
400
401 2. Shared IPC structures for XSI msq, sem and shm.
402
403 3. Missing job pgid functions.
404
405 4. Port GLIBC intl/*. gettext is a pita! because it's
406 passing FILE pointers around between different LIBCs.
407 objdump is constantly broken between LIBC versions.
408
409 5. Figure out the EA exclusive read access trouble.
410
411 6. Calc ino_t on file creation and store it in EAs.
412
413 7. Some sysctl() required for coreutils + a bit
414 of tcpip additions.
415
416 8. adjtime() implementation.
417
418
419
420GCC v3.3.5 / LIBC v0.6 - Beta 2:
421--------------------------------
422
423 New features:
424
425 o wchar.h and wctype.h and much of the non-stream functions
426 declared therein are implemented. Though, the FreeBSD
427 string/w*.c functions are still in the porting queue.
428
429 o Added __mcount stub to all LIBC DLLs but the .prf one which
430 is forwarding __mcount from kProfile.dll.
431
432 o DosLoadModuleEx and DosFreeModuleEx was created to support
433 loaded modules over a fork(). dlopen/dlclose backend was
434 changed to use these.
435
436 o Fixed rand() range problem. Using the BSD code for this
437 too, which means a new algorithm.
438
439 o Update all BSD source-files (not headers) to FreeBSD 5.3
440 level.
441
442 o New functions:
443 DosLoadModuleEx(), DosFreeModuleEx(), sranddev(),
444 getsubopt(), rand_r(), llabs(), lldiv(), dlfunc(),
445 issetugid(), pread(), pwrite(), _UTF8_mbrtowc(),
446 _UTF8_mbsinit(), _UTF8_mbsnrtowcs(), _UTF8_wcrtomb(),
447 _UTF8_wcsnrtombs(), digittoint(), isideogram(),
448 isrune(), iswalnum(), iswalpha(), iswascii(),
449
450 iswblank(), iswcntrl(), iswctype(), iswdigit(),
451 iswgraph(), iswhexnumber(), iswideogram(), iswlower(),
452 iswnumber(), iswprint(), iswpunct(), iswrune(),
453 iswspace(), iswupper(), iswxdigit(), btowc(), mbrlen(),
454 mbrtowc(), mbsinit(), mbsnrtowcs(), mbsrtowcs(),
455 nl_langinfo(), towctrans(), wcrtomb(), wcsftime(),
456 wcsnrtombs(), wcsrtombs(), wcstod(), wcstof(),
457 wcstoimax(), wcstol(), wcstold(), wcstoll(), wcstoul(),
458 wcstoull(), wcstoumax(), wctob(), wctrans(), wctype(),
459 towlower(), towupper().
460
461
462 Bug fixes:
463
464 o Fixed missing WNOHANG handling in waitpid(), wait4()
465 and waitid().
466
467 o Corrected several severe bugs in the path resolver.
468
469 o Fixed handling of paths ending with slash.
470
471 o Fixed weird fork() problem which showed up as a heap
472 deadlock.
473
474 o Fixed broken _getdrive().
475
476 o Made _chdrive() return -1 on error. It used to always
477 return success earlier. (don't ask me why)
478
479 o Fixed incorrect handling of -shared in GCC. It should
480 be treated as -Zdll.
481
482 o Various incorrect assertions in the strict/log build.
483
484 o ...
485
486 Known Limitiations/Problems:
487
488 o Static linking not possible - might be fixed later.
489
490 o Job control will only be applied to thread 1 in a process.
491 This won't change.
492
493 o Missing some process group interfaces required for
494 job control. They'll show up soon I hope.
495
496 o Not tested too well. Especially the regex update.
497
498 Todos before LIBC06.DLL:
499
500 0. Fix all bugs. :-)
501
502 1. Implement new ino_t scheme and reimplement opendir
503 in BSD style while doing so (+fchdir).
504
505 2. Shared IPC structures for XSI msq, sem and shm.
506
507 3. Port string/w* functions.
508
509 4. Missing job pgid functions.
510
511 5. Port GLIBC intl/*. gettext is a pita! because it's
512 passing FILE pointers around between different LIBCs.
513 objdump is constantly broken between LIBC versions.
514
515
516
517GCC v3.3.5 / LIBC v0.6 - Beta 1:
518--------------------------------
519
520 New features:
521
522 o setitimer/alarm implementation. Needs some review later
523 the accuracy isn't extacly great.
524
525 o Added a couple of missing os2emx.h features.
526
527 o Some more 16-bit thunkers.
528
529 Bug fixes:
530
531 o Select worker called wrong tcpip function.
532
533 o Incorrect assertion during thread destruction.
534
535 o Fixed broken chdir and getdrive.
536
537 o Improved deadlock detection (fmutex have changed,
538 thus stdio FILE is also changed).
539
540 o ...
541
542
543 Known Limitiations/Problems:
544
545 o Static linking not possible - will be fixed.
546
547 o Job control will only be applied to thread 1 in a process.
548 This won't change.
549
550 o Missing some process group interfaces required for
551 job control. They'll show up soon.
552
553 o Doesn't evaluate trailing slash in paths as directory
554 specifier, it's currently ignored.
555
556
557
558GCC v3.3.5 / LIBC v0.6 - Alpha 3:
559---------------------------------
560
561 This release have been timebombed and will stop working at the
562 end of December 2004. The reason for this is that data structures
563 shared between LIBC 0.6 and all future LIBC versions are not yet
564 quite finalized. (For your comfort the timebomb will go away when
565 the betas start, and this is the last planned LIBC v0.6 alpha.)
566
567
568 New Features:
569
570 o Updated GCC to version 3.3.5.
571
572 o Replaced the signal implementation. The new implementation
573 is much closer to the POSIX specs and implements a lot of
574 new interfaces.
575
576 o Experimental delayed loading import libraries. emximp have
577 a new -l option for generating such libraries. At present
578 emximp can only generate a.out libraries of this kind - so
579 use emxomf to convert to OMF.
580
581 o The dlfcn.h functions are in LIBC now.
582
583 o New functions:
584 getgrouplist(), initgroups(), memalign(), valloc(),
585 mprotect(), _signal_os2(), _signal_sysv(),
586 __sigpause_bsd(), bsd_signal(), killpg(), psignal(),
587 sigaltstack(), sigblock(), sighold(), sigignore(),
588 siginterrupt(), sigpause(), sigrelse(), sigsetmask(),
589 sigtimedwait(), sigvec(), sigwait(), sigwaitinfo(),
590 sigqueue(), sigset(), getgrgid(), getpwnam(),
591 getpwuid(), setegid(), seteuid(), setregid(),
592 setresgid(), setresuid(), setreuid(),
593 setrgid(), setruid(), waitid(), wait3(),
594 wait4() and getopt_long_only().
595
596
597 Bug fixes;
598
599 o Sockets were broken on some systems. Hopefully, this
600 should be corrected now.
601
602 o stat() failed on a file open for writing.
603
604 o fork() didn't work for processes which allocated lot's
605 of memory. Fixed incorrect syncing of memory objects.
606
607 o ...
608
609
610 Known Limitiations/Problems:
611
612 o Static linking not possible - will be fixed.
613
614 o alarm() is still missing. Code is 80% done but didn't
615 make it for the release.
616
617 o Job control will only be applied to thread 1 in a process.
618 This won't change.
619
620 o Missing some process group interfaces required for
621 job control. They'll show up soon.
622
623
624
625GCC v3.3.4 / LIBC v0.6 - Alpha 2:
626---------------------------------
627
628 This release have been timebombed and will stop work at the
629 end of October 2004. The reason for this is that data structures
630 shared between LIBC 0.6 and all future LIBC versions are not yet
631 finalized.
632
633
634 New Features:
635
636 o Updated GCC to version 3.3.4.
637
638 o 2nd fork() implementation.
639 All binaries are by default forkable, use the link option
640 -Zno-fork to disable this.
641 The fork implementation rendered _rmutex useless and it
642 has been removed.
643
644 o Symlinks using EAs. This is work in progress. One of the
645 limitiations is that readir will not report DT_LNK yet.
646
647 o Unix compartment using chroot(). This offers a
648 redirection of '/' to the chroot'ed root. The entrance
649 to the compartment is the '/'. The exits are drive letters.
650 The unix compartment is inherited by LIBC child processes.
651
652 o getcwd() will now return the driveletter too (as VAC does)
653 when not inside the unix compartement.
654 _getcwdux() has been provided for porters which requires
655 behaviour like the old getcwd() implementation.
656
657 o Paths to unix files #defined in headers are now prefixed
658 with "/@unixroot" which will be redirected to where the
659 environment variable UNIXROOT points. After calling
660 chroot() the target of "/@unixroot" will be changed too.
661
662 o LIBC specific path rewriting (redirection). Built in is
663 "/dev/null", "/dev/tty" and "/@unixroot".
664 The environment variable LIBC_PATHREWRITERS is examined
665 during init and DLLs specified in it are loaded and called.
666 See src/emx/src/sys/pathrewrite.c for more details.
667
668 o Non-unix like mode - link option -Zno-unix.
669 This affects slashes and various other Unix-like features
670 like for instance fork and symlinks.
671
672 o Printf et al. have been extended to support some new format
673 specifiers. (It's still lacking a bit to be SuS comforming.)
674
675 o Sockets handles are now inherited by LIBC child processes.
676
677 o LIBC specific filehandle flags are now inherited by LIBC
678 child processes.
679
680 o The GCCxyz.DLL is no longer needed when LIBC is used.
681 However it is still shipped for special cases where LIBC
682 isn't needed.
683
684 o A good bunch of 'new' functions both from the SuS and from
685 various Unix flavors, even one or two PC functions have been
686 added. Accompanying these are new headers and header updates.
687 Here are most of the new function names:
688 __strverscmp(), _atfork_callback(), _getcwdux(),
689 _getdcwd(), _nsdbtaddsrc(), _nsdbtput(), _nsdispatch(),
690 _realrealpath(), canonicalize_file_name(), catclose(),
691 catgets(), catopen(), chown(), chroot(), eaccess(),
692 endgrent(), endnetgrent(), endusershell(), fchown(),
693 fstatfs(), fstatvfs(), getdtablesize(), getfsstat(),
694 getgrent(), getgrent_r(), getgrgid_r(), getgrnam_r(),
695 getloadavg(), getmntinfo(), getnetgrent(),
696 getpwent_r(), getpwnam_r(), getpwuid_r(), getrlimit(),
697 getusershell(), innetgr(), lchown(), link(), mknod(),
698 readlink(), setgrent(), setgroupent(), setgroups(),
699 setnetgrent(), setpassent(), setrlimit(),
700 setusershell(), sl_add(), sl_find(), sl_free(),
701 sl_init(), statfs(), statvfs(), strmode(), strtok_r(),
702 symlink() and sync().
703
704
705 Bug fixes:
706
707 o setlocale() have been rewritten. The code page is now
708 taken from the locale rather than OS/2. Old behaviour
709 is used if environment variable LIBC_SETLOCALE_OLDSTYLE
710 is defined.
711
712 o Buggy strspn() replaced by BSD implementation.
713
714 o Thread backend have been reworked fixing certain
715 problems when LIBC was loaded and initialized in threads
716 other than the primary one. A LIBC specific TLS api
717 was created during this effort.
718
719 o Fixed a missing export from GCCxyz.dll which was causing
720 incorrect behaviour of C++ exceptions in all previous
721 releases.
722
723 o Fixed a buffer overrun in iconv_open() which caused a
724 corruption of the FS selector register, thus crashing
725 the processing.
726
727 o ...
728
729
730 Known limitations and bugs:
731
732 o mktime() works incorrectly for exterme values causing
733 configure test to fail.
734
735 o NSS probably doesn't work.
736
737 o Trailing slashes of a path specification are not
738 handled correctly after the rewrite of the path
739 handling.
740
741 o New path handling is not DBCS ready.
742
743 o Socket handle duplication have not been implemented yet.
744
745 o The __<syscall> function are in the process of being
746 removed.
747
748 o Not tested with mozilla.
749
750
751
752v3.2.2 Beta 4 CSD 1:
753--------------------
754
755 Bug fixes:
756
757 o Fixed crash in file stream allocation code.
758
759 o Fixed incorrect time on machines which had DATETIME::timezone
760 set. This fix changes the time granularity from hundredths of
761 a second to milliseconds.
762
763 o Added the SPBCDATA struct, the defines FCF_CLOSEBUTTON and
764 BS_NOTEBOOKBUTTON and infosegment structs to os2emx.h
765
766 o Fixed bug in sys/locale.h where it hid the lconv struct.
767
768 o Fixed missing error number translations in getsockopt() and
769 setsockopt().
770
771 o Fixed potential conflict caused by sys/types.h not defining
772 _KEY_T with the key_t typedef.
773
774 o Fixed missing 64bit I/O support in ftell(), fstat() and stat().
775
776 o Fixed UCS-2 codepage mappings.
777
778 o Fixed problem with emxbind not recognizing option -e and
779 a problem with case sensitivity in the export checking.
780
781
782v3.2.2 Beta 4:
783--------------
784
785 (The changelog is removed, thus the release notes are more detailed.)
786
787 New features and fixes:
788
789 o Filehandle rewrite. Files, pipes and sockets now share the same
790 handle space.
791
792 o Updated binutils from v2.11.2 to v2.14 adding as-elf.exe and
793 ld-elf.exe as goodies for the adventurous.
794
795 o GCC defines __INNOTEK_LIBC__=0x005.
796 The value reflects the LIBC version, form: 0xGMM
797 Where G=major version and MM=middle version numbers.
798
799 o Changed library search algorithms for the linkers (emxomfld
800 and ld). Three variations, static, shared and shared+dll.
801 (The options indicated corresponds to what binutils 2.12.x
802 documents.)
803 static: (-Bstatic, -non_shared, -dn, -static)
804 1. libfoo_s.a
805 2. foo_s.a
806 3. libfoo.a
807 4. foo.a
808 shared: (default, -Bshared, -call_shared, -dy)
809 1. libfoo_dll.a
810 2. foo_dll.a
811 3. libfoo.a
812 4. foo.a
813 5. libfoo_s.a
814 6. foo_s.a
815 shared+dll: (-Zdll-search with -Bshared, -call_shared, -dy)
816 1. libfoo_dll.a
817 2. foo_dll.a
818 3. libfoo.a
819 4. foo.a
820 5. foo.dll
821 6. libfoo_s.a
822 7. foo_s.a
823
824 o Added some deadlock checking/termination checks to semphores.
825
826 o Added macros to os2emx.h for preserving FPU control word and
827 applied these to certain read and write operations in LIBC.
828
829 o Added feature to emxomfld to automatically convert a.out
830 libraries and objects to OMF (using temporary files). Enabled
831 by default but can be disabled by the option -Zno-autoconv.
832
833 o Added support to emximp for dlls.
834
835 o Added support for automatic conversion of dlls to temporary
836 import libraries emxomfld and ld.
837
838 o Added getopt_long() and changed getopt() to FreeBSD
839 implementations.
840
841 o Added a few more code page aliases.
842
843 o Added optional breakpoint in abort. The presense of the env.var.
844 LIBC_BREAKPOINT_ABORT triggers the breakpoint instruction.
845
846 o Added syslog interfaces (contrib from Yuri Dario).
847
848 o Added to libc and updated BSD db code to FreeBSD 5.1 level.
849
850 o Added to libc and updated regex code to FreeBSD 5.1 level.
851
852 o Ported the posix spawn api from GLIBC v2.3.2.
853
854 o Updated with os2emx.h flags for DosQueryMemState().
855
856 o Changed size_t to unsigned int (from unsigned long int) and
857 ptrdiff_t to signed int (from signed long int) to comply with
858 most of the other i386 environments.
859
860 o Changed abort and default signal termination messages to say
861 which process it's printed from.
862
863 o Changed the glob() and globfree() implemenation with a port of
864 the FreeBSD 5.1 implemenation.
865
866 o Changed so_ioctl() to os2_ioctl() to better match the toolkit.
867
868 o Changed time_t to be signed as in BSD & linux.
869 (Negative values means date/time before epoc.)
870
871 o Changed to FreeBSD implementation of difftime().
872
873 o Increased default stream buffer size to 2 pages.
874
875 o Workaround for DosSetFileLocksL() on non JFS volumes.
876
877 o Workaround for bad FIL_STANDARDL buffer handling in os2krnl.
878
879 o Fixed waitpid() to respect the WNOHANG flag.
880
881 o Fixed strerror() to set errno if an invalid error number is
882 specified.
883
884 o Fixed problem with emxexp emitting ordinal without being told.
885
886 o Fixed broken setenv().
887
888 o Fixed errno value for read() and write() when the handle isn't
889 opened for that operation.
890
891 o Fixed a bad record length problem in emxomf.
892
893 o Fixed type_tag too long issue in emxomf.
894
895 o Fixed repetition of main source file in HLL debuginfo (emxomf).
896
897 o Fixed weakld problem with selfrefering aliases.
898
899 o Fixed weakld problem with PUBLIC and COMM clash.
900
901 o Fixed problem with streams not being flushed on termination.
902
903 o Fixed define clash in float.h when in C99 mode.
904
905 o Fixed abend in GCC if TMPDIR or TMP was ending with a slash.
906
907 o Fixed crash in ld when having fixups to weak symbols.
908
909 o Fixed bad conversion of dll0*.o to OMF, the OMF version got an
910 unwanted stack object.
911
912 o New functions:
913 isblank(), ishexnumber(), isnumber(), mempcpy(), realpath(),
914 strnlen(), asctime_r(), ctime_r(), gmtime_r(), localtime_r(),
915 strerror_r(), usleep().
916
917 o New functions & globals (from FreeBSD 5.1):
918 imaxabs(), imaxdiv(), strtoimax(), strtoumax(), hcreate(),
919 hdestroy(), hsearch(), insque(), lfind(), lsearch(),
920 remque(), tdelete(), tfind(), tsearch(), twalk(), reallocf(),
921 strsignal(), sys_signame, sys_siglist, sys_nsig, regcomp(),
922 regerror(), regexec(), regfree(), + bsd db functions.
923
924 o New functions (from GLIBC 2.3.2):
925 error(), error_at_line(), strndup(), argz_add(),
926 argz_add_sep(), argz_append(), argz_count(), argz_create(),
927 argz_create_sep(), argz_delete(), argz_extract(),
928 argz_insert(), argz_next(), argz_replace(), argz_stringify(),
929 posix_spawnp() posix_spawn(), posix_spawnattr_destroy(),
930 posix_spawnattr_getflags(), posix_spawnattr_getpgroup(),
931 posix_spawnattr_getschedparam(),
932 posix_spawnattr_getschedpolicy(),
933 posix_spawnattr_getsigdefault(),
934 posix_spawnattr_getsigmask(), posix_spawnattr_init(),
935 posix_spawnattr_setflags(), posix_spawnattr_setpgroup(),
936 posix_spawnattr_setschedparam(),
937 posix_spawnattr_setschedpolicy(),
938 posix_spawnattr_setsigdefault(),
939 posix_spawnattr_setsigmask(),
940 posix_spawn_file_actions_addclose(),
941 posix_spawn_file_actions_adddup2(),
942 posix_spawn_file_actions_addopen(),
943 posix_spawn_file_actions_destroy(),
944 posix_spawn_file_actions_init()
945
946 o New headers:
947 nerrno.h (toolkit compatability).
948
949 o New headers (from FreeBSD 5.1):
950 search.h, sys/queue.h, net/if_types.h.
951
952 o New headers (from GLIBC 2.3.2):
953 features.h (somewhat crippled),
954 sys/gnu/cdefs.h (included from BSD styled sys/cdefs.h).
955
956 o Updated headers:
957 stddef.h (FreeBSD, sys/stddef.h (FreeBSD),
958 ulsitem.h (missing defines), os2emx.h, ...
959
960 o What I forgot...
961
962
963v3.2.2 Beta 3 Fix 1 (private build):
964------------------------------------
965
966 Fixes to LIBC:
967
968 o Crash if calloc was called before main().
969
970 o TZ parsing of timezones such as PST8EDT.
971
972 o sigsetjmp() and siglongjmp() visibility.
973
974
975v3.2.2 Beta 3:
976--------------
977
978 A few new features and fixes.
979
980 o Fixed a bunch of debug info problems.
981
982 o Added large file support.
983
984 o Enabled high memory support for LIBC. Two new options to GCC:
985 -Zhigh-mem and -Zhigh-low. If the program is to be enabled for
986 high memory use, specify -Zhigh-mem when linking.
987
988 Note that socket is not high memory enabled yet.
989
990 o Made LIBC preserve the FS selector.
991
992 o Added random() and *rand48() from BSD.
993
994 o Fixed crash with link386 and unresolved symbols.
995
996
997v3.2.2 Beta 2:
998--------------
999
1000 A few bugfixes and a some new features (as usual).
1001
1002 o Added file locking support to LIBC.
1003
1004 o Fixed _System and _Optlink bugs and made _Optlink support
1005 floating point argument passing in registers.
1006
1007 o Header updates related to limits and file locking primarily.
1008
1009 o Timezone fixes.
1010
1011 o Fixed some CRT init trouble in regards to getenv and putenv.
1012
1013 o And some other minor stuff..
1014
1015
1016v3.2.2 Beta 1:
1017--------------
1018
1019 A few bugfixes and a some new features.
1020
1021 o Locale support in libc.
1022
1023 o Implemented a different approach to OMF and weak symbols. This
1024 new hack performs pre-linking before invoking the OMF linker
1025 generating new .def files if needed and an extra object file with
1026 aliases to resolve the weak symbols correctly.
1027 The old approach will be used used when GCC_WEAKSYMS is present in
1028 the environment.
1029
1030 Please note that due to a bug in BFD, weak symbols don't work
1031 100% correctly. This will be addressed as soon as we have
1032 performed the switch to a more recent version of binutils.
1033
1034 o A couple of new functions in libc, and a few corrections to
1035 existing in respect to namespaces.
1036
1037 o Addressed issues with calling conventions. We now detect
1038 incompatible calling conventions, emitting warnings and errors
1039 where appropriate.
1040
1041 o _Optlink is much better, but there are still some issues
1042 left. Passing prototyped floating point parameters to
1043 _Optlink doesn't work. Mixing of parameters which go into
1044 registers (eax, edx, ecx) and parameters which
1045 don't - void foo(int eax, struct sss s, int edx) - doesn't
1046 work. All these issues are being addressed and are expected
1047 to be fixed in the next build.
1048
1049 o Changed GCC to link with shared libc by default. This means
1050 that in order to link with the static libc one has to specify
1051 -static. It also means that -Zmtd or -Zcrtdll are no longer
1052 required for linking with shared libc and can be removed from
1053 all makescripts.
1054
1055 o Changed EMXOMFLD defaults to ilink from Visual Age for C++
1056 v3.6.5 or later (preferably later). The emxomfld usage output
1057 will instruct you on how to use older linkers. For VAC308 and
1058 VAC365 linkers /dbgpack is specified if debuginfo is to be
1059 generated. Emxomf checks for EMXOMFLD_TYPE=link386 when choosing
1060 debug info level.
1061
1062 o Shipping three extra libc dlls:
1063 libc02.dbg: Unstripped version of libc02.dll. This is
1064 identical except from the presense of debug
1065 info.
1066 libc02.prf: Linked together from profiled enabled
1067 libraries using kProfiler.
1068 libc02.elh: Standard libc but linked with an external
1069 electrical fence heap from kLibDbg.
1070 These libc02.* dlls can be used instead of libc02.dll. kLibDbg
1071 and kProfiler is available in separate zip files at same
1072 location as the rest of the InnoTek GCC suite. However these
1073 external tools are provided as is. (I might actually not find
1074 time to put them out yet.)
1075
1076 o Distribution is splitted into several zips:
1077 -core.zip: All you really need.
1078 -dbg.zip: Map files, unstripped tools and libs, and
1079 libc02.elh.
1080 -prf.zip: Profiling libraries and libc02.prf.
1081 libc.zip: The runtime libraries. (included in core.)
1082 The big zip is everything.
1083
1084v3.2.2 Alpha 3:
1085---------------
1086
1087 Primarily bugfixes.
1088
1089 o Changed code generator for floating point truncations (double
1090 to int casts and such) so PM can freely mess up the fpu status.
1091
1092 o We were using the wrong float.h in two sense. We're now using
1093 the correct one which includes all the PC defines and
1094 prototypes.
1095
1096 o Fixed a few issues with error defines and tcpip.
1097 Note that some of the error defines have changed value in the
1098 process so we could become compatible with the tcpip stack
1099 and FreeBSD.
1100
1101 o Corrected bugs in a number of headers.
1102
1103 o Added more OS/2 prototypes and imports. There is still work
1104 left on the header part,
1105
1106 o Optimized emxomf debug info conversion.
1107
1108 o Wrapped bsdselect for BSD 4.4 header mode to implement
1109 bsdselect().
1110
1111 o .... what did we forget...
1112
1113
1114v3.2.2 Alpha 2:
1115---------------
1116
1117 A few bugfixes and a couple of new features.
1118
1119 o The TCP/IP headers and libraries scheme have been changed.
1120 The default is the current OS/2 tcpip toolkit (BSD 4.4 based).
1121 To target the older OS/2 tcpip stack (BSD 4.3 based) you must
1122 define TCPV40HDRS before including any TCP/IP headers and make
1123 sure usr/lib/tcpipv4 is searched before usr/lib (this is to
1124 get the right libsocket). It is recommended to use the -D
1125 compiler option for the define and either the LIBRARY_PATH or
1126 the -L compiler/linker option for the library.
1127
1128 o There are a couple of new and updated based on FreeBSD 5.1.
1129 sys\stdint.h and inttypes.h (and a few internal once) are new.
1130 sys\types.h and unistd.h are the ones most heavily updated.
1131 We're working on getting the headers and libc in a better
1132 shape standardwise to easy compatability and portability.
1133
1134 o A infinite loop in emxomf has been fixed.
1135
1136 o Linker error on sopen() has been corrected.
1137
1138 o .... what did we forget...
1139
1140
1141v3.2.2 Alpha 1:
1142---------------
1143
1144 This is the first release from InnoTek, and it contains the InnoTek LIBC.
1145 In addition to the new LIBC there is a number of other major changes:
1146
1147 o Name mangling in OMF mode have changed.
1148 Until this release emxomf used to pretty much strip one leading '_'
1149 from symbols when converting them to omf. This is now longer done
1150 chiefly in order to correctly support mangling calling conventions
1151 like __stdcall and __cdecl. This change have the following side
1152 effects:
1153 - _System and __cdecl no longer produces the same names and hence
1154 all OS/2 API which are _System must be declared as _System in
1155 order to link.
1156 - Assembly code might need an extra underscore to work, or
1157 perhaps change the prototypes to _System.
1158 - Global variables are prepended and underscore, so mixing VAC and
1159 GCC, or accessing globals from asm, take care.
1160 (MSC v6.0 does this too, so it's not any uncommon practise.)
1161
1162 The OS/2 headers which are included are all updated to use _System.
1163
1164 o TCPIP headers are updated a quite a bit to match the toolkit ones
1165 and to reflect the fact that the new libc does not a having common
1166 handle space for files and sockets. These changes aren't 100%
1167 completed yet, and usage probably will uncover some issues left in
1168 there. Also for the programmer there is the following changes in
1169 the apis provided:
1170 - TCPV40HDRS are supported and should work like with the toolkit
1171 headers. It will alias all functions to tcpip40_ editions
1172 (using #defines) so we get the right imports thru -llibsocket.
1173 - There is no support for sockets in select(). To do select on
1174 sockets you will have to use bsdselect() or os2_select().
1175 bsdselect() is only available for TCPV40HDRS. For
1176 !defined(TCPV40HDRS) fd_set is in the emx/bsd format and not the
1177 OS/2 tcpip v5.0 format.
1178 - Socket IOCTLs are not supported by the ioctl() libc function
1179 because of the separate handle space for sockets. For sockets
1180 so_ioctl() and os2_ioctl() are used. os2_ioctl() is not available
1181 when TCPV40HDRS is defined. According to the tcpref in v5.0
1182 so_ioctl() only supports BSD ioctls.
1183 - writev() and readv() also clashes with libc. For socket handles
1184 use so_writev() and so_readv().
1185
1186 o The prefered OMF linker is now ilink. link386 will fail with an odd
1187 error message if you tell gcc/g++ to make debug info. Set the
1188 EMXOMFLD_LINKER environment variable to value ilink in order to use
1189 ilink as OMF linker.
1190 It likely that we will change the default OMF linker to ilink in an
1191 later version of the GCC suite.
1192
1193 o .... what did we forget...
Note: See TracBrowser for help on using the repository browser.