source: trunk/doc/ReleaseNotes.os2@ 1593

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

new alpha.

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