WGCC has been superseded by parity (http://www.sf.net/projects/parity). Please use parity for new projects!
Be the first to post a text review of wgcc. Rate and review a project by clicking thumbs up or thumbs down in the right column.
============================ Changes in rc.3: ============================ when exporting from static libraries, symbol searching was broken, DATA and functions where messed up. now .file directive is used to seperate files in dumps. when generating imports, exclude symbols with length greater than 247, and issue a warning. ml.exe doesn't accept identifiers with length greater 247 and lines greater 512. when the debug dumper fails, this is a warning, not an error, because it may have enough information to switch to the correct mode. it does not need to know anything about, lets say kernel32.lib ;o) added -pthread* which at link time includes "pthread-library" from config file (default: libpthread.so) linker now deletes existing output files before linking, because it seemed to matter somehow. ============================ Changes in rc.4: ============================ when using -export-all, .so files are searched too. This is because readline names their objects .so in shared build. added -mcpu, behaves the same as -mtune and -march. (unzip using it) ============================ Changes in 2.0.1: ============================ libtool patches reviewed and changed a little. with 1.5.22 only 4 tests still failing. pxwc adds memory leak detection (see __crt_memory.cc). this is included in every build when PXWC_MEMORY_PROFILER is defined. pxwc adds the symbols __rls_indicator__ and __dbg__indicator. when wgcc uses pxwc, and links a shared library it exports one of those symbols depending on the runtime library linked. when linking in shared libs wgcc warns if indicators don't match. wgcc now searches for libraries given without -l (i.e. by real name) too. it first looks in the current directory, and then uses the same mechanism as -l does for looking up lobraries. pxwc creates indicator symbols telling wgcc which runtime to link (debug or release). this is only needed for profiling. ============================ Changes in 2.0.2: ============================ fixed debug dumper task to find out debug infos on vs8 too. ms does not emit line info anymore. fixed include directory handling. .wgccrc doesn't define _DEBUG, but pxwc does when memory profiler is on. context gets dumped also on failure (if do-dump is on). some small fixes for vs8. expand-paths on by default. interix-wgcc.sf.net now online. new logo. preprocessed files get handled correctly. ============================ Changes in 2.0.3: ============================ pxwc dirent functions renamend to avoid conflicts. import generator improved, no existance check anymore. ucl added again. currently just a copy from 0.x tree. ucl now defines __WGCC -O fixed: default is -O2 ============================ Changes in 2.0.4: ============================ CRITICAL: environment handles strings bigger than 4096 chars... used to have fixed buffer size Using wchar_t as builtin native type now with wgcc and ucl. pxwc installs headers in the $prefix/include/pxwc now, to avoid conflicts within default prefixes. wgcc now handles spaces in path names correctly. if a library is not found wgcc raises a fatal error and exists. getenv from pxwc now behaves different: it searches for psxwcl32.dll and uses function ptrs from this dll instead of executable (which still is fallback!). on interix greater 3.5 pxwc looks for psxdll.dll instead of psxwcl32.dll. dumpbin gets called with "@file" now to avoid commandline overflow! libraries from /usr/... are ignored (with warning). added possibility to filter libraries out of import generator process. Optimization now allways disables /Og (global optimization) since this doesn't allways work. ln utility has been changed to always create hard links, since cl.exe can handle those. Dependency Tracking implemented (-M, -MM, -MD, -MMD, -MF, -MT, -MG, -MP, -MQ) ============================ Changes in 2.0.5: ============================ .wgccrc had "no-import-filter" which should have been "import-filter". this feature didn't work. Dependency tracking now not so verbose. warnings have been moved to verbose (s2 -> s3) configurations are now loaded differently. First if set WGCC_CONFIG, then in current dir, then in etc, than in exe dir. configurations are not loaded in a sequence, but only *1* is loaded at all! (except when additional files are passed with -config). the ln utility was broken, and has been reverted. Order of include directories fixed. Now command line has higher precedence than environment. wgcc now recognizes a "\r" on the commandline, and does not warn about unmatched option. the new "32bit-time_t" option in the .wgccrc forces vs8 to use 32bit instead of 64bit time_t's the runtime indicator checks may now be disabled in the .wgccrc file. all dumpbin calls have been replaced (still there on demand) with a lightweight coff library. dumpbin can still be enable din the configuration file. some simple profiling is now done in wgcc. The main tasks are monitored with a simple gettimofday construct (not on native win32). -static option now works as expected, and uses (only!) static libraries instead of shared libraries, and after that static if shared is not found. ============================ Changes in 2.1.0: ============================ say good-bye to dynamic-casts ;o) option manager a lot faster now... dependency tracking speeded up a lot by introducing additional caches, and use the existing ones better... dependency tracking may be disabled to speed up compilation (by about factor 2 to 3). some minor (performance) fixes. filename filter (linker) improved (now checks if last .* is really an extension). wgcc and ucl don't use libtool anymore, since this is just overhead. purify'd wgcc, so there are only 'known memory leaks' left over ;o). ============================ Changes in 2.1.1: ============================ critical bugfix that caused wgcc to crash when certain command line options where given ============================ Changes in 2.1.2: ============================ new configuration file parser that is much faster. eliminated some exception throwing which speeds up command line parsing. test suite has grown a lot. memory profiling has been removed from pxwc. dependency tracking speeded up a lot. general stabilization. ============================ Changes in 2.1.3: ============================ most virtual methods became pure virtual. many, many methods and arguments became const. wide use of initializers instead of assignments in constructors. all exceptions catched by reference. usage of vector instead of list in some places applicable. new dependency tracker that works iterative. the old one can still be activated via configuration. .wgccrc moved to wgccrc (without dot). the coff directory has been renamed to obj, and it's headers are installed in wggc/obj. new filter for warning C4290. filter for D4029 now multi language capable. default output filename is now a.exe, so configure takes .exe as extension. ============================ Changes in 2.1.4: ============================ ucl and ulink have their ".exe" extensions removed, since wgcc now defaults to a.exe. explicit export bug fixed, static libraries couldn't be linked when explicitly exporting (bug in assembler generator). ucl adapted to now configure the pxwc location (get it from wgcc) instead of runtime lookup. ucl and ulink cleaned up a little, they would need rewrite, but they're nearly dead ;o) symbol generator bug fixed where too long symbols could be output because of not taking "__imp_" into account. ucl and ulink use exit(...) rather than return in main() since there seems to be a gcc bug that makes return give some value other than the given one. context dumps updated to include all data added recently. ucl and ulink build fixed when using project files and visual studio. if built this way paths to pxwc need to be specified manually. dependency tracker bug fixed where tracking didn't work for files in other directories than the current one. the default is recursive dependency tracking again, since it's much faster (now the iterative at least works ;o)). ============================ Changes in 2.1.5: ============================ INSTALL file has been updated, with the help of Sheri Pierce (thanks alot!). Again the **** dependency tracker has been fixed... The "bad directory" checks in wgcc are less sensitive to /usr/ now. Not everything under /usr/ is that bad ;o). Configuration loading is now commulative again, which means configuration set via WGCC_CONFIG may extend the "normal" config by setting only a few things. UCL tells VC8 to use 32 bit time_t's like the default of wgcc is. ============================ Changes in 2.2.0: ============================ Stack and Heap sizes and commits can now be set in the configuration file. the usleep function in pxwc has been fixed, there was acalculation error, making it sleep 1000 times too long. the -subsystem switch was added to control the subsystem used at link time. the subsystem can also be set in the configuration to change the default from console to something else. the custom loader has been added which breaks compatability to earlier versions. libraries with custom loader and those without can be mixed freely. wchrpath utility has been added to change the runpath of exe's and dll's which contain the new custom loader. wldd utility has been added to list and lookup shared libraries for binaries which contain the new custom loader. wldd utility is able to demangle C++ symbol names. the custom loader listens to LD_DEBUG to be verbose, LD_DEBUG needs to be set to any string (may not be empty) to enable. the custom loader listens to LD_PRELOAD and can patch shared library entry points to point into preloaded libraries just as on UNIX. The Assembler Generator for the import trampolines has been replaced by a direct binary emitter, which writes COFF Objects. The new Loader Generator uses only a very small amount of assembler now, and mainly generates it's code through the binary emitter used by import generation. ============================ Changes in 2.2.1: ============================ The runpath generator checks for 8K boundary overflow. Before generating runpath, unique the rpath list. wchrpath now knows --cleanup to unique runpaths. wchrpaths help message now include the -k/--keepgoing switch, which was undocumented until now. wchrpath supports a "radical" cleanup now, which eliminates unreferenced runpaths (where none of the dependencies is found) wldd now defaults to a more ldd-like output, -l/--long supported for long listings. wldd supports symbol display only in long output, long output now may be shortened by giving a max depth with -d <depth> wldd supports omitting of locations, to save output space. Long paths are not written, only wether the library was found. the crt0sup library now support LD_LIBRARY_PATH lookup. LD_DEBUG output for loader has been improved a lot. LD_PRELOAD now possible for system libraries too, some functions like malloc need -Y/FORCE to link (it then works fine) wldd is able to collapse symbol trees for libraries whos name contains any string given with -i/--ignore. wgcc supports lazy loading of functions (pointers are loaded at runtime, not while initializing). LD_DEBUG_OUTPUT is now used to determine a file to write debug output to. Utility::filename and Utility::dirname now strip quotes to deliver correct results (fixes filename filters) the import symbol generator gives the COFF object emitter a second chance upon failure, since sometimes there seem to be permission problems. lazy loading only supported for C, but not C++, since there seems to be problems somewhere with C++ generated function code. lazy loading now listens to runpaths and LD_LIBRARY_PATH lazy loading now supported for C++ symbols. The Stub code now saves and restores all registers as they are modified by __ldr_patch_stub ============================ Changes in 2.2.2: ============================ __stdcall symbols are now supported throughout shared libraries. pxwc's minor and micro version defines have been removed. quoting of paths has been fixed in some situations. configure has been changed to support bootstrapping a win32 wgcc version with wgcc itself. the -nostdinc switch has been fixed to exclude pxwc.h from build. -noload switch added to exclude loader generator from command line, usefull for preload libraries. -force switch added to wgcc to allow easier forcing over duplicate symbols for preloading the CRT. added a stub generator, which creates stubs for preloading for all functions in a given import library. Preloading Windows API fixed, loader does not unload unneeded libraries. stub generator includes comments to describe building the generated file. wgccrc was a little re-ordered for more easy finding of important things. the crt0 support library now has a cache for both paths to libraries and library handles. the loader has been fixed to generate correct entry points for dlls (__stdcall with 12 bytes of arguments, includes stack cleanup) wldd now knows the -u options, which undecorates it's argument (C++ mangled symbol) and then exits. the crt0 support library now only loads the C-runtime before all others, but not te C++ runtime anymore. wgcc now supports basic POSIX compilation in theory (you must get the wgccrc right, which isn't easy...) ============================ Changes in 2.2.3: ============================ windows (ce) subsystem now fully supported by loader, default debug output now is ld_debug.out loader now knows in which binary it loads, and prints filename and subsystem to debug output. loader bug fixed where pointer tables where terminated only by two zero bytes instead of eight zero bytes. wgcc now generated 0xbaadf00d as value for imported data symbols, so one can distinguish data and code symbols. crt0sup knows about new data symbol value and handles it correctly. wldd is now able of displaying wether a symbol is data or lazy loaded (and where the stub lies) genstubs generates stubs from loader import tables in binaries to preload exactly what is needed by a binary. wchrpath bug fixed, that prevented it from correctly doing radical cleanup if no paths would be left over. initial very basic ARM processor support added (no loader for ARM right now) Don't load OleAut32.dll via wgcc's Loader since the import library is broken badly! Loader exclusion filter handling fixed. wldd by default does not demangle anymore, use --demangle instead. ARM support grew bigger, sample wgccrc added to repository. ============================ Changes in 2.2.4: ============================ wldd doesn't warn about unknown argument --demangle anymore symbol loading via ordinal numbers implemented wldd changed to know about new ordinal number loading mechanism. loader appends pid to $LD_DEBUG_OUTPUT filename to prevent multiple pricesses writing unbuffered in the same file. performance tuned a little.
Be the first person to add a text review.
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?
Thanks for your review!
Get credit for your review by logging in via OpenID. Click your account provider: