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

Last change on this file since 2531 was 2458, checked in by bird, 20 years ago

ga2

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