source: trunk/doc/ReleaseNotes.os2@ 1736

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

3.3.5 beta2

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