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

Last change on this file since 2442 was 2266, checked in by bird, 20 years ago

..

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