source: trunk/doc/ReleaseNotes.os2@ 1225

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

re-arranged.

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