source: trunk/doc/ReleaseNotes.os2@ 1229

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

...

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