1v0.3 (2007-05-01) 2================= 3 4I have tagged and tarballed a 0.3 release of Sparse, now available from 5http://ftp.be.debian.org/pub/software/devel/sparse/dist/ with sha1sum 1d868b29234176abd5f3f5463aad1f11d5268dc2. 6 7Note that the Sparse Git repository has moved to: 8 9 https://git.kernel.org/cgit/devel/sparse/sparse.git 10 11The old repository location will continue to work for now, but please update 12any references you have to the old location. 13 14Thanks to Christopher Li for contributing heavily to this release, including 15several notable new features. See the full changelog for details. 16 17In addition to numerous bug fixes, cleanups, and new test cases, this release 18includes several new visible features: 19 20* A Sparse-based implementation of ctags, thanks to Christopher Li. Now you can have a ctags that 'actually parses C'. 21* Sparse now correctly supports annotations on inline functions. 22* The new '-ventry' option will make Sparse dump its internal linearized bytecode format. 23* Sparse now parses the '__regparm__' attribute just like 'regparm', fixing a warning with pthreads from glibc 2.5. 24* Sparse now interprets the integer size attributes 'QI', 'SI', 'HI', and 'DI', and their double-underscore variants. 25* Sparse now supports attributes on labels, sometimes used to specify 'unused' labels. 26* Sparse now handles structure attributes between the structure keyword and the name, fixing many parse errors. 27* Sparse now supports more than one command-line include file. 28* The pkg-config file gets installed to its correct location under 'lib', rather than under 'share'. 29 30Notable internal changes: 31 32* Fully table-driven attribute parsing. This simplifies the C parser and makes it far easier to add new attributes to Sparse. 33* Many internal cleanups, more information preserved for backends, more useful formats for that information, and lower memory usage. 34* Fixed Sparse warnings about itself. 35 36Full changelog: 37 38Christopher Li (24): 39 * Sparse-based Ctags implementation 40 * Change the symbol access list to a pseudo list 41 * Add instruction to pseudo user tracking. 42 * Update usage chain for dead instructions 43 * Update usage chain for dead branch instruction. 44 * Allow more than one command line include file. 45 * Enhance debug information. 46 * Another attempt to fix the attribute parsing. 47 * Marking anonymous string. 48 * Bug fix in pointer modifier inheritance at function degeneration. 49 * Handle structure attributes between the structure keyword and the name 50 * Fix the segfault when initializer has unknown symbol 51 * Fix double semicolon in struct declaration 52 * Make the ptrlist using the sparse allocator. 53 * Fix core dump on anonymous symbol. 54 * Fix a bug that match_idents forget to end with NULL 55 * Adding debug option for showing the linearized instruction. 56 * Fix core dump on huge switch 57 * Introduce expression_error 58 * Disable liveness "dead" instruction by default. 59 * Add annotation for inline function call. 60 * Introduce keyword driven attribute parsing 61 * Fix the annotated inline call position 62 * handle label attributes 63 64Christopher Li and Josh Triplett (4): 65 * Introduce top level parsing for asm parsing. 66 * Introducing statement keywords 67 * Free up some special bits in modifiers. 68 * Moving statement parsing into smaller functions. 69 70James Westby (2): 71 * Fix mistaken comparison that becomes a no-op. 72 * Update the information in README about using the library. 73 74Josh Triplett (30): 75 * Add ctags to .gitignore 76 * Add a return in the last case of a switch; redundant but less error-prone. 77 * Coding style fix: in a pointer type, * goes with the name, not the type. 78 * Add missing #include "allocate.h" in linearize.h for DECLARE_ALLOCATOR. 79 * Add test case for function pointer modifier inheritance 80 * Add test case for structure attribute placement. 81 * Add test case for double semicolon in structure declaration. 82 * Coding style fix: use parentheses with sizeof 83 * Move pkg-config file to lib, rather than share 84 * Add static to declarations in test cases, to remove unrelated warnings. 85 * Fix typo in symbol.h: s/keywrods/keywords/ 86 * Fix typos in comments 87 * Use GCC format and sentinel attributes on appropriate functions 88 * Fix two potential NULL pointer dereferences in dissect.c 89 * Avoid returning an uninitialized pointer from dup_list of an empty list 90 * Remove stray space from expand_compare in expand.c 91 * Prevent potential NULL pointer dereference in expand_compare 92 * Add test case for basic address_space annotations. 93 * Use noreturn on die() and error_die() 94 * Parse and ignore the __regparm__ attribute, just like regparm. 95 * Fix comment to reference #weak_define rather than #ifndef, matching code 96 * Teach cgcc about -Wtransparent-union and -Wno-transparent-union 97 * Declare die_if_error extern in lib.h 98 * Remove unused variable "include" from lib.c 99 * Declare do_error static 100 * Declare gcc_patchlevel extern in lib.h 101 * compile-i386.c: Declare regs_in_use static 102 * simplify.c: Declare delete_pseudo_user_list_entry static 103 * linearize: DECLARE_ALLOCATOR for asm_constraint and asm_rules 104 * Fix most -Wshadow warnings in Sparse. 105 106Oleg Nesterov (3): 107 * dissect: cleanup report_implicit() 108 * dissect: fix multidimensional array initializer 109 * dissect: simplify lookup_member() 110 111-- Josh Triplett 112