source: trunk/doc/ReleaseNotes.os2@ 1808

Last change on this file since 1808 was 1789, checked in by bird, 21 years ago

beta4

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