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()