source: trunk/doc/ReleaseNotes.os2@ 1301

Last change on this file since 1301 was 1274, checked in by bird, 22 years ago

Updated.

  • Property cvs2svn:cvs-rev set to 1.18
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 16.1 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
9
[1227]10
[1194]11v3.2.2 Beta 4:
[816]12--------------
[1227]13
14 (The changelog is removed, thus the release notes are more detailed.)
15
16 New features and fixes:
17
18 o Filehandle rewrite. Files, pipes and sockets now share the same
19 handle space.
[1274]20
21 o Updated binutils from v2.11.2 to v2.14 adding as-elf.exe and
22 ld-elf.exe as goodies for the adventurous.
[1227]23
24 o GCC defines __INNOTEK_LIBC__=0x005.
[1225]25 The value reflects the LIBC version, form: 0xGMM
[1227]26 Where G=major version and MM=middle version numbers.
27
[1229]28 o Changed library search algorithms for the linkers (emxomfld
29 and ld). Three variations, static, shared and shared+dll.
30 (The options indicated corresponds to what binutils 2.12.x
31 documents.)
[1224]32 static: (-Bstatic, -non_shared, -dn, -static)
[1227]33 1. libfoo_s.a
34 2. foo_s.a
35 3. libfoo.a
36 4. foo.a
37 shared: (default, -Bshared, -call_shared, -dy)
38 1. libfoo_dll.a
39 2. foo_dll.a
40 3. libfoo.a
41 4. foo.a
42 5. libfoo_s.a
43 6. foo_s.a
44 shared+dll: (-Zdll-search with -Bshared, -call_shared, -dy)
45 1. libfoo_dll.a
46 2. foo_dll.a
47 3. libfoo.a
48 4. foo.a
49 5. foo.dll
50 6. libfoo_s.a
51 7. foo_s.a
52
53 o Added some deadlock checking/termination checks to semphores.
54
55 o Added macros to os2emx.h for preserving FPU control word and
56 applied these to certing read and write operations in LIBC.
57
[1229]58 o Added feature to emxomfld to automatically convert a.out
59 libraries and objects to OMF (using temporary files). Enabled
60 by default but can be disabled by the option -Zno-autoconv.
[1227]61
62 o Added support to emximp for dlls.
63
[1229]64 o Added support for automatic conversion of dlls to temporary
65 import libraries emxomfld and ld.
[1227]66
[1229]67 o Added getopt_long() and changed getopt() to FreeBSD
68 implementations.
[1227]69
70 o Added a few more code page aliases.
71
72 o Added optional breakpoint in abort. The presense of the env.var.
73 LIBC_BREAKPOINT_ABORT triggers the breakpoint instruction.
74
75 o Added syslog interfaces (contrib from Yuri Dario).
76
77 o Added to libc and updated BSD db code to FreeBSD 5.1 level.
78
79 o Added to libc and updated regex code to FreeBSD 5.1 level.
80
81 o Ported the posix spawn api from GLIBC v2.3.2.
82
83 o Updated with os2emx.h flags for DosQueryMemState().
84
85 o Changed size_t to unsigned int (from unsigned long int) and
[1224]86 ptrdiff_t to signed int (from signed long int) to comply with
[1227]87 most of the other i386 environments.
88
[1229]89 o Changed abort and default signal termination messages to say
90 which process it's printed from.
[1227]91
92 o Changed the glob() and globfree() implemenation with a port of
93 the FreeBSD 5.1 implemenation.
94
95 o Changed so_ioctl() to os2_ioctl() to better match the toolkit.
96
[1225]97 o Changed time_t to be signed as in BSD & linux.
[1227]98 (Negative values means date/time before epoc.)
99
100 o Changed to FreeBSD implementation of difftime().
101
102 o Increased default stream buffer size to 2 pages.
103
104 o Workaround for DosSetFileLocksL() on non JFS volumes.
105
106 o Workaround for bad FIL_STANDARDL buffer handling in os2krnl.
107
108 o Fixed waitpid() to respect the WNOHANG flag.
109
110 o Fixed strerror() to set errno if an invalid error number is
111 specified.
112
113 o Fixed problem with emxexp emitting ordinal without being told.
114
115 o Fixed broken setenv().
116
117 o Fixed errno value for read() and write() when the handle isn't
118 opened for that operation.
119
120 o Fixed a bad record length problem in emxomf.
121
122 o Fixed type_tag too long issue in emxomf.
123
124 o Fixed repetition of main source file in HLL debuginfo (emxomf).
125
126 o Fixed weakld problem with selfrefering aliases.
127
128 o Fixed weakld problem with PUBLIC and COMM clash.
129
130 o Fixed problem with streams not being flushed on termination.
131
132 o Fixed define clash in float.h when in C99 mode.
133
134 o Fixed abend in GCC if TMPDIR or TMP was ending with a slash.
135
136 o Fixed crash in ld when having fixups to weak symbols.
137
[1229]138 o Fixed bad conversion of dll0*.o to OMF, the OMF version got an
139 unwanted stack object.
[1227]140
141 o New functions:
142 isblank(), ishexnumber(), isnumber(), mempcpy(), realpath(),
143 strnlen(), asctime_r(), ctime_r(), gmtime_r(), localtime_r(),
[1274]144 strerror_r(), usleep().
[1227]145
146 o New functions & globals (from FreeBSD 5.1):
147 imaxabs(), imaxdiv(), strtoimax(), strtoumax(), hcreate(),
[1229]148 hdestroy(), hsearch(), insque(), lfind(), lsearch(),
149 remque(), tdelete(), tfind(), tsearch(), twalk(), reallocf(),
150 strsignal(), sys_signame, sys_siglist, sys_nsig, regcomp(),
151 regerror(), regexec(), regfree(), + bsd db functions.
[1194]152
[1227]153 o New functions (from GLIBC 2.3.2):
[1229]154 error(), error_at_line(), strndup(), argz_add(),
155 argz_add_sep(), argz_append(), argz_count(), argz_create(),
156 argz_create_sep(), argz_delete(), argz_extract(),
157 argz_insert(), argz_next(), argz_replace(), argz_stringify(),
158 posix_spawnp() posix_spawn(), posix_spawnattr_destroy(),
159 posix_spawnattr_getflags(), posix_spawnattr_getpgroup(),
160 posix_spawnattr_getschedparam(),
161 posix_spawnattr_getschedpolicy(),
162 posix_spawnattr_getsigdefault(),
[1227]163 posix_spawnattr_getsigmask(), posix_spawnattr_init(),
164 posix_spawnattr_setflags(), posix_spawnattr_setpgroup(),
[1229]165 posix_spawnattr_setschedparam(),
166 posix_spawnattr_setschedpolicy(),
167 posix_spawnattr_setsigdefault(),
168 posix_spawnattr_setsigmask(),
[1227]169 posix_spawn_file_actions_addclose(),
170 posix_spawn_file_actions_adddup2(),
171 posix_spawn_file_actions_addopen(),
172 posix_spawn_file_actions_destroy(),
[1229]173 posix_spawn_file_actions_init()
[1227]174
175 o New headers:
[1274]176 nerrno.h (toolkit compatability).
[1227]177
178 o New headers (from FreeBSD 5.1):
[1274]179 search.h, sys/queue.h, net/if_types.h.
[1227]180
181 o New headers (from GLIBC 2.3.2):
182 features.h (somewhat crippled),
[1274]183 sys/gnu/cdefs.h (included from BSD styled sys/cdefs.h).
[1227]184
185 o Updated headers:
186 stddef.h (FreeBSD, sys/stddef.h (FreeBSD),
[1274]187 ulsitem.h (missing defines), os2emx.h, ...
[1227]188
[1274]189 o What I forgot...
[1227]190
191
[1194]192v3.2.2 Beta 3 Fix 1 (private build):
193------------------------------------
194
[1227]195 Fixes to LIBC:
[1194]196
[1227]197 o Crash if calloc was called before main().
[1194]198
199 o TZ parsing of timezones such as PST8EDT.
200
201 o sigsetjmp() and siglongjmp() visibility.
202
203
204v3.2.2 Beta 3:
205--------------
206
207 A few new features and fixes.
208
209 o Fixed a bunch of debug info problems.
210
211 o Added large file support.
212
[1229]213 o Enabled high memory support for LIBC. Two new options to GCC:
214 -Zhigh-mem and -Zhigh-low. If the program is to be enabled for
215 high memory use, specify -Zhigh-mem when linking.
[1194]216
217 Note that socket is not high memory enabled yet.
218
219 o Made LIBC preserve the FS selector.
220
221 o Added random() and *rand48() from BSD.
222
223 o Fixed crash with link386 and unresolved symbols.
224
225
226v3.2.2 Beta 2:
227--------------
228
229 A few bugfixes and a some new features (as usual).
230
231 o Added file locking support to LIBC.
232
[1229]233 o Fixed _System and _Optlink bugs and made _Optlink support
234 floating point argument passing in registers.
[1194]235
236 o Header updates related to limits and file locking primarily.
237
238 o Timezone fixes.
239
240 o Fixed some CRT init trouble in regards to getenv and putenv.
241
[702]242 o And some other minor stuff..
243
[1194]244
[579]245v3.2.2 Beta 1:
246--------------
[1194]247
[579]248 A few bugfixes and a some new features.
[702]249
[579]250 o Locale support in libc.
[702]251
[1229]252 o Implemented a different approach to OMF and weak symbols. This
253 new hack performs pre-linking before invoking the OMF linker
254 generating new .def files if needed and an extra object file with
255 aliases to resolve the weak symbols correctly.
256 The old approach will be used used when GCC_WEAKSYMS is present in
257 the environment.
[702]258
[1229]259 Please note that due to a bug in BFD, weak symbols don't work
260 100% correctly. This will be addressed as soon as we have
261 performed the switch to a more recent version of binutils.
[702]262
[1229]263 o A couple of new functions in libc, and a few corrections to
264 existing in respect to namespaces.
[702]265
[1229]266 o Addressed issues with calling conventions. We now detect
267 incompatible calling conventions, emitting warnings and errors
268 where appropriate.
[1194]269
[1229]270 o _Optlink is much better, but there are still some issues
271 left. Passing prototyped floating point parameters to
272 _Optlink doesn't work. Mixing of parameters which go into
273 registers (eax, edx, ecx) and parameters which
274 don't - void foo(int eax, struct sss s, int edx) - doesn't
275 work. All these issues are being addressed and are expected
276 to be fixed in the next build.
[1194]277
[1229]278 o Changed GCC to link with shared libc by default. This means
279 that in order to link with the static libc one has to specify
280 -static. It also means that -Zmtd or -Zcrtdll are no longer
281 required for linking with shared libc and can be removed from
282 all makescripts.
[702]283
[1229]284 o Changed EMXOMFLD defaults to ilink from Visual Age for C++
285 v3.6.5 or later (preferably later). The emxomfld usage output
286 will instruct you on how to use older linkers. For VAC308 and
287 VAC365 linkers /dbgpack is specified if debuginfo is to be
288 generated. Emxomf checks for EMXOMFLD_TYPE=link386 when choosing
289 debug info level.
[702]290
[579]291 o Shipping three extra libc dlls:
[1229]292 libc02.dbg: Unstripped version of libc02.dll. This is
293 identical except from the presense of debug
294 info.
295 libc02.prf: Linked together from profiled enabled
296 libraries using kProfiler.
297 libc02.elh: Standard libc but linked with an external
298 electrical fence heap from kLibDbg.
299 These libc02.* dlls can be used instead of libc02.dll. kLibDbg
300 and kProfiler is available in separate zip files at same
301 location as the rest of the InnoTek GCC suite. However these
302 external tools are provided as is. (I might actually not find
303 time to put them out yet.)
[702]304
[579]305 o Distribution is splitted into several zips:
[702]306 -core.zip: All you really need.
[1229]307 -dbg.zip: Map files, unstripped tools and libs, and
308 libc02.elh.
[579]309 -prf.zip: Profiling libraries and libc02.prf.
310 libc.zip: The runtime libraries. (included in core.)
[643]311 The big zip is everything.
[702]312
[399]313v3.2.2 Alpha 3:
314---------------
315
[579]316 Primarily bugfixes.
[702]317
[1229]318 o Changed code generator for floating point truncations (double
319 to int casts and such) so PM can freely mess up the fpu status.
[702]320
[1229]321 o We were using the wrong float.h in two sense. We're now using
322 the correct one which includes all the PC defines and
323 prototypes.
[702]324
[579]325 o Fixed a few issues with error defines and tcpip.
[1229]326 Note that some of the error defines have changed value in the
327 process so we could become compatible with the tcpip stack
328 and FreeBSD.
[702]329
[579]330 o Corrected bugs in a number of headers.
[702]331
[1229]332 o Added more OS/2 prototypes and imports. There is still work
333 left on the header part,
[702]334
[579]335 o Optimized emxomf debug info conversion.
[702]336
[1229]337 o Wrapped bsdselect for BSD 4.4 header mode to implement
338 bsdselect().
[702]339
[399]340 o .... what did we forget...
341
[702]342
[365]343v3.2.2 Alpha 2:
344---------------
[702]345
[579]346 A few bugfixes and a couple of new features.
[702]347
[579]348 o The TCP/IP headers and libraries scheme have been changed.
349 The default is the current OS/2 tcpip toolkit (BSD 4.4 based).
350 To target the older OS/2 tcpip stack (BSD 4.3 based) you must
351 define TCPV40HDRS before including any TCP/IP headers and make
[1229]352 sure usr/lib/tcpipv4 is searched before usr/lib (this is to
353 get the right libsocket). It is recommended to use the -D
354 compiler option for the define and either the LIBRARY_PATH or
355 the -L compiler/linker option for the library.
[365]356
[579]357 o There are a couple of new and updated based on FreeBSD 5.1.
358 sys\stdint.h and inttypes.h (and a few internal once) are new.
359 sys\types.h and unistd.h are the ones most heavily updated.
[1229]360 We're working on getting the headers and libc in a better
361 shape standardwise to easy compatability and portability.
[702]362
[579]363 o A infinite loop in emxomf has been fixed.
[702]364
[579]365 o Linker error on sopen() has been corrected.
[702]366
[365]367 o .... what did we forget...
[702]368
369
[330]370v3.2.2 Alpha 1:
371---------------
[702]372
[1229]373 This is the first release from InnoTek, and it contains the InnoTek LIBC.
[579]374 In addition to the new LIBC there is a number of other major changes:
[330]375
376 o Name mangling in OMF mode have changed.
377 Until this release emxomf used to pretty much strip one leading '_'
378 from symbols when converting them to omf. This is now longer done
379 chiefly in order to correctly support mangling calling conventions
380 like __stdcall and __cdecl. This change have the following side
381 effects:
382 - _System and __cdecl no longer produces the same names and hence
383 all OS/2 API which are _System must be declared as _System in
384 order to link.
385 - Assembly code might need an extra underscore to work, or
386 perhaps change the prototypes to _System.
387 - Global variables are prepended and underscore, so mixing VAC and
388 GCC, or accessing globals from asm, take care.
389 (MSC v6.0 does this too, so it's not any uncommon practise.)
390
391 The OS/2 headers which are included are all updated to use _System.
392
393 o TCPIP headers are updated a quite a bit to match the toolkit ones
394 and to reflect the fact that the new libc does not a having common
395 handle space for files and sockets. These changes aren't 100%
396 completed yet, and usage probably will uncover some issues left in
397 there. Also for the programmer there is the following changes in
398 the apis provided:
399 - TCPV40HDRS are supported and should work like with the toolkit
400 headers. It will alias all functions to tcpip40_ editions
401 (using #defines) so we get the right imports thru -llibsocket.
402 - There is no support for sockets in select(). To do select on
403 sockets you will have to use bsdselect() or os2_select().
404 bsdselect() is only available for TCPV40HDRS. For
405 !defined(TCPV40HDRS) fd_set is in the emx/bsd format and not the
406 OS/2 tcpip v5.0 format.
407 - Socket IOCTLs are not supported by the ioctl() libc function
408 because of the separate handle space for sockets. For sockets
409 so_ioctl() and os2_ioctl() are used. os2_ioctl() is not available
410 when TCPV40HDRS is defined. According to the tcpref in v5.0
411 so_ioctl() only supports BSD ioctls.
412 - writev() and readv() also clashes with libc. For socket handles
413 use so_writev() and so_readv().
414
415 o The prefered OMF linker is now ilink. link386 will fail with an odd
416 error message if you tell gcc/g++ to make debug info. Set the
417 EMXOMFLD_LINKER environment variable to value ilink in order to use
418 ilink as OMF linker.
419 It likely that we will change the default OMF linker to ilink in an
420 later version of the GCC suite.
421
422 o .... what did we forget...
Note: See TracBrowser for help on using the repository browser.