source: trunk/doc/ReleaseNotes.os2@ 2100

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

wrapping.

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