source: trunk/doc/ReleaseNotes.os2@ 1664

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

3.3.5/0.6 beta 1

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