source: trunk/doc/ReleaseNotes.os2@ 1224

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

Raw.

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