source: trunk/doc/ReleaseNotes.os2@ 1388

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

Beta 4 CSD 1 notes.

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