| 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)'2004-2007 Knut St. Osmundsen (bird-kLIBC-spam@anduin.net)
 | 
|---|
| 8 | (C)'2003-2005 InnoTek Systemberatung GmbH (http://www.innotek.de)
 | 
|---|
| 9 | 
 | 
|---|
| 10 | 
 | 
|---|
| 11 | GCC v3.3.5 CSD 2 / LIBC v0.6.2:
 | 
|---|
| 12 | -------------------------------
 | 
|---|
| 13 | 
 | 
|---|
| 14 |     First, thanks to Yuri, Froloff and Paul for patches, bugs 
 | 
|---|
| 15 |     and other kind of feedback.
 | 
|---|
| 16 | 
 | 
|---|
| 17 | 
 | 
|---|
| 18 |     Fix list:
 | 
|---|
| 19 |          #54 libc: fchdir(open('.', O_RDONLY)) may corrupt path 
 | 
|---|
| 20 |                    resolving
 | 
|---|
| 21 |          #76 libc: fork() failed when using dlopen()
 | 
|---|
| 22 |         #102 libc: thread db locked after fork
 | 
|---|
| 23 |         #103 libc: atexit() callbacks in dlls are called after 
 | 
|---|
| 24 |                    dlclose()/DosFreeModule() on the DLL
 | 
|---|
| 25 |         #112 libc: stdio.h va_list & _POSIX_C_SOURCE=1
 | 
|---|
| 26 |         #113 libc: scanf("%lld", &lld)
 | 
|---|
| 27 |         #114 libc: Unloading a DLL can break wait*() and other 
 | 
|---|
| 28 |                    libc operations.
 | 
|---|
| 29 |         #118 libc: Incorrect DosSetFHState mask
 | 
|---|
| 30 |         #119 libc: logging stops in fork() child after libc data 
 | 
|---|
| 31 |                    segment copying
 | 
|---|
| 32 |         #122 libc: open("file", O_RDONLY | O_CREAT, 0666) fails
 | 
|---|
| 33 |         #125 libc: Missing nan(), nanl() and nanf()
 | 
|---|
| 34 |         #133 libc: _SC_PAGESIZE missing in sysconf()
 | 
|---|
| 35 |         #135 libc: setlocale(LC_COLLATE, "C") doesn't work correctly
 | 
|---|
| 36 |         #136 libc: incorrect parsing of single quotes in commandline
 | 
|---|
| 37 |                    arguments
 | 
|---|
| 38 |         #141 libc: include the right types.h from sys/param.h, 
 | 
|---|
| 39 |                    arpa/nameser.h and resolv.h
 | 
|---|
| 40 |         #142 libc: tempnam(NULL,NULL) crashes and tempnam messes 
 | 
|---|
| 41 |                    up errno
 | 
|---|
| 42 |         #143 libc: __libc_Back_fsDirCurrentSet is hiding failures
 | 
|---|
| 43 |                    (chdir)
 | 
|---|
| 44 |         #144 libc: tolower() doesn't work for the first 128 chars
 | 
|---|
| 45 |                    if not inlined.
 | 
|---|
| 46 |         #146 libc: fread() on a write-only stream incorrectly puts 
 | 
|---|
| 47 |                    it in an irreversable read mode
 | 
|---|
| 48 |         #147 libc: merge in current regex code and fix REG_ERANGE
 | 
|---|
| 49 |                    bug (sed/grep/++)
 | 
|---|
| 50 |         #149 libc: stat("/dev/null", &s) fails, fix.
 | 
|---|
| 51 |         #150 libc: symlinks 'files' contain garbage instead of 
 | 
|---|
| 52 |                    the name
 | 
|---|
| 53 |         #151 libc: Recursive "LIBC SYS Filehandle Mutex" panic
 | 
|---|
| 54 |         #152 libc: lost signals / thread pokes
 | 
|---|
| 55 |         #153 libc: Add a @executable_path rewrite rule by default.
 | 
|---|
| 56 |         #155 libc: setlocale calls UniFreeUconvObjec(NULL) instead 
 | 
|---|
| 57 |                    of UniFreeLocalObject causing crash in UConv.dll
 | 
|---|
| 58 |         #158 libc: printf("%#X, 255) outputs 0xFF instead of 0XFF
 | 
|---|
| 59 |         #160 libc: 3 more default rewrite rules; /@system_root, 
 | 
|---|
| 60 |                    /@system_drive and /@tmpdir          
 | 
|---|
| 61 |         #111 libos2: Correct som data imports
 | 
|---|
| 62 |         #128 libos2: unidef.h is missing a few defines
 | 
|---|
| 63 |         #100 gcc: can't throw across dll/exe boundraries
 | 
|---|
| 64 |         #109 libstdc++: infinite recursion during thread exit
 | 
|---|
| 65 |         #124 libc/gcc: link libstdc++ into the libc dll
 | 
|---|
| 66 |         #145 emxomf: deal with non-standard enum stabs
 | 
|---|
| 67 |         #148 emxomf: The anonymous members of struct stat chokes
 | 
|---|
| 68 |                      the debuggers
 | 
|---|
| 69 |         #137 emxomf: Don't truncate symbols twice.
 | 
|---|
| 70 |         #115 weakld: Don't bitch about export aliases
 | 
|---|
| 71 |          #89 emxomfld: Support wlink (the watcom linker)
 | 
|---|
| 72 |         #123 emxomfld: exit with rc 8 on genuin weakld failures, 
 | 
|---|
| 73 |                        not -1.
 | 
|---|
| 74 |         #159 emxomfld: wrc support
 | 
|---|
| 75 |          #47 emxomfld: Create .sym files directly from emxomfld
 | 
|---|
| 76 |         #134 emxomfld/wlink: The internalname and entryname of an
 | 
|---|
| 77 |                              IMPORTS statement is switched
 | 
|---|
| 78 |          #39 dllar.cmd enhancements
 | 
|---|
| 79 |         #140 Definition file line can be greater than 512 bytes
 | 
|---|
| 80 | 
 | 
|---|
| 81 | 
 | 
|---|
| 82 | 
 | 
|---|
| 83 | GCC v3.3.5 CSD 1 / LIBC v0.6.1:
 | 
|---|
| 84 | -------------------------------
 | 
|---|
| 85 | 
 | 
|---|
| 86 |     First, thanks to Yuri, nickk, Paul, Andy and Michal for patches,
 | 
|---|
| 87 |     bugs and other kind of feedback.
 | 
|---|
| 88 | 
 | 
|---|
| 89 | 
 | 
|---|
| 90 |     Fix list:
 | 
|---|
| 91 | 
 | 
|---|
| 92 |         #19     gcc: gcc limits.h overrides limits.h from libc
 | 
|---|
| 93 |         #20     libc: random panic SIGSEGV when doing parallel builds
 | 
|---|
| 94 |         #48     libc: freopen(NULL, "rb", stdio) panics (doesn't work
 | 
|---|
| 95 |                   as expected)
 | 
|---|
| 96 |         #60     libc: filehandle inheritance doesn't work right!
 | 
|---|
| 97 |         #22     libc: path resolver fails on open file
 | 
|---|
| 98 |         #23     libc: symlink is broken
 | 
|---|
| 99 |         #50     libc: umask isn't inherited
 | 
|---|
| 100 |         #51     libc: unlink fails on readonly file
 | 
|---|
| 101 |         #53     libc: freopen("missing",,) causes panic
 | 
|---|
| 102 |         #54     libc: fchdir(open('.', O_RDONLY)) may corrupt path
 | 
|---|
| 103 |                   resolving
 | 
|---|
| 104 |         #58     libc: closed standard handles cause uninitialized
 | 
|---|
| 105 |                   stdout/stdin/stderr streams
 | 
|---|
| 106 |         #21     libc: limit Unix EAs to specific file systems
 | 
|---|
| 107 |         #24     libc: fts crashes because it's still using chdir()
 | 
|---|
| 108 |         #32     libc: readdir_r returns -1 instead of errno
 | 
|---|
| 109 |         #33     libc: panic when using timers
 | 
|---|
| 110 |         #38     libc: when debugged default to breakpoint on panic
 | 
|---|
| 111 |         #40     libc: open("/", RDONLY) fails.
 | 
|---|
| 112 |         #41     libc: incorrect __libc_back_fsUnixAttribsGet() usage
 | 
|---|
| 113 |                   caused st_dev and st_ino to be 0 in some stat()s
 | 
|---|
| 114 |                   and chmod & fchmod to set MODE EA without type
 | 
|---|
| 115 |         #46     ilink map file name is wrong when multiple dots are in
 | 
|---|
| 116 |                   target name
 | 
|---|
| 117 |         #49     libc: st_ctime is incorrect and st_birthtime isn't
 | 
|---|
| 118 |                   converted to UTC
 | 
|---|
| 119 |         #52     libc: path resolver fails resolving a directory
 | 
|---|
| 120 |                   symlink for lstat
 | 
|---|
| 121 |         #61     libc: symlink(,existing) returns the wrong errno
 | 
|---|
| 122 |         #62     libc: getdelim / getline returns failure when the last
 | 
|---|
| 123 |                   line doesn't end with the delimiter / newline
 | 
|---|
| 124 |         #65     libc: sys/stat.h doesn't work in non BSD source mode
 | 
|---|
| 125 |         #67     libc: Remove ncurses headers
 | 
|---|
| 126 |         #68     libc: getopt prototype clashes (getopt.h/unistd.h)
 | 
|---|
| 127 |         #69     libc: basename & dirname return incorrect results
 | 
|---|
| 128 |                   for paths with drive
 | 
|---|
| 129 |         #71     libc: Incorrect fmutex padding in FILE
 | 
|---|
| 130 |         #27     ld bug when map files are requested
 | 
|---|
| 131 |         #34     weakld: generate duplicate weak aliases bird
 | 
|---|
| 132 |         #30     setlocale / ctype is broken
 | 
|---|
| 133 |         #70     emxomf: Demangle function names for omf debug info
 | 
|---|
| 134 |         #55     emxomfld doesn't delete temporary files
 | 
|---|
| 135 |         #56     emxomfld doesn't properly allocate space for map file name
 | 
|---|
| 136 |         #28     emxbind doesn't read library name from .def file
 | 
|---|
| 137 |         #36     emxbind: export truncation bug and allow export & imports
 | 
|---|
| 138 |                      up to 255 chars
 | 
|---|
| 139 | 
 | 
|---|
| 140 |     Full details can be found at:
 | 
|---|
| 141 | 
 | 
|---|
| 142 |         http://svn.netlabs.org/libc/query?status=closed&milestone=libc-0.6.1
 | 
|---|
| 143 | 
 | 
|---|
| 144 | 
 | 
|---|
| 145 | 
 | 
|---|
| 146 | GCC v3.3.5 / LIBC v0.6:
 | 
|---|
| 147 | -----------------------
 | 
|---|
| 148 | 
 | 
|---|
| 149 |     There was a build problem with the first attempt at releasing.
 | 
|---|
| 150 |     This is the 2nd attempt, hope I got it right this time...
 | 
|---|
| 151 | 
 | 
|---|
| 152 |     WARNINGS
 | 
|---|
| 153 | 
 | 
|---|
| 154 |     There are several incompatible interface changes. So, you'll have
 | 
|---|
| 155 |     to rebuild static libraries and it's a good idea to do the same
 | 
|---|
| 156 |     thing for dynamic libs and programs too.
 | 
|---|
| 157 | 
 | 
|---|
| 158 |     The build is not tested as much as I would've liked. I'm very
 | 
|---|
| 159 |     pressed on time as usual, but I really wanted to get the 0.6 stuff
 | 
|---|
| 160 |     out now. I can only hope everything still builds and works.
 | 
|---|
| 161 | 
 | 
|---|
| 162 | 
 | 
|---|
| 163 |     The Project is Moving
 | 
|---|
| 164 | 
 | 
|---|
| 165 |     The source code has been migrated to subversion and now resides
 | 
|---|
| 166 |     on the svn.netlabs.org server. The server also provides an issue
 | 
|---|
| 167 |     tracker and project management service called trac. Check it
 | 
|---|
| 168 |     out at http://svn.netlabs.org/libc/.
 | 
|---|
| 169 | 
 | 
|---|
| 170 |     The source code for this release (and any bugfix releases on
 | 
|---|
| 171 |     the 0.6 code base) can be checked out using this url:
 | 
|---|
| 172 |         http://svn.netlabs.org/repos/libc/branches/libc-0.6
 | 
|---|
| 173 | 
 | 
|---|
| 174 |     Developers who wish to contribute to the 0.7 code will have to
 | 
|---|
| 175 |     diff against the trunk. There are several pending restructuring
 | 
|---|
| 176 |     tasks on 0.7, so don't expect everything to build fine or work
 | 
|---|
| 177 |     properly while those are still open. Anyway, the url:
 | 
|---|
| 178 |         http://svn.netlabs.org/repos/libc/trunk
 | 
|---|
| 179 | 
 | 
|---|
| 180 |     Users are encouraged to join the gcc-user@netlabs.org mailing list
 | 
|---|
| 181 |     and use that list for questions rather than the InnoTek form. If
 | 
|---|
| 182 |     you think you've found a bug, you should first ask on the mailing
 | 
|---|
| 183 |     list, and if I decide it's a *real*, *new*, bug I'll open a
 | 
|---|
| 184 |     ticket for it and address it.
 | 
|---|
| 185 | 
 | 
|---|
| 186 |     Developers which have patches for real bugs or enhancements can
 | 
|---|
| 187 |     create trac tickets and drop me or the gcc-user list a mail (we
 | 
|---|
| 188 |     haven't figure out how to get email notifications from trac yet).
 | 
|---|
| 189 | 
 | 
|---|
| 190 | 
 | 
|---|
| 191 |     New features:
 | 
|---|
| 192 | 
 | 
|---|
| 193 |         o Added __libc_Back_gfProcessHandlePCBatchScripts and
 | 
|---|
| 194 |           __libc_Back_gfProcessHandleHashBangScripts (globale
 | 
|---|
| 195 |           variables) to turn on/off script handling in exec/spawn.
 | 
|---|
| 196 |           Very useful for shells.
 | 
|---|
| 197 | 
 | 
|---|
| 198 |         o Changed the default stack of emxomfld and emxbind to 1MB,
 | 
|---|
| 199 |           it used to be 8KB and 8MB.
 | 
|---|
| 200 | 
 | 
|---|
| 201 |         o open() can now open directories like on unix, and fchdir()
 | 
|---|
| 202 |           can chdir to the opened directories.
 | 
|---|
| 203 | 
 | 
|---|
| 204 |         o Implemented much of the unix-attributes-in EA stuff.
 | 
|---|
| 205 | 
 | 
|---|
| 206 |         o Implemented getdirents(), will be used to replace
 | 
|---|
| 207 |           opendir/readdir/seekdir/telldir/closedir in 0.7.
 | 
|---|
| 208 | 
 | 
|---|
| 209 |         o Implemented the fcntl interface for setting and clearing
 | 
|---|
| 210 |           the O_NONBLOCK flag on sockets.
 | 
|---|
| 211 | 
 | 
|---|
| 212 | 
 | 
|---|
| 213 |     Bug fixes:
 | 
|---|
| 214 | 
 | 
|---|
| 215 |         o Fixed bug preventing libc from working on legacy systems.
 | 
|---|
| 216 |           Kudos to Andrew Below for spotting it.
 | 
|---|
| 217 | 
 | 
|---|
| 218 |         o Fixed ld bustage in rc1.
 | 
|---|
| 219 | 
 | 
|---|
| 220 |         o Fixed fork bug in shm.
 | 
|---|
| 221 | 
 | 
|---|
| 222 |         o Fixed spawn/exec bug where .exe was appended too early
 | 
|---|
| 223 |           preventing configure and other scripts without suffix
 | 
|---|
| 224 |           from being executed.
 | 
|---|
| 225 | 
 | 
|---|
| 226 |         o Fixed several signal bugs (deadlocks, sigsuspend, pause).
 | 
|---|
| 227 | 
 | 
|---|
| 228 |         o Fixed symbol truncation problem in emxomf.
 | 
|---|
| 229 | 
 | 
|---|
| 230 |         o Fixed a generic error handling bug in ioctl, write, read,
 | 
|---|
| 231 |           dup and dup2 which was causing incorrect errno values.
 | 
|---|
| 232 | 
 | 
|---|
| 233 | 
 | 
|---|
| 234 |     Known Issues, see open ticket in trac:
 | 
|---|
| 235 |         http://svn.netlabs.org/libc/report/1
 | 
|---|
| 236 | 
 | 
|---|
| 237 | 
 | 
|---|
| 238 | GCC v3.3.5 / LIBC v0.6 - Release Candidate 1:
 | 
|---|
| 239 | ---------------------------------------------
 | 
|---|
| 240 | 
 | 
|---|
| 241 |     New features:
 | 
|---|
| 242 | 
 | 
|---|
| 243 |         o Replaced the BSD regex with the GLIBC one.
 | 
|---|
| 244 | 
 | 
|---|
| 245 |         o Replaced the BSD getopt with the GLIBC one adding optreset
 | 
|---|
| 246 |           for BSD compatability.
 | 
|---|
| 247 | 
 | 
|---|
| 248 |         o Added libcrypt from GLIBC.
 | 
|---|
| 249 | 
 | 
|---|
| 250 |         o Added argp from GLIBC.
 | 
|---|
| 251 | 
 | 
|---|
| 252 |         o Added obstack from GLIBC.
 | 
|---|
| 253 | 
 | 
|---|
| 254 |         o Finally added a crude [v]asprintf() implementation.
 | 
|---|
| 255 | 
 | 
|---|
| 256 |         o Added missing math bits from GLIBC.
 | 
|---|
| 257 | 
 | 
|---|
| 258 |         o New functions:
 | 
|---|
| 259 |           rawmemchr(), strchrnul(), fgets_unlocked(), gets_unlocked(),
 | 
|---|
| 260 |           fwide(), asprintf(), vasprintf(), get_current_dir_name(),
 | 
|---|
| 261 |           getdelim(), getline(), getlogin_r(), _getopt_internal(),
 | 
|---|
| 262 |           _getopt_internal_r(), _getopt_long_only_r(),
 | 
|---|
| 263 |           _getopt_long_r(), argp_error(), argp_failure(),
 | 
|---|
| 264 |           argp_fmtstream_ensure(), argp_fmtstream_free(),
 | 
|---|
| 265 |           argp_fmtstream_point(), argp_fmtstream_printf(),
 | 
|---|
| 266 |           argp_fmtstream_putc(), argp_fmtstream_puts(),
 | 
|---|
| 267 |           argp_fmtstream_set_lmargin(), argp_fmtstream_set_rmargin(),
 | 
|---|
| 268 |           argp_fmtstream_set_wmargin(), argp_fmtstream_update(),
 | 
|---|
| 269 |           argp_fmtstream_write(), argp_help(), argp_input(),
 | 
|---|
| 270 |           argp_make_fmtstream(), argp_parse(),
 | 
|---|
| 271 |           argp_program_bug_address(), argp_program_version(),
 | 
|---|
| 272 |           argp_program_version_hook(), argp_state_help(), argp_usage(),
 | 
|---|
| 273 |           cacos(), cacosf(), cacosh(), cacoshf(), cacoshl(), cacosl(),
 | 
|---|
| 274 |           cargf(), casin(), casinf(), casinh(), casinhf(), casinhl(),
 | 
|---|
| 275 |           casinl(), catan(), catanf(), catanh(), catanhf(), catanhl(),
 | 
|---|
| 276 |           catanl(), ccos(), ccosf(), ccosh(), ccoshf(), ccoshl(),
 | 
|---|
| 277 |           ccosl(), cexp(), cexpf(), cexpl(), clog(), clog10(),
 | 
|---|
| 278 |           clog10f(), clog10l(), clogf(), clogl(), cpow(), cpowf(),
 | 
|---|
| 279 |           cpowl(), cproj(), cprojf(), cprojl(), csin(), csinf(),
 | 
|---|
| 280 |           csinh(), csinhf(), csinhl(), csinl(), csqrt(), csqrtf(),
 | 
|---|
| 281 |           csqrtl(), ctan(), ctanf(), ctanh(), ctanhf(), ctanhl(),
 | 
|---|
| 282 |           ctanl(), exp10(), log2(), log2f(), log2l(), sincos(),
 | 
|---|
| 283 |           sincosf(), sincosl(), asinhl(), atanhl(), llrintl(),
 | 
|---|
| 284 |           lrintl(), erfcl(), erfl(), exp2l(), expm1l(), log1pl(),
 | 
|---|
| 285 |           logbl(), nearbyintl(), remainderl(), remquol(), cabsl(),
 | 
|---|
| 286 |           carg(), cargl(), gammal_r(), exp10f(), tgammaf(), tgammal(),
 | 
|---|
| 287 |           __fpu_control(), acoshl(), exp10l(), j0l(), j1l(), jnl(),
 | 
|---|
| 288 |           lgammal_r(), nexttowardl(), scalbl(), significandl(), y0l(),
 | 
|---|
| 289 |           y1l(), ynl(), gammal(), lgammal(), _obstack_allocated_p(),
 | 
|---|
| 290 |           obstack_alloc_failed_handler(), _obstack_begin(),
 | 
|---|
| 291 |           _obstack_begin_1(), obstack_exit_failure(), obstack_free(),
 | 
|---|
| 292 |           _obstack_memory_used(), _obstack_newchunk(), nftw(),
 | 
|---|
| 293 |           stpncpy(), crypt_r(), encrypt_r(), init_des(), init_des_r(),
 | 
|---|
| 294 |           md5_buffer(), md5_crypt(), md5_crypt_r(), md5_finish_ctx(),
 | 
|---|
| 295 |           md5_init_ctx(), md5_process_block(), md5_process_bytes(),
 | 
|---|
| 296 |           md5_read_ctx(), md5_stream(), setkey_r(), crypt(), encrypt(),
 | 
|---|
| 297 |           setkey(), _ufc_dofinalperm_r(), _ufc_doit_r(), _ufc_foobar(),
 | 
|---|
| 298 |           _ufc_mk_keytab_r(), _ufc_output_conversion_r(),
 | 
|---|
| 299 |           _ufc_setup_salt_r(), getmode(), optreset(), bsd_setmode(),
 | 
|---|
| 300 |           getpgid(), getsid(), setlinebuf(), re_comp(),
 | 
|---|
| 301 |           re_compile_fastmap(), re_compile_pattern(), re_exec(),
 | 
|---|
| 302 |           re_match(), re_match_2(), re_search(), re_search_2(),
 | 
|---|
| 303 |           re_set_registers() and re_set_syntax().
 | 
|---|
| 304 | 
 | 
|---|
| 305 | 
 | 
|---|
| 306 |     Bug fixes:
 | 
|---|
| 307 | 
 | 
|---|
| 308 |         o Fixed various bugs related to __declspec.
 | 
|---|
| 309 | 
 | 
|---|
| 310 |         o Fixed a bug in alloca which was causing all -O levels
 | 
|---|
| 311 |           to break.
 | 
|---|
| 312 | 
 | 
|---|
| 313 |         o Added UniStrFromUcs and UniStrToUcs to uconv.h and libos2.
 | 
|---|
| 314 | 
 | 
|---|
| 315 |         o Fixed quite a few libc issues, see the ChangeLog.LIBC
 | 
|---|
| 316 |           for full details.
 | 
|---|
| 317 | 
 | 
|---|
| 318 | 
 | 
|---|
| 319 |     Known problems:
 | 
|---|
| 320 | 
 | 
|---|
| 321 |         o Static linking not possible - will be fixed.
 | 
|---|
| 322 | 
 | 
|---|
| 323 |         o Job control will only be applied to thread 1 in a process.
 | 
|---|
| 324 |           This won't change.
 | 
|---|
| 325 | 
 | 
|---|
| 326 |         o Missing some process group interfaces required for
 | 
|---|
| 327 |           job control. They'll show up soon.
 | 
|---|
| 328 | 
 | 
|---|
| 329 |         o The HLL debug info isn't working 100% correctly.
 | 
|---|
| 330 | 
 | 
|---|
| 331 | 
 | 
|---|
| 332 | 
 | 
|---|
| 333 | GCC v3.3.5 / LIBC v0.6 - Beta 5:
 | 
|---|
| 334 | --------------------------------
 | 
|---|
| 335 | 
 | 
|---|
| 336 |     Thanks to Lorne, Froloff, nickk and Andy for sending me patches,
 | 
|---|
| 337 |     debugging problems and/or testing fixes.
 | 
|---|
| 338 | 
 | 
|---|
| 339 |     New features:
 | 
|---|
| 340 | 
 | 
|---|
| 341 |         o Added support for __declspec(dllexport), _Export
 | 
|---|
| 342 |           and __declspec(dllimport), the latter being a stub.
 | 
|---|
| 343 |           This also included adding N_EXP to the a.out format.
 | 
|---|
| 344 | 
 | 
|---|
| 345 |         o Lot's of math stuff, mostly untested.
 | 
|---|
| 346 | 
 | 
|---|
| 347 |         o Optimized zeroing of new file space in ftruncate and
 | 
|---|
| 348 |           chsize with knowlegde about the filesystem. HPFS, JFS
 | 
|---|
| 349 |           and FAT will do the zeroing for us.
 | 
|---|
| 350 | 
 | 
|---|
| 351 |         o Support for unlocked stdio, with both BSD and GNU
 | 
|---|
| 352 |           extensions implemented.
 | 
|---|
| 353 | 
 | 
|---|
| 354 |         o Execute .cmd, .bat, .btm and hash-bang scripts.
 | 
|---|
| 355 | 
 | 
|---|
| 356 |         o Respect single quotes in argument handling (sed craze).
 | 
|---|
| 357 | 
 | 
|---|
| 358 |         o Ported fts.h and the BSD implementation.
 | 
|---|
| 359 | 
 | 
|---|
| 360 |         o Ported BSD sysctl. (Does not include the tcpip v4.1
 | 
|---|
| 361 |           sysctl() bits yet.)
 | 
|---|
| 362 | 
 | 
|---|
| 363 |         o Ported the FreeBSD implementation of SysV semaphores
 | 
|---|
| 364 |           and shared memory.
 | 
|---|
| 365 | 
 | 
|---|
| 366 |         o Env.var. LIBC_THREAD_MIN_STACK_SIZE can be used to
 | 
|---|
| 367 |           specify the minimum stack size for new threads. The
 | 
|---|
| 368 |           default minimum is 4096 bytes.
 | 
|---|
| 369 | 
 | 
|---|
| 370 |         o Ported (lib)intl from glibc.
 | 
|---|
| 371 | 
 | 
|---|
| 372 |         o New gcc arguments -Zargs-wild and -Zargs-resp.
 | 
|---|
| 373 | 
 | 
|---|
| 374 |         o New functions (might not be 100% correct):
 | 
|---|
| 375 |           __bindtextdomain(), __dcgettext(), __dcigettext(),
 | 
|---|
| 376 |           __dcngettext(), __dgettext(), __dngettext(), __gettext(),
 | 
|---|
| 377 |           __gettext_extract_plural(), __gettext_free_exp(),
 | 
|---|
| 378 |           __gettextparse(), _nl_make_l10nflist(), __ngettext(),
 | 
|---|
| 379 |           __textdomain(), _nl_locale_name(), on_exit(), nanosleep(),
 | 
|---|
| 380 |           wmemcpy(), wmemchr(), wmemcmp(), wmemmove(), wmemset(),
 | 
|---|
| 381 |           gethrtime(), _nl_expand_alias(), _nl_explode_name(),
 | 
|---|
| 382 |           _nl_normalize_codeset(), __fbufsize(), __fpending(),
 | 
|---|
| 383 |           getpriority(), setpriority(), nice(), sysctl(),
 | 
|---|
| 384 |           sysctlbyname(), sysctlnametomib(), fchmod(), _chdir_os2(),
 | 
|---|
| 385 |           fts_children(), fts_close(), fts_get_clientptr(),
 | 
|---|
| 386 |           fts_get_stream(), fts_open(), fts_read(), fts_set(),
 | 
|---|
| 387 |           fts_set_clientptr(), mkfifo(), futimes(), _getenv_int(),
 | 
|---|
| 388 |           _getenv_long(), _getenv_longlong(), ftok(), semctl(),
 | 
|---|
| 389 |           semget(), semop(), shmat(), shmctl(), shmdt(), shmget(),
 | 
|---|
| 390 |           acosf(), acosh(), acoshf(), asinf(), asinh(), asinhf(),
 | 
|---|
| 391 |           atan2f(), atanf(), atanh(), atanhf(), cabs(), cabsf(),
 | 
|---|
| 392 |           cbrtf(), ceilf(), cimag(), cimagf(), cimagl(), conj(),
 | 
|---|
| 393 |           conjf(), conjl(), cosf(), coshf(), creal(), crealf(),
 | 
|---|
| 394 |           creall(), erf(), erfc(), erfcf(), erff(), exp2(), exp2f(),
 | 
|---|
| 395 |           expf(), expm1(), expm1f(), truncf(), fabsf(), fdim(),
 | 
|---|
| 396 |           fdimf(), fdiml(), fegetenv(), feholdexcept(),
 | 
|---|
| 397 |           feraiseexcept(), fesetexceptflag(), feupdateenv(), floorf(),
 | 
|---|
| 398 |           fma(), fmaf(), fmal(), fmax(), fmaxf(), fmaxl(), fmin(),
 | 
|---|
| 399 |           fminf(), fminl(), fmodf(), frexpf(), hypotf(), ilogb(),
 | 
|---|
| 400 |           ilogbf(), ilogbl(), ldexpf(), lgamma(), lgammaf(), llrint(),
 | 
|---|
| 401 |           llrintf(), llround(), llroundf(), llroundl(), log10f(),
 | 
|---|
| 402 |           log1p(), log1pf(), logb(), logbf(), logf(), lrint(),
 | 
|---|
| 403 |           lrintf(), lround(), lroundf(), lroundl(), modff(),
 | 
|---|
| 404 |           nearbyint(), nearbyintf(), nexttoward(), nexttowardf(),
 | 
|---|
| 405 |           powf(), remainder(), remainderf(), remquo(), remquof(),
 | 
|---|
| 406 |           rintf(), round(), roundf(), roundl(), scalbf(), scalbln(),
 | 
|---|
| 407 |           scalblnf(), scalblnl(), scalbn(), scalbnf(), scalbnl(),
 | 
|---|
| 408 |           signgam(), sinf(), sinhf(), sqrtf(), tanf(), tanhf(),
 | 
|---|
| 409 |           tgamma(), drem(), dremf(), finite(), finitef(), gamma(),
 | 
|---|
| 410 |           gammaf(), gammaf_r(), gamma_r(), j0(), j0f(), j1(), j1f(),
 | 
|---|
| 411 |           jn(), jnf(), lgammaf_r(), lgamma_r(), scalb(),
 | 
|---|
| 412 |           significand(), significandf(), powl(), y0(), y0f(), y1(),
 | 
|---|
| 413 |           y1f(), yn(), ynf(), arc4random(), arc4random_addrandom(),
 | 
|---|
| 414 |           arc4random_stir(), _mktemp(), mkdtemp(), mkstemps(),
 | 
|---|
| 415 |           clearerr_unlocked(), feof_unlocked(), ferror_unlocked(),
 | 
|---|
| 416 |           fgetc_unlocked(), fileno_unlocked(), flockfile(),
 | 
|---|
| 417 |           ftrylockfile(), funlockfile(), getchar_unlocked(),
 | 
|---|
| 418 |           getc_unlocked(), putchar_unlocked(), fputc_unlocked(),
 | 
|---|
| 419 |           putc_unlocked(), fputs_unlocked(), puts_unlocked() and
 | 
|---|
| 420 |           fread_unlocked().
 | 
|---|
| 421 | 
 | 
|---|
| 422 |     Removed features:
 | 
|---|
| 423 | 
 | 
|---|
| 424 |         o smallcnv is gone.
 | 
|---|
| 425 | 
 | 
|---|
| 426 |         o old weak symbol handling in emxomf is gone.
 | 
|---|
| 427 | 
 | 
|---|
| 428 | 
 | 
|---|
| 429 |     Bug fixes:
 | 
|---|
| 430 | 
 | 
|---|
| 431 |         o Numerous bugfixes in libc, see ChangeLog.LIBC for
 | 
|---|
| 432 |           details.
 | 
|---|
| 433 | 
 | 
|---|
| 434 |         o Fixed problems with receiving signals during fork().
 | 
|---|
| 435 | 
 | 
|---|
| 436 |         o Fixed bug in timer backend if the system had no
 | 
|---|
| 437 |           exiting timers. Kudos to Froloff for noticing this.
 | 
|---|
| 438 | 
 | 
|---|
| 439 | 
 | 
|---|
| 440 |     Known problems:
 | 
|---|
| 441 | 
 | 
|---|
| 442 |         o Static linking not possible - will be fixed.
 | 
|---|
| 443 | 
 | 
|---|
| 444 |         o Job control will only be applied to thread 1 in a process.
 | 
|---|
| 445 |           This won't change.
 | 
|---|
| 446 | 
 | 
|---|
| 447 |         o Missing some process group interfaces required for
 | 
|---|
| 448 |           job control. They'll show up soon.
 | 
|---|
| 449 | 
 | 
|---|
| 450 |         o The HLL debug info isn't working 100% correctly.
 | 
|---|
| 451 | 
 | 
|---|
| 452 | 
 | 
|---|
| 453 |     Todos before LIBC06.DLL:
 | 
|---|
| 454 | 
 | 
|---|
| 455 |         0. Make my way through the glibc testsuite.
 | 
|---|
| 456 | 
 | 
|---|
| 457 |         1. New select() from Brian (aka nuke).
 | 
|---|
| 458 | 
 | 
|---|
| 459 |         2. Missing job pgid functions.
 | 
|---|
| 460 | 
 | 
|---|
| 461 | 
 | 
|---|
| 462 | 
 | 
|---|
| 463 | GCC v3.3.5 / LIBC v0.6 - Beta 4:
 | 
|---|
| 464 | --------------------------------
 | 
|---|
| 465 | 
 | 
|---|
| 466 |     Thanks to Lorne, Froloff and nickk for sending me patches,
 | 
|---|
| 467 |     debugging problems and testing fixes.
 | 
|---|
| 468 | 
 | 
|---|
| 469 |     New features:
 | 
|---|
| 470 | 
 | 
|---|
| 471 |         o Added st_dev and st_ino calculation for fstat and stat.
 | 
|---|
| 472 | 
 | 
|---|
| 473 |         o Added most of the wide string functions.
 | 
|---|
| 474 |           N.B. the stream functions are still missing.
 | 
|---|
| 475 | 
 | 
|---|
| 476 |         o New functions:
 | 
|---|
| 477 |           SafeDosStartSession(), wcscat(), wcschr(), wcscmp(),
 | 
|---|
| 478 |           wcscoll(), wcscpy(), wcscspn(), wcslcat(), wcslcpy(),
 | 
|---|
| 479 |           wcslen(), wcsncat(), wcsncmp(), wcsncpy(), wcspbrk(),
 | 
|---|
| 480 |           wcsrchr(), wcsspn(), wcsstr(), wcstok() and wcswidth()
 | 
|---|
| 481 | 
 | 
|---|
| 482 | 
 | 
|---|
| 483 |     Bug fixes:
 | 
|---|
| 484 | 
 | 
|---|
| 485 |         o settimeofday() year problem.
 | 
|---|
| 486 | 
 | 
|---|
| 487 |         o Some underflow/overflow problems tested for by many
 | 
|---|
| 488 |           Configure scripts was fixed by using a 64-bit time
 | 
|---|
| 489 |           type internally.
 | 
|---|
| 490 | 
 | 
|---|
| 491 |         o fxsave/fxrstore problem in fork(). (This isn't tested
 | 
|---|
| 492 |           because lack of (reliable) obsolete hardware.)
 | 
|---|
| 493 | 
 | 
|---|
| 494 |         o Fixed fork() and DosLoadModule problem in child.
 | 
|---|
| 495 | 
 | 
|---|
| 496 |         o nl_langinfo(CODESET) now returns something useful,
 | 
|---|
| 497 |           adding a few ascii codeset aliases at the same time.
 | 
|---|
| 498 | 
 | 
|---|
| 499 |         o Bug in socket inheritance over exec/spawn.
 | 
|---|
| 500 | 
 | 
|---|
| 501 |         o Missing semphore and signal blocking when processing
 | 
|---|
| 502 |           external signals.
 | 
|---|
| 503 | 
 | 
|---|
| 504 |         o Two rmdir errno problems, and made it fail on symlink.
 | 
|---|
| 505 | 
 | 
|---|
| 506 |         o Fixed incorrect monetary locale for the "C" locale
 | 
|---|
| 507 |           after setlocale call.
 | 
|---|
| 508 | 
 | 
|---|
| 509 |         o Fixed signal queue node leak.
 | 
|---|
| 510 | 
 | 
|---|
| 511 |         o Fixed missing release of signal semaphore and signal
 | 
|---|
| 512 |           unblocking in a failure code path.
 | 
|---|
| 513 | 
 | 
|---|
| 514 |         o Fixed a few filehandle conversion bugs in os2_select.
 | 
|---|
| 515 | 
 | 
|---|
| 516 |         o Fixed libsocket to set errno to ENOSOCK when given a
 | 
|---|
| 517 |           filehandle instead of a socket. Previous was ENOSYS.
 | 
|---|
| 518 | 
 | 
|---|
| 519 |         o Corrected NP_NBLK define in os2emx.h.
 | 
|---|
| 520 | 
 | 
|---|
| 521 |         o Export __mcount stub. LIBCxx.prf export non-stub.
 | 
|---|
| 522 | 
 | 
|---|
| 523 |         o Added missing libdl stub libraries (dlfcn is in libc
 | 
|---|
| 524 |           as of last release).
 | 
|---|
| 525 | 
 | 
|---|
| 526 |         o Fixed missing WNOHANG handling in the wait functions.
 | 
|---|
| 527 | 
 | 
|---|
| 528 |         o Adjusted the ECHILD and EINVAL errnos usage in
 | 
|---|
| 529 |           the wait functions to match the waitpid() spec.
 | 
|---|
| 530 | 
 | 
|---|
| 531 |         o ???
 | 
|---|
| 532 | 
 | 
|---|
| 533 |     Todos before LIBC06.DLL:
 | 
|---|
| 534 | 
 | 
|---|
| 535 |         0. Fix all bugs. :-)
 | 
|---|
| 536 | 
 | 
|---|
| 537 |         1. Reimplement opendir in BSD style (+fchdir).
 | 
|---|
| 538 | 
 | 
|---|
| 539 |         2. Shared IPC structures for XSI msq, sem and shm.
 | 
|---|
| 540 | 
 | 
|---|
| 541 |         3. Missing job pgid functions.
 | 
|---|
| 542 | 
 | 
|---|
| 543 |         4. Port GLIBC intl/*. gettext is a pita! because it's
 | 
|---|
| 544 |            passing FILE pointers around between different LIBCs.
 | 
|---|
| 545 |            objdump is constantly broken between LIBC versions.
 | 
|---|
| 546 | 
 | 
|---|
| 547 |         5. Figure out the EA exclusive read access trouble.
 | 
|---|
| 548 | 
 | 
|---|
| 549 |         6. Calc ino_t on file creation and store it in EAs.
 | 
|---|
| 550 | 
 | 
|---|
| 551 |         7. Some sysctl() required for coreutils + a bit
 | 
|---|
| 552 |            of tcpip additions.
 | 
|---|
| 553 | 
 | 
|---|
| 554 |         8. adjtime() implementation.
 | 
|---|
| 555 | 
 | 
|---|
| 556 | 
 | 
|---|
| 557 | 
 | 
|---|
| 558 | GCC v3.3.5 / LIBC v0.6 - Beta 2:
 | 
|---|
| 559 | --------------------------------
 | 
|---|
| 560 | 
 | 
|---|
| 561 |     New features:
 | 
|---|
| 562 | 
 | 
|---|
| 563 |         o wchar.h and wctype.h and much of the non-stream functions
 | 
|---|
| 564 |           declared therein are implemented. Though, the FreeBSD
 | 
|---|
| 565 |           string/w*.c functions are still in the porting queue.
 | 
|---|
| 566 | 
 | 
|---|
| 567 |         o Added __mcount stub to all LIBC DLLs but the .prf one which
 | 
|---|
| 568 |           is forwarding __mcount from kProfile.dll.
 | 
|---|
| 569 | 
 | 
|---|
| 570 |         o DosLoadModuleEx and DosFreeModuleEx was created to support
 | 
|---|
| 571 |           loaded modules over a fork(). dlopen/dlclose backend was
 | 
|---|
| 572 |           changed to use these.
 | 
|---|
| 573 | 
 | 
|---|
| 574 |         o Fixed rand() range problem. Using the BSD code for this
 | 
|---|
| 575 |           too, which means a new algorithm.
 | 
|---|
| 576 | 
 | 
|---|
| 577 |         o Update all BSD source-files (not headers) to FreeBSD 5.3
 | 
|---|
| 578 |           level.
 | 
|---|
| 579 | 
 | 
|---|
| 580 |         o New functions:
 | 
|---|
| 581 |           DosLoadModuleEx(), DosFreeModuleEx(), sranddev(),
 | 
|---|
| 582 |           getsubopt(), rand_r(), llabs(), lldiv(), dlfunc(),
 | 
|---|
| 583 |           issetugid(), pread(), pwrite(), _UTF8_mbrtowc(),
 | 
|---|
| 584 |           _UTF8_mbsinit(), _UTF8_mbsnrtowcs(), _UTF8_wcrtomb(),
 | 
|---|
| 585 |           _UTF8_wcsnrtombs(), digittoint(), isideogram(),
 | 
|---|
| 586 |           isrune(), iswalnum(), iswalpha(), iswascii(),
 | 
|---|
| 587 | 
 | 
|---|
| 588 |           iswblank(), iswcntrl(), iswctype(), iswdigit(),
 | 
|---|
| 589 |           iswgraph(), iswhexnumber(), iswideogram(), iswlower(),
 | 
|---|
| 590 |           iswnumber(), iswprint(), iswpunct(), iswrune(),
 | 
|---|
| 591 |           iswspace(), iswupper(), iswxdigit(), btowc(), mbrlen(),
 | 
|---|
| 592 |           mbrtowc(), mbsinit(), mbsnrtowcs(), mbsrtowcs(),
 | 
|---|
| 593 |           nl_langinfo(), towctrans(), wcrtomb(), wcsftime(),
 | 
|---|
| 594 |           wcsnrtombs(), wcsrtombs(), wcstod(), wcstof(),
 | 
|---|
| 595 |           wcstoimax(), wcstol(), wcstold(), wcstoll(), wcstoul(),
 | 
|---|
| 596 |           wcstoull(), wcstoumax(), wctob(), wctrans(), wctype(),
 | 
|---|
| 597 |           towlower(), towupper().
 | 
|---|
| 598 | 
 | 
|---|
| 599 | 
 | 
|---|
| 600 |     Bug fixes:
 | 
|---|
| 601 | 
 | 
|---|
| 602 |         o Fixed missing WNOHANG handling in waitpid(), wait4()
 | 
|---|
| 603 |           and waitid().
 | 
|---|
| 604 | 
 | 
|---|
| 605 |         o Corrected several severe bugs in the path resolver.
 | 
|---|
| 606 | 
 | 
|---|
| 607 |         o Fixed handling of paths ending with slash.
 | 
|---|
| 608 | 
 | 
|---|
| 609 |         o Fixed weird fork() problem which showed up as a heap
 | 
|---|
| 610 |           deadlock.
 | 
|---|
| 611 | 
 | 
|---|
| 612 |         o Fixed broken _getdrive().
 | 
|---|
| 613 | 
 | 
|---|
| 614 |         o Made _chdrive() return -1 on error. It used to always
 | 
|---|
| 615 |           return success earlier. (don't ask me why)
 | 
|---|
| 616 | 
 | 
|---|
| 617 |         o Fixed incorrect handling of -shared in GCC. It should
 | 
|---|
| 618 |           be treated as -Zdll.
 | 
|---|
| 619 | 
 | 
|---|
| 620 |         o Various incorrect assertions in the strict/log build.
 | 
|---|
| 621 | 
 | 
|---|
| 622 |         o ...
 | 
|---|
| 623 | 
 | 
|---|
| 624 |     Known Limitiations/Problems:
 | 
|---|
| 625 | 
 | 
|---|
| 626 |         o Static linking not possible - might be fixed later.
 | 
|---|
| 627 | 
 | 
|---|
| 628 |         o Job control will only be applied to thread 1 in a process.
 | 
|---|
| 629 |           This won't change.
 | 
|---|
| 630 | 
 | 
|---|
| 631 |         o Missing some process group interfaces required for
 | 
|---|
| 632 |           job control. They'll show up soon I hope.
 | 
|---|
| 633 | 
 | 
|---|
| 634 |         o Not tested too well. Especially the regex update.
 | 
|---|
| 635 | 
 | 
|---|
| 636 |     Todos before LIBC06.DLL:
 | 
|---|
| 637 | 
 | 
|---|
| 638 |         0. Fix all bugs. :-)
 | 
|---|
| 639 | 
 | 
|---|
| 640 |         1. Implement new ino_t scheme and reimplement opendir
 | 
|---|
| 641 |            in BSD style while doing so (+fchdir).
 | 
|---|
| 642 | 
 | 
|---|
| 643 |         2. Shared IPC structures for XSI msq, sem and shm.
 | 
|---|
| 644 | 
 | 
|---|
| 645 |         3. Port string/w* functions.
 | 
|---|
| 646 | 
 | 
|---|
| 647 |         4. Missing job pgid functions.
 | 
|---|
| 648 | 
 | 
|---|
| 649 |         5. Port GLIBC intl/*. gettext is a pita! because it's
 | 
|---|
| 650 |            passing FILE pointers around between different LIBCs.
 | 
|---|
| 651 |            objdump is constantly broken between LIBC versions.
 | 
|---|
| 652 | 
 | 
|---|
| 653 | 
 | 
|---|
| 654 | 
 | 
|---|
| 655 | GCC v3.3.5 / LIBC v0.6 - Beta 1:
 | 
|---|
| 656 | --------------------------------
 | 
|---|
| 657 | 
 | 
|---|
| 658 |     New features:
 | 
|---|
| 659 | 
 | 
|---|
| 660 |         o setitimer/alarm implementation. Needs some review later
 | 
|---|
| 661 |           the accuracy isn't extacly great.
 | 
|---|
| 662 | 
 | 
|---|
| 663 |         o Added a couple of missing os2emx.h features.
 | 
|---|
| 664 | 
 | 
|---|
| 665 |         o Some more 16-bit thunkers.
 | 
|---|
| 666 | 
 | 
|---|
| 667 |     Bug fixes:
 | 
|---|
| 668 | 
 | 
|---|
| 669 |         o Select worker called wrong tcpip function.
 | 
|---|
| 670 | 
 | 
|---|
| 671 |         o Incorrect assertion during thread destruction.
 | 
|---|
| 672 | 
 | 
|---|
| 673 |         o Fixed broken chdir and getdrive.
 | 
|---|
| 674 | 
 | 
|---|
| 675 |         o Improved deadlock detection (fmutex have changed,
 | 
|---|
| 676 |           thus stdio FILE is also changed).
 | 
|---|
| 677 | 
 | 
|---|
| 678 |         o ...
 | 
|---|
| 679 | 
 | 
|---|
| 680 | 
 | 
|---|
| 681 |     Known Limitiations/Problems:
 | 
|---|
| 682 | 
 | 
|---|
| 683 |         o Static linking not possible - will be fixed.
 | 
|---|
| 684 | 
 | 
|---|
| 685 |         o Job control will only be applied to thread 1 in a process.
 | 
|---|
| 686 |           This won't change.
 | 
|---|
| 687 | 
 | 
|---|
| 688 |         o Missing some process group interfaces required for
 | 
|---|
| 689 |           job control. They'll show up soon.
 | 
|---|
| 690 | 
 | 
|---|
| 691 |         o Doesn't evaluate trailing slash in paths as directory
 | 
|---|
| 692 |           specifier, it's currently ignored.
 | 
|---|
| 693 | 
 | 
|---|
| 694 | 
 | 
|---|
| 695 | 
 | 
|---|
| 696 | GCC v3.3.5 / LIBC v0.6 - Alpha 3:
 | 
|---|
| 697 | ---------------------------------
 | 
|---|
| 698 | 
 | 
|---|
| 699 |     This release have been timebombed and will stop working at the
 | 
|---|
| 700 |     end of December 2004. The reason for this is that data structures
 | 
|---|
| 701 |     shared between LIBC 0.6 and all future LIBC versions are not yet
 | 
|---|
| 702 |     quite finalized. (For your comfort the timebomb will go away when
 | 
|---|
| 703 |     the betas start, and this is the last planned LIBC v0.6 alpha.)
 | 
|---|
| 704 | 
 | 
|---|
| 705 | 
 | 
|---|
| 706 |     New Features:
 | 
|---|
| 707 | 
 | 
|---|
| 708 |         o Updated GCC to version 3.3.5.
 | 
|---|
| 709 | 
 | 
|---|
| 710 |         o Replaced the signal implementation. The new implementation
 | 
|---|
| 711 |           is much closer to the POSIX specs and implements a lot of
 | 
|---|
| 712 |           new interfaces.
 | 
|---|
| 713 | 
 | 
|---|
| 714 |         o Experimental delayed loading import libraries. emximp have
 | 
|---|
| 715 |           a new -l option for generating such libraries. At present
 | 
|---|
| 716 |           emximp can only generate a.out libraries of this kind - so
 | 
|---|
| 717 |           use emxomf to convert to OMF.
 | 
|---|
| 718 | 
 | 
|---|
| 719 |         o The dlfcn.h functions are in LIBC now.
 | 
|---|
| 720 | 
 | 
|---|
| 721 |         o New functions:
 | 
|---|
| 722 |           getgrouplist(), initgroups(), memalign(), valloc(),
 | 
|---|
| 723 |           mprotect(), _signal_os2(), _signal_sysv(),
 | 
|---|
| 724 |           __sigpause_bsd(), bsd_signal(), killpg(), psignal(),
 | 
|---|
| 725 |           sigaltstack(), sigblock(), sighold(), sigignore(),
 | 
|---|
| 726 |           siginterrupt(), sigpause(), sigrelse(), sigsetmask(),
 | 
|---|
| 727 |           sigtimedwait(), sigvec(), sigwait(), sigwaitinfo(),
 | 
|---|
| 728 |           sigqueue(), sigset(), getgrgid(), getpwnam(),
 | 
|---|
| 729 |           getpwuid(), setegid(), seteuid(), setregid(),
 | 
|---|
| 730 |           setresgid(), setresuid(), setreuid(),
 | 
|---|
| 731 |           setrgid(), setruid(), waitid(), wait3(),
 | 
|---|
| 732 |           wait4() and getopt_long_only().
 | 
|---|
| 733 | 
 | 
|---|
| 734 | 
 | 
|---|
| 735 |     Bug fixes;
 | 
|---|
| 736 | 
 | 
|---|
| 737 |         o Sockets were broken on some systems. Hopefully, this
 | 
|---|
| 738 |           should be corrected now.
 | 
|---|
| 739 | 
 | 
|---|
| 740 |         o stat() failed on a file open for writing.
 | 
|---|
| 741 | 
 | 
|---|
| 742 |         o fork() didn't work for processes which allocated lot's
 | 
|---|
| 743 |           of memory. Fixed incorrect syncing of memory objects.
 | 
|---|
| 744 | 
 | 
|---|
| 745 |         o ...
 | 
|---|
| 746 | 
 | 
|---|
| 747 | 
 | 
|---|
| 748 |     Known Limitiations/Problems:
 | 
|---|
| 749 | 
 | 
|---|
| 750 |         o Static linking not possible - will be fixed.
 | 
|---|
| 751 | 
 | 
|---|
| 752 |         o alarm() is still missing. Code is 80% done but didn't
 | 
|---|
| 753 |           make it for the release.
 | 
|---|
| 754 | 
 | 
|---|
| 755 |         o Job control will only be applied to thread 1 in a process.
 | 
|---|
| 756 |           This won't change.
 | 
|---|
| 757 | 
 | 
|---|
| 758 |         o Missing some process group interfaces required for
 | 
|---|
| 759 |           job control. They'll show up soon.
 | 
|---|
| 760 | 
 | 
|---|
| 761 | 
 | 
|---|
| 762 | 
 | 
|---|
| 763 | GCC v3.3.4 / LIBC v0.6 - Alpha 2:
 | 
|---|
| 764 | ---------------------------------
 | 
|---|
| 765 | 
 | 
|---|
| 766 |     This release have been timebombed and will stop work at the
 | 
|---|
| 767 |     end of October 2004. The reason for this is that data structures
 | 
|---|
| 768 |     shared between LIBC 0.6 and all future LIBC versions are not yet
 | 
|---|
| 769 |     finalized.
 | 
|---|
| 770 | 
 | 
|---|
| 771 | 
 | 
|---|
| 772 |     New Features:
 | 
|---|
| 773 | 
 | 
|---|
| 774 |         o Updated GCC to version 3.3.4.
 | 
|---|
| 775 | 
 | 
|---|
| 776 |         o 2nd fork() implementation.
 | 
|---|
| 777 |           All binaries are by default forkable, use the link option
 | 
|---|
| 778 |           -Zno-fork to disable this.
 | 
|---|
| 779 |           The fork implementation rendered _rmutex useless and it
 | 
|---|
| 780 |           has been removed.
 | 
|---|
| 781 | 
 | 
|---|
| 782 |         o Symlinks using EAs. This is work in progress. One of the
 | 
|---|
| 783 |           limitiations is that readir will not report DT_LNK yet.
 | 
|---|
| 784 | 
 | 
|---|
| 785 |         o Unix compartment using chroot(). This offers a
 | 
|---|
| 786 |           redirection of '/' to the chroot'ed root. The entrance
 | 
|---|
| 787 |           to the compartment is the '/'. The exits are drive letters.
 | 
|---|
| 788 |           The unix compartment is inherited by LIBC child processes.
 | 
|---|
| 789 | 
 | 
|---|
| 790 |         o getcwd() will now return the driveletter too (as VAC does)
 | 
|---|
| 791 |           when not inside the unix compartement.
 | 
|---|
| 792 |           _getcwdux() has been provided for porters which requires
 | 
|---|
| 793 |           behaviour like the old getcwd() implementation.
 | 
|---|
| 794 | 
 | 
|---|
| 795 |         o Paths to unix files #defined in headers are now prefixed
 | 
|---|
| 796 |           with "/@unixroot" which will be redirected to where the
 | 
|---|
| 797 |           environment variable UNIXROOT points. After calling
 | 
|---|
| 798 |           chroot() the target of "/@unixroot" will be changed too.
 | 
|---|
| 799 | 
 | 
|---|
| 800 |         o LIBC specific path rewriting (redirection). Built in is
 | 
|---|
| 801 |           "/dev/null", "/dev/tty" and "/@unixroot".
 | 
|---|
| 802 |           The environment variable LIBC_PATHREWRITERS is examined
 | 
|---|
| 803 |           during init and DLLs specified in it are loaded and called.
 | 
|---|
| 804 |           See src/emx/src/sys/pathrewrite.c for more details.
 | 
|---|
| 805 | 
 | 
|---|
| 806 |         o Non-unix like mode - link option -Zno-unix.
 | 
|---|
| 807 |           This affects slashes and various other Unix-like features
 | 
|---|
| 808 |           like for instance fork and symlinks.
 | 
|---|
| 809 | 
 | 
|---|
| 810 |         o Printf et al. have been extended to support some new format
 | 
|---|
| 811 |           specifiers. (It's still lacking a bit to be SuS comforming.)
 | 
|---|
| 812 | 
 | 
|---|
| 813 |         o Sockets handles are now inherited by LIBC child processes.
 | 
|---|
| 814 | 
 | 
|---|
| 815 |         o LIBC specific filehandle flags are now inherited by LIBC
 | 
|---|
| 816 |           child processes.
 | 
|---|
| 817 | 
 | 
|---|
| 818 |         o The GCCxyz.DLL is no longer needed when LIBC is used.
 | 
|---|
| 819 |           However it is still shipped for special cases where LIBC
 | 
|---|
| 820 |           isn't needed.
 | 
|---|
| 821 | 
 | 
|---|
| 822 |         o A good bunch of 'new' functions both from the SuS and from
 | 
|---|
| 823 |           various Unix flavors, even one or two PC functions have been
 | 
|---|
| 824 |           added. Accompanying these are new headers and header updates.
 | 
|---|
| 825 |           Here are most of the new function names:
 | 
|---|
| 826 |             __strverscmp(), _atfork_callback(), _getcwdux(),
 | 
|---|
| 827 |             _getdcwd(), _nsdbtaddsrc(), _nsdbtput(), _nsdispatch(),
 | 
|---|
| 828 |             _realrealpath(), canonicalize_file_name(), catclose(),
 | 
|---|
| 829 |             catgets(), catopen(), chown(), chroot(), eaccess(),
 | 
|---|
| 830 |             endgrent(), endnetgrent(), endusershell(), fchown(),
 | 
|---|
| 831 |             fstatfs(), fstatvfs(), getdtablesize(), getfsstat(),
 | 
|---|
| 832 |             getgrent(), getgrent_r(), getgrgid_r(), getgrnam_r(),
 | 
|---|
| 833 |             getloadavg(), getmntinfo(), getnetgrent(),
 | 
|---|
| 834 |             getpwent_r(), getpwnam_r(), getpwuid_r(), getrlimit(),
 | 
|---|
| 835 |             getusershell(), innetgr(), lchown(), link(), mknod(),
 | 
|---|
| 836 |             readlink(), setgrent(), setgroupent(), setgroups(),
 | 
|---|
| 837 |             setnetgrent(), setpassent(), setrlimit(),
 | 
|---|
| 838 |             setusershell(), sl_add(), sl_find(), sl_free(),
 | 
|---|
| 839 |             sl_init(), statfs(), statvfs(), strmode(), strtok_r(),
 | 
|---|
| 840 |             symlink() and sync().
 | 
|---|
| 841 | 
 | 
|---|
| 842 | 
 | 
|---|
| 843 |     Bug fixes:
 | 
|---|
| 844 | 
 | 
|---|
| 845 |         o setlocale() have been rewritten. The code page is now
 | 
|---|
| 846 |           taken from the locale rather than OS/2. Old behaviour
 | 
|---|
| 847 |           is used if environment variable LIBC_SETLOCALE_OLDSTYLE
 | 
|---|
| 848 |           is defined.
 | 
|---|
| 849 | 
 | 
|---|
| 850 |         o Buggy strspn() replaced by BSD implementation.
 | 
|---|
| 851 | 
 | 
|---|
| 852 |         o Thread backend have been reworked fixing certain
 | 
|---|
| 853 |           problems when LIBC was loaded and initialized in threads
 | 
|---|
| 854 |           other than the primary one. A LIBC specific TLS api
 | 
|---|
| 855 |           was created during this effort.
 | 
|---|
| 856 | 
 | 
|---|
| 857 |         o Fixed a missing export from GCCxyz.dll which was causing
 | 
|---|
| 858 |           incorrect behaviour of C++ exceptions in all previous
 | 
|---|
| 859 |           releases.
 | 
|---|
| 860 | 
 | 
|---|
| 861 |         o Fixed a buffer overrun in iconv_open() which caused a
 | 
|---|
| 862 |           corruption of the FS selector register, thus crashing
 | 
|---|
| 863 |           the processing.
 | 
|---|
| 864 | 
 | 
|---|
| 865 |         o ...
 | 
|---|
| 866 | 
 | 
|---|
| 867 | 
 | 
|---|
| 868 |     Known limitations and bugs:
 | 
|---|
| 869 | 
 | 
|---|
| 870 |         o mktime() works incorrectly for exterme values causing
 | 
|---|
| 871 |           configure test to fail.
 | 
|---|
| 872 | 
 | 
|---|
| 873 |         o NSS probably doesn't work.
 | 
|---|
| 874 | 
 | 
|---|
| 875 |         o Trailing slashes of a path specification are not
 | 
|---|
| 876 |           handled correctly after the rewrite of the path
 | 
|---|
| 877 |           handling.
 | 
|---|
| 878 | 
 | 
|---|
| 879 |         o New path handling is not DBCS ready.
 | 
|---|
| 880 | 
 | 
|---|
| 881 |         o Socket handle duplication have not been implemented yet.
 | 
|---|
| 882 | 
 | 
|---|
| 883 |         o The __<syscall> function are in the process of being
 | 
|---|
| 884 |           removed.
 | 
|---|
| 885 | 
 | 
|---|
| 886 |         o Not tested with mozilla.
 | 
|---|
| 887 | 
 | 
|---|
| 888 | 
 | 
|---|
| 889 | 
 | 
|---|
| 890 | v3.2.2 Beta 4 CSD 1:
 | 
|---|
| 891 | --------------------
 | 
|---|
| 892 | 
 | 
|---|
| 893 |     Bug fixes:
 | 
|---|
| 894 | 
 | 
|---|
| 895 |         o Fixed crash in file stream allocation code.
 | 
|---|
| 896 | 
 | 
|---|
| 897 |         o Fixed incorrect time on machines which had DATETIME::timezone
 | 
|---|
| 898 |           set. This fix changes the time granularity from hundredths of
 | 
|---|
| 899 |           a second to milliseconds.
 | 
|---|
| 900 | 
 | 
|---|
| 901 |         o Added the SPBCDATA struct, the defines FCF_CLOSEBUTTON and
 | 
|---|
| 902 |           BS_NOTEBOOKBUTTON and infosegment structs to os2emx.h
 | 
|---|
| 903 | 
 | 
|---|
| 904 |         o Fixed bug in sys/locale.h where it hid the lconv struct.
 | 
|---|
| 905 | 
 | 
|---|
| 906 |         o Fixed missing error number translations in getsockopt() and
 | 
|---|
| 907 |           setsockopt().
 | 
|---|
| 908 | 
 | 
|---|
| 909 |         o Fixed potential conflict caused by sys/types.h not defining
 | 
|---|
| 910 |           _KEY_T with the key_t typedef.
 | 
|---|
| 911 | 
 | 
|---|
| 912 |         o Fixed missing 64bit I/O support in ftell(), fstat() and stat().
 | 
|---|
| 913 | 
 | 
|---|
| 914 |         o Fixed UCS-2 codepage mappings.
 | 
|---|
| 915 | 
 | 
|---|
| 916 |         o Fixed problem with emxbind not recognizing option -e and
 | 
|---|
| 917 |           a problem with case sensitivity in the export checking.
 | 
|---|
| 918 | 
 | 
|---|
| 919 | 
 | 
|---|
| 920 | v3.2.2 Beta 4:
 | 
|---|
| 921 | --------------
 | 
|---|
| 922 | 
 | 
|---|
| 923 |     (The changelog is removed, thus the release notes are more detailed.)
 | 
|---|
| 924 | 
 | 
|---|
| 925 |     New features and fixes:
 | 
|---|
| 926 | 
 | 
|---|
| 927 |         o Filehandle rewrite. Files, pipes and sockets now share the same
 | 
|---|
| 928 |           handle space.
 | 
|---|
| 929 | 
 | 
|---|
| 930 |         o Updated binutils from v2.11.2 to v2.14 adding as-elf.exe and
 | 
|---|
| 931 |           ld-elf.exe as goodies for the adventurous.
 | 
|---|
| 932 | 
 | 
|---|
| 933 |         o GCC defines __INNOTEK_LIBC__=0x005.
 | 
|---|
| 934 |           The value reflects the LIBC version, form: 0xGMM
 | 
|---|
| 935 |           Where G=major version and MM=middle version numbers.
 | 
|---|
| 936 | 
 | 
|---|
| 937 |         o Changed library search algorithms for the linkers (emxomfld
 | 
|---|
| 938 |           and ld). Three variations, static, shared and shared+dll.
 | 
|---|
| 939 |           (The options indicated corresponds to what binutils 2.12.x
 | 
|---|
| 940 |           documents.)
 | 
|---|
| 941 |           static: (-Bstatic, -non_shared, -dn, -static)
 | 
|---|
| 942 |             1. libfoo_s.a
 | 
|---|
| 943 |             2. foo_s.a
 | 
|---|
| 944 |             3. libfoo.a
 | 
|---|
| 945 |             4. foo.a
 | 
|---|
| 946 |           shared: (default, -Bshared, -call_shared, -dy)
 | 
|---|
| 947 |             1. libfoo_dll.a
 | 
|---|
| 948 |             2. foo_dll.a
 | 
|---|
| 949 |             3. libfoo.a
 | 
|---|
| 950 |             4. foo.a
 | 
|---|
| 951 |             5. libfoo_s.a
 | 
|---|
| 952 |             6. foo_s.a
 | 
|---|
| 953 |           shared+dll: (-Zdll-search with -Bshared, -call_shared, -dy)
 | 
|---|
| 954 |             1. libfoo_dll.a
 | 
|---|
| 955 |             2. foo_dll.a
 | 
|---|
| 956 |             3. libfoo.a
 | 
|---|
| 957 |             4. foo.a
 | 
|---|
| 958 |             5. foo.dll
 | 
|---|
| 959 |             6. libfoo_s.a
 | 
|---|
| 960 |             7. foo_s.a
 | 
|---|
| 961 | 
 | 
|---|
| 962 |         o Added some deadlock checking/termination checks to semphores.
 | 
|---|
| 963 | 
 | 
|---|
| 964 |         o Added macros to os2emx.h for preserving FPU control word and
 | 
|---|
| 965 |           applied these to certain read and write operations in LIBC.
 | 
|---|
| 966 | 
 | 
|---|
| 967 |         o Added feature to emxomfld to automatically convert a.out
 | 
|---|
| 968 |           libraries and objects to OMF (using temporary files). Enabled
 | 
|---|
| 969 |           by default but can be disabled by the option -Zno-autoconv.
 | 
|---|
| 970 | 
 | 
|---|
| 971 |         o Added support to emximp for dlls.
 | 
|---|
| 972 | 
 | 
|---|
| 973 |         o Added support for automatic conversion of dlls to temporary
 | 
|---|
| 974 |           import libraries emxomfld and ld.
 | 
|---|
| 975 | 
 | 
|---|
| 976 |         o Added getopt_long() and changed getopt() to FreeBSD
 | 
|---|
| 977 |           implementations.
 | 
|---|
| 978 | 
 | 
|---|
| 979 |         o Added a few more code page aliases.
 | 
|---|
| 980 | 
 | 
|---|
| 981 |         o Added optional breakpoint in abort. The presense of the env.var.
 | 
|---|
| 982 |           LIBC_BREAKPOINT_ABORT triggers the breakpoint instruction.
 | 
|---|
| 983 | 
 | 
|---|
| 984 |         o Added syslog interfaces (contrib from Yuri Dario).
 | 
|---|
| 985 | 
 | 
|---|
| 986 |         o Added to libc and updated BSD db code to FreeBSD 5.1 level.
 | 
|---|
| 987 | 
 | 
|---|
| 988 |         o Added to libc and updated regex code to FreeBSD 5.1 level.
 | 
|---|
| 989 | 
 | 
|---|
| 990 |         o Ported the posix spawn api from GLIBC v2.3.2.
 | 
|---|
| 991 | 
 | 
|---|
| 992 |         o Updated with os2emx.h flags for DosQueryMemState().
 | 
|---|
| 993 | 
 | 
|---|
| 994 |         o Changed size_t to unsigned int (from unsigned long int) and
 | 
|---|
| 995 |           ptrdiff_t to signed int (from signed long int) to comply with
 | 
|---|
| 996 |           most of the other i386 environments.
 | 
|---|
| 997 | 
 | 
|---|
| 998 |         o Changed abort and default signal termination messages to say
 | 
|---|
| 999 |           which process it's printed from.
 | 
|---|
| 1000 | 
 | 
|---|
| 1001 |         o Changed the glob() and globfree() implemenation with a port of
 | 
|---|
| 1002 |           the FreeBSD 5.1 implemenation.
 | 
|---|
| 1003 | 
 | 
|---|
| 1004 |         o Changed so_ioctl() to os2_ioctl() to better match the toolkit.
 | 
|---|
| 1005 | 
 | 
|---|
| 1006 |         o Changed time_t to be signed as in BSD & linux.
 | 
|---|
| 1007 |           (Negative values means date/time before epoc.)
 | 
|---|
| 1008 | 
 | 
|---|
| 1009 |         o Changed to FreeBSD implementation of difftime().
 | 
|---|
| 1010 | 
 | 
|---|
| 1011 |         o Increased default stream buffer size to 2 pages.
 | 
|---|
| 1012 | 
 | 
|---|
| 1013 |         o Workaround for DosSetFileLocksL() on non JFS volumes.
 | 
|---|
| 1014 | 
 | 
|---|
| 1015 |         o Workaround for bad FIL_STANDARDL buffer handling in os2krnl.
 | 
|---|
| 1016 | 
 | 
|---|
| 1017 |         o Fixed waitpid() to respect the WNOHANG flag.
 | 
|---|
| 1018 | 
 | 
|---|
| 1019 |         o Fixed strerror() to set errno if an invalid error number is
 | 
|---|
| 1020 |           specified.
 | 
|---|
| 1021 | 
 | 
|---|
| 1022 |         o Fixed problem with emxexp emitting ordinal without being told.
 | 
|---|
| 1023 | 
 | 
|---|
| 1024 |         o Fixed broken setenv().
 | 
|---|
| 1025 | 
 | 
|---|
| 1026 |         o Fixed errno value for read() and write() when the handle isn't
 | 
|---|
| 1027 |           opened for that operation.
 | 
|---|
| 1028 | 
 | 
|---|
| 1029 |         o Fixed a bad record length problem in emxomf.
 | 
|---|
| 1030 | 
 | 
|---|
| 1031 |         o Fixed type_tag too long issue in emxomf.
 | 
|---|
| 1032 | 
 | 
|---|
| 1033 |         o Fixed repetition of main source file in HLL debuginfo (emxomf).
 | 
|---|
| 1034 | 
 | 
|---|
| 1035 |         o Fixed weakld problem with selfrefering aliases.
 | 
|---|
| 1036 | 
 | 
|---|
| 1037 |         o Fixed weakld problem with PUBLIC and COMM clash.
 | 
|---|
| 1038 | 
 | 
|---|
| 1039 |         o Fixed problem with streams not being flushed on termination.
 | 
|---|
| 1040 | 
 | 
|---|
| 1041 |         o Fixed define clash in float.h when in C99 mode.
 | 
|---|
| 1042 | 
 | 
|---|
| 1043 |         o Fixed abend in GCC if TMPDIR or TMP was ending with a slash.
 | 
|---|
| 1044 | 
 | 
|---|
| 1045 |         o Fixed crash in ld when having fixups to weak symbols.
 | 
|---|
| 1046 | 
 | 
|---|
| 1047 |         o Fixed bad conversion of dll0*.o to OMF, the OMF version got an
 | 
|---|
| 1048 |           unwanted stack object.
 | 
|---|
| 1049 | 
 | 
|---|
| 1050 |         o New functions:
 | 
|---|
| 1051 |             isblank(), ishexnumber(), isnumber(), mempcpy(), realpath(),
 | 
|---|
| 1052 |             strnlen(), asctime_r(), ctime_r(), gmtime_r(), localtime_r(),
 | 
|---|
| 1053 |             strerror_r(), usleep().
 | 
|---|
| 1054 | 
 | 
|---|
| 1055 |         o New functions & globals (from FreeBSD 5.1):
 | 
|---|
| 1056 |             imaxabs(), imaxdiv(), strtoimax(), strtoumax(), hcreate(),
 | 
|---|
| 1057 |             hdestroy(), hsearch(), insque(), lfind(), lsearch(),
 | 
|---|
| 1058 |             remque(), tdelete(), tfind(), tsearch(), twalk(), reallocf(),
 | 
|---|
| 1059 |             strsignal(), sys_signame, sys_siglist, sys_nsig, regcomp(),
 | 
|---|
| 1060 |             regerror(), regexec(), regfree(), + bsd db functions.
 | 
|---|
| 1061 | 
 | 
|---|
| 1062 |         o New functions (from GLIBC 2.3.2):
 | 
|---|
| 1063 |             error(), error_at_line(), strndup(), argz_add(),
 | 
|---|
| 1064 |             argz_add_sep(), argz_append(), argz_count(), argz_create(),
 | 
|---|
| 1065 |             argz_create_sep(), argz_delete(), argz_extract(),
 | 
|---|
| 1066 |             argz_insert(), argz_next(), argz_replace(), argz_stringify(),
 | 
|---|
| 1067 |             posix_spawnp() posix_spawn(), posix_spawnattr_destroy(),
 | 
|---|
| 1068 |             posix_spawnattr_getflags(), posix_spawnattr_getpgroup(),
 | 
|---|
| 1069 |             posix_spawnattr_getschedparam(),
 | 
|---|
| 1070 |             posix_spawnattr_getschedpolicy(),
 | 
|---|
| 1071 |             posix_spawnattr_getsigdefault(),
 | 
|---|
| 1072 |             posix_spawnattr_getsigmask(), posix_spawnattr_init(),
 | 
|---|
| 1073 |             posix_spawnattr_setflags(), posix_spawnattr_setpgroup(),
 | 
|---|
| 1074 |             posix_spawnattr_setschedparam(),
 | 
|---|
| 1075 |             posix_spawnattr_setschedpolicy(),
 | 
|---|
| 1076 |             posix_spawnattr_setsigdefault(),
 | 
|---|
| 1077 |             posix_spawnattr_setsigmask(),
 | 
|---|
| 1078 |             posix_spawn_file_actions_addclose(),
 | 
|---|
| 1079 |             posix_spawn_file_actions_adddup2(),
 | 
|---|
| 1080 |             posix_spawn_file_actions_addopen(),
 | 
|---|
| 1081 |             posix_spawn_file_actions_destroy(),
 | 
|---|
| 1082 |             posix_spawn_file_actions_init()
 | 
|---|
| 1083 | 
 | 
|---|
| 1084 |         o New headers:
 | 
|---|
| 1085 |             nerrno.h (toolkit compatability).
 | 
|---|
| 1086 | 
 | 
|---|
| 1087 |         o New headers (from FreeBSD 5.1):
 | 
|---|
| 1088 |             search.h, sys/queue.h, net/if_types.h.
 | 
|---|
| 1089 | 
 | 
|---|
| 1090 |         o New headers (from GLIBC 2.3.2):
 | 
|---|
| 1091 |             features.h (somewhat crippled),
 | 
|---|
| 1092 |             sys/gnu/cdefs.h (included from BSD styled sys/cdefs.h).
 | 
|---|
| 1093 | 
 | 
|---|
| 1094 |         o Updated headers:
 | 
|---|
| 1095 |             stddef.h (FreeBSD, sys/stddef.h (FreeBSD),
 | 
|---|
| 1096 |             ulsitem.h (missing defines), os2emx.h, ...
 | 
|---|
| 1097 | 
 | 
|---|
| 1098 |         o What I forgot...
 | 
|---|
| 1099 | 
 | 
|---|
| 1100 | 
 | 
|---|
| 1101 | v3.2.2 Beta 3 Fix 1 (private build):
 | 
|---|
| 1102 | ------------------------------------
 | 
|---|
| 1103 | 
 | 
|---|
| 1104 |     Fixes to LIBC:
 | 
|---|
| 1105 | 
 | 
|---|
| 1106 |         o Crash if calloc was called before main().
 | 
|---|
| 1107 | 
 | 
|---|
| 1108 |         o TZ parsing of timezones such as PST8EDT.
 | 
|---|
| 1109 | 
 | 
|---|
| 1110 |         o sigsetjmp() and siglongjmp() visibility.
 | 
|---|
| 1111 | 
 | 
|---|
| 1112 | 
 | 
|---|
| 1113 | v3.2.2 Beta 3:
 | 
|---|
| 1114 | --------------
 | 
|---|
| 1115 | 
 | 
|---|
| 1116 |     A few new features and fixes.
 | 
|---|
| 1117 | 
 | 
|---|
| 1118 |         o Fixed a bunch of debug info problems.
 | 
|---|
| 1119 | 
 | 
|---|
| 1120 |         o Added large file support.
 | 
|---|
| 1121 | 
 | 
|---|
| 1122 |         o Enabled high memory support for LIBC. Two new options to GCC:
 | 
|---|
| 1123 |           -Zhigh-mem and -Zhigh-low. If the program is to be enabled for
 | 
|---|
| 1124 |           high memory use, specify -Zhigh-mem when linking.
 | 
|---|
| 1125 | 
 | 
|---|
| 1126 |           Note that socket is not high memory enabled yet.
 | 
|---|
| 1127 | 
 | 
|---|
| 1128 |         o Made LIBC preserve the FS selector.
 | 
|---|
| 1129 | 
 | 
|---|
| 1130 |         o Added random() and *rand48() from BSD.
 | 
|---|
| 1131 | 
 | 
|---|
| 1132 |         o Fixed crash with link386 and unresolved symbols.
 | 
|---|
| 1133 | 
 | 
|---|
| 1134 | 
 | 
|---|
| 1135 | v3.2.2 Beta 2:
 | 
|---|
| 1136 | --------------
 | 
|---|
| 1137 | 
 | 
|---|
| 1138 |     A few bugfixes and a some new features (as usual).
 | 
|---|
| 1139 | 
 | 
|---|
| 1140 |         o Added file locking support to LIBC.
 | 
|---|
| 1141 | 
 | 
|---|
| 1142 |         o Fixed _System and _Optlink bugs and made _Optlink support
 | 
|---|
| 1143 |           floating point argument passing in registers.
 | 
|---|
| 1144 | 
 | 
|---|
| 1145 |         o Header updates related to limits and file locking primarily.
 | 
|---|
| 1146 | 
 | 
|---|
| 1147 |         o Timezone fixes.
 | 
|---|
| 1148 | 
 | 
|---|
| 1149 |         o Fixed some CRT init trouble in regards to getenv and putenv.
 | 
|---|
| 1150 | 
 | 
|---|
| 1151 |         o And some other minor stuff..
 | 
|---|
| 1152 | 
 | 
|---|
| 1153 | 
 | 
|---|
| 1154 | v3.2.2 Beta 1:
 | 
|---|
| 1155 | --------------
 | 
|---|
| 1156 | 
 | 
|---|
| 1157 |     A few bugfixes and a some new features.
 | 
|---|
| 1158 | 
 | 
|---|
| 1159 |         o Locale support in libc.
 | 
|---|
| 1160 | 
 | 
|---|
| 1161 |         o Implemented a different approach to OMF and weak symbols. This
 | 
|---|
| 1162 |           new hack performs pre-linking before invoking the OMF linker
 | 
|---|
| 1163 |           generating new .def files if needed and an extra object file with
 | 
|---|
| 1164 |           aliases to resolve the weak symbols correctly.
 | 
|---|
| 1165 |           The old approach will be used used when GCC_WEAKSYMS is present in
 | 
|---|
| 1166 |           the environment.
 | 
|---|
| 1167 | 
 | 
|---|
| 1168 |           Please note that due to a bug in BFD, weak symbols don't work
 | 
|---|
| 1169 |           100% correctly. This will be addressed as soon as we have
 | 
|---|
| 1170 |           performed the switch to a more recent version of binutils.
 | 
|---|
| 1171 | 
 | 
|---|
| 1172 |         o A couple of new functions in libc, and a few corrections to
 | 
|---|
| 1173 |           existing in respect to namespaces.
 | 
|---|
| 1174 | 
 | 
|---|
| 1175 |         o Addressed issues with calling conventions. We now detect
 | 
|---|
| 1176 |           incompatible calling conventions, emitting warnings and errors
 | 
|---|
| 1177 |           where appropriate.
 | 
|---|
| 1178 | 
 | 
|---|
| 1179 |         o _Optlink is much better, but there are still some issues
 | 
|---|
| 1180 |           left. Passing prototyped floating point parameters to
 | 
|---|
| 1181 |           _Optlink doesn't work. Mixing of parameters which go into
 | 
|---|
| 1182 |           registers (eax, edx, ecx) and parameters which
 | 
|---|
| 1183 |           don't - void foo(int eax, struct sss s, int edx) - doesn't
 | 
|---|
| 1184 |           work. All these issues are being addressed and are expected
 | 
|---|
| 1185 |           to be fixed in the next build.
 | 
|---|
| 1186 | 
 | 
|---|
| 1187 |         o Changed GCC to link with shared libc by default. This means
 | 
|---|
| 1188 |           that in order to link with the static libc one has to specify
 | 
|---|
| 1189 |           -static. It also means that -Zmtd or -Zcrtdll are no longer
 | 
|---|
| 1190 |           required for linking with shared libc and can be removed from
 | 
|---|
| 1191 |           all makescripts.
 | 
|---|
| 1192 | 
 | 
|---|
| 1193 |         o Changed EMXOMFLD defaults to ilink from Visual Age for C++
 | 
|---|
| 1194 |           v3.6.5 or later (preferably later). The emxomfld usage output
 | 
|---|
| 1195 |           will instruct you on how to use older linkers. For VAC308 and
 | 
|---|
| 1196 |           VAC365 linkers /dbgpack is specified if debuginfo is to be
 | 
|---|
| 1197 |           generated. Emxomf checks for EMXOMFLD_TYPE=link386 when choosing
 | 
|---|
| 1198 |           debug info level.
 | 
|---|
| 1199 | 
 | 
|---|
| 1200 |         o Shipping three extra libc dlls:
 | 
|---|
| 1201 |             libc02.dbg:     Unstripped version of libc02.dll. This is
 | 
|---|
| 1202 |                             identical except from the presense of debug
 | 
|---|
| 1203 |                             info.
 | 
|---|
| 1204 |             libc02.prf:     Linked together from profiled enabled
 | 
|---|
| 1205 |                             libraries using kProfiler.
 | 
|---|
| 1206 |             libc02.elh:     Standard libc but linked with an external
 | 
|---|
| 1207 |                             electrical fence heap from kLibDbg.
 | 
|---|
| 1208 |           These libc02.* dlls can be used instead of libc02.dll. kLibDbg
 | 
|---|
| 1209 |           and kProfiler is available in separate zip files at same
 | 
|---|
| 1210 |           location as the rest of the InnoTek GCC suite. However these
 | 
|---|
| 1211 |           external tools are provided as is. (I might actually not find
 | 
|---|
| 1212 |           time to put them out yet.)
 | 
|---|
| 1213 | 
 | 
|---|
| 1214 |         o Distribution is splitted into several zips:
 | 
|---|
| 1215 |             -core.zip:  All you really need.
 | 
|---|
| 1216 |             -dbg.zip:   Map files, unstripped tools and libs, and
 | 
|---|
| 1217 |                         libc02.elh.
 | 
|---|
| 1218 |             -prf.zip:   Profiling libraries and libc02.prf.
 | 
|---|
| 1219 |             libc.zip:   The runtime libraries. (included in core.)
 | 
|---|
| 1220 |           The big zip is everything.
 | 
|---|
| 1221 | 
 | 
|---|
| 1222 | v3.2.2 Alpha 3:
 | 
|---|
| 1223 | ---------------
 | 
|---|
| 1224 | 
 | 
|---|
| 1225 |     Primarily bugfixes.
 | 
|---|
| 1226 | 
 | 
|---|
| 1227 |         o Changed code generator for floating point truncations (double
 | 
|---|
| 1228 |           to int casts and such) so PM can freely mess up the fpu status.
 | 
|---|
| 1229 | 
 | 
|---|
| 1230 |         o We were using the wrong float.h in two sense. We're now using
 | 
|---|
| 1231 |           the correct one which includes all the PC defines and
 | 
|---|
| 1232 |            prototypes.
 | 
|---|
| 1233 | 
 | 
|---|
| 1234 |         o Fixed a few issues with error defines and tcpip.
 | 
|---|
| 1235 |           Note that some of the error defines have changed value in the
 | 
|---|
| 1236 |           process so we could become compatible with the tcpip stack
 | 
|---|
| 1237 |           and FreeBSD.
 | 
|---|
| 1238 | 
 | 
|---|
| 1239 |         o Corrected bugs in a number of headers.
 | 
|---|
| 1240 | 
 | 
|---|
| 1241 |         o Added more OS/2 prototypes and imports. There is still work
 | 
|---|
| 1242 |           left on the header part,
 | 
|---|
| 1243 | 
 | 
|---|
| 1244 |         o Optimized emxomf debug info conversion.
 | 
|---|
| 1245 | 
 | 
|---|
| 1246 |         o Wrapped bsdselect for BSD 4.4 header mode to implement
 | 
|---|
| 1247 |           bsdselect().
 | 
|---|
| 1248 | 
 | 
|---|
| 1249 |         o .... what did we forget...
 | 
|---|
| 1250 | 
 | 
|---|
| 1251 | 
 | 
|---|
| 1252 | v3.2.2 Alpha 2:
 | 
|---|
| 1253 | ---------------
 | 
|---|
| 1254 | 
 | 
|---|
| 1255 |     A few bugfixes and a couple of new features.
 | 
|---|
| 1256 | 
 | 
|---|
| 1257 |         o The TCP/IP headers and libraries scheme have been changed.
 | 
|---|
| 1258 |           The default is the current OS/2 tcpip toolkit (BSD 4.4 based).
 | 
|---|
| 1259 |           To target the older OS/2 tcpip stack (BSD 4.3 based) you must
 | 
|---|
| 1260 |           define TCPV40HDRS before including any TCP/IP headers and make
 | 
|---|
| 1261 |           sure usr/lib/tcpipv4 is searched before usr/lib (this is to
 | 
|---|
| 1262 |           get the right libsocket). It is recommended to use the -D
 | 
|---|
| 1263 |           compiler option for the define and either the LIBRARY_PATH or
 | 
|---|
| 1264 |           the -L compiler/linker option for the library.
 | 
|---|
| 1265 | 
 | 
|---|
| 1266 |         o There are a couple of new and updated based on FreeBSD 5.1.
 | 
|---|
| 1267 |           sys\stdint.h and inttypes.h (and a few internal once) are new.
 | 
|---|
| 1268 |           sys\types.h and unistd.h are the ones most heavily updated.
 | 
|---|
| 1269 |           We're working on getting the headers and libc in a better
 | 
|---|
| 1270 |           shape standardwise to easy compatability and portability.
 | 
|---|
| 1271 | 
 | 
|---|
| 1272 |         o A infinite loop in emxomf has been fixed.
 | 
|---|
| 1273 | 
 | 
|---|
| 1274 |         o Linker error on sopen() has been corrected.
 | 
|---|
| 1275 | 
 | 
|---|
| 1276 |         o .... what did we forget...
 | 
|---|
| 1277 | 
 | 
|---|
| 1278 | 
 | 
|---|
| 1279 | v3.2.2 Alpha 1:
 | 
|---|
| 1280 | ---------------
 | 
|---|
| 1281 | 
 | 
|---|
| 1282 |     This is the first release from InnoTek, and it contains the InnoTek LIBC.
 | 
|---|
| 1283 |     In addition to the new LIBC there is a number of other major changes:
 | 
|---|
| 1284 | 
 | 
|---|
| 1285 |         o Name mangling in OMF mode have changed.
 | 
|---|
| 1286 |           Until this release emxomf used to pretty much strip one leading '_'
 | 
|---|
| 1287 |           from symbols when converting them to omf. This is now longer done
 | 
|---|
| 1288 |           chiefly in order to correctly support mangling calling conventions
 | 
|---|
| 1289 |           like __stdcall and __cdecl. This change have the following side
 | 
|---|
| 1290 |           effects:
 | 
|---|
| 1291 |             - _System and __cdecl no longer produces the same names and hence
 | 
|---|
| 1292 |               all OS/2 API which are _System must be declared as _System in
 | 
|---|
| 1293 |               order to link.
 | 
|---|
| 1294 |             - Assembly code might need an extra underscore to work, or
 | 
|---|
| 1295 |               perhaps change the prototypes to _System.
 | 
|---|
| 1296 |             - Global variables are prepended and underscore, so mixing VAC and
 | 
|---|
| 1297 |               GCC, or accessing globals from asm, take care.
 | 
|---|
| 1298 |               (MSC v6.0 does this too, so it's not any uncommon practise.)
 | 
|---|
| 1299 | 
 | 
|---|
| 1300 |           The OS/2 headers which are included are all updated to use _System.
 | 
|---|
| 1301 | 
 | 
|---|
| 1302 |         o TCPIP headers are updated a quite a bit to match the toolkit ones
 | 
|---|
| 1303 |           and to reflect the fact that the new libc does not a having common
 | 
|---|
| 1304 |           handle space for files and sockets. These changes aren't 100%
 | 
|---|
| 1305 |           completed yet, and usage probably will uncover some issues left in
 | 
|---|
| 1306 |           there. Also for the programmer there is the following changes in
 | 
|---|
| 1307 |           the apis provided:
 | 
|---|
| 1308 |             - TCPV40HDRS are supported and should work like with the toolkit
 | 
|---|
| 1309 |               headers. It will alias all functions to tcpip40_ editions
 | 
|---|
| 1310 |               (using #defines) so we get the right imports thru -llibsocket.
 | 
|---|
| 1311 |             - There is no support for sockets in select(). To do select on
 | 
|---|
| 1312 |               sockets you will have to use bsdselect() or os2_select().
 | 
|---|
| 1313 |               bsdselect() is only available for TCPV40HDRS. For
 | 
|---|
| 1314 |               !defined(TCPV40HDRS) fd_set is in the emx/bsd format and not the
 | 
|---|
| 1315 |               OS/2 tcpip v5.0 format.
 | 
|---|
| 1316 |             - Socket IOCTLs are not supported by the ioctl() libc function
 | 
|---|
| 1317 |               because of the separate handle space for sockets. For sockets
 | 
|---|
| 1318 |               so_ioctl() and os2_ioctl() are used. os2_ioctl() is not available
 | 
|---|
| 1319 |               when TCPV40HDRS is defined. According to the tcpref in v5.0
 | 
|---|
| 1320 |               so_ioctl() only supports BSD ioctls.
 | 
|---|
| 1321 |             - writev() and readv() also clashes with libc. For socket handles
 | 
|---|
| 1322 |               use so_writev() and so_readv().
 | 
|---|
| 1323 | 
 | 
|---|
| 1324 |         o The prefered OMF linker is now ilink. link386 will fail with an odd
 | 
|---|
| 1325 |           error message if you tell gcc/g++ to make debug info. Set the
 | 
|---|
| 1326 |           EMXOMFLD_LINKER environment variable to value ilink in order to use
 | 
|---|
| 1327 |           ilink as OMF linker.
 | 
|---|
| 1328 |           It likely that we will change the default OMF linker to ilink in an
 | 
|---|
| 1329 |           later version of the GCC suite.
 | 
|---|
| 1330 | 
 | 
|---|
| 1331 |         o .... what did we forget...
 | 
|---|