v0.6.2 (2020-06-21)¶
- add a new tool: sindex - the semantic utility
Sindex is a simple to use cscope-like tool but understanding how symbols are used and which can track struct members.
add support for GCC’s __auto_type
add support for _Generic
- fully propagate declarations downward.
For example, it means that code like:
static int foo(void); int foo(void) { return 0; }
now behaves as expected: foo() is effectively static.
- multi-arch:
- allow a single sparse executable to be used for multiple architectures
- add support for -mcmodel & -f{pic,PIC,pie,PIE}, mainly for RISC-V
- add new option, –arch=$ARCH, to specify the target architecture
- move all arch-specific code into separate files (target-$ARCH.c)
- try to support the various floating-point ABIs on ARM
- fix wchar_t & wint_t for openbsd
- add missing predefines for PPC
- add missing predefines: __amd64 & __amd64__
- sparc32 on SunOS/Solaris uses 128-bit long double
- fix wchar_t & wint_t on SunOS/Solaris
- teach sparse about -fshort-wchar
- keep cygwin specifics with i386/x86-64 specifics
- keep BSD & Darwin specifics with i386/x86-64 specifics
- fix the signedness of plain chars
- add support for s390 (ILP32)
- add predefine for __mips__
- predefine “i386” if needed
- pre-define __unix__ and friends
- add necessary defined for sunos-derived systems
- improved detection of the native OS
- warnings:
- improve diagnostic message about wrong redeclaration
- conditionally accept { 0 } without warnings
- add -Wexternal-function-has-definition
- display the bitfield name in error messages
- oversized bitfields are now errors
- add an option to suppress warning ‘no newline at EOF’
- warn when jumping into statement expressions
- warn when using undefined labels
- warn on defined but unused labels
- attributes:
- allows ‘__<attribute-name>__’ for all attributes.
- improve handling of function attributes
- separate modifiers into type/declaration
- add support for attributes ‘unused’ & ‘gnu_inline’
- simplify parsing of inline/__tls/__visible
- better handle function-only attributes
- teach sparse about gnu_inline
- parse enum attributes and, for now, ignore them
- cgcc:
- use -fshort-char for Cygwin
- add support for riscv32 & riscv64
- don’t define __CYGWIN32__ on 64-bit
- filter-out sparse-specific -msize-long & -msize-llp64
- use -mfloat-abi=hard for armhf
- define _BIG_ENDIAN when needed
- remove definition of _STRING_ARCH_unaligned (defined by glibc)
- removed unneeded predefines for integers (now defined by sparse)
- better multi-arch support by using –arch=$ARCH
- testsuite:
- avoid standard includes in the tests
- fix testcase with non-constant initializer
- IR
- add support for the linearization of builtins
- generate OP_UNREACH from __builtin_unreachable()
- add OP_UNREACH after calls to __noreturn functions
- doc:
- do not use obsolete sphinx’s AutodocReporter
- Sphinx’s minimal version is now 1.7
- add basic doc about the type system
- doc is now accessible as: https://sparse.docs.kernel.org
- release notes (old and current ones) have been added to the doc
- now using the sphinx_rtd_theme instead of the classic theme
- misc:
- add support for ‘-std=c17/c18’
- simplify testing of which version of the standard is used
- ensure that typeofs are evaluated before using show_typename()
- use a single way to expand typeofs
- various improvements to the ‘dissect’ tool
- simplify the parsing of type specifiers
- improve diagnostic messages concerning bitfields
- fix premature examination of dereferenced object
- various fixes for the expansion of constant symbols
- fix type compatibility of _Atomic types
- add support for builtin macros with argument
- add support for __has_feature() & __has_extension()