source: trunk/doc/ReleaseNotes.os2@ 2099

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

LIBC v0.6b5

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