source: trunk/doc/ReleaseNotes.os2@ 2264

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

* empty log message *

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