Release Notes¶
Release 1.5¶
- MacOS x86_64 port.
- All debug logging can now be enabled at runtime with a new –debug option on the default main() routine. Log messages have a new format with more information.
- Multiple –format options can be used.
- Add a macro NP_USED which can be used to avoid the issue of modern toolchains aggressively eliding apparently unused static functions, like your test functions.
- Add dynamic mocking: np_mock() and np_mock_by_name()
- Linux (deb and RPM) packages replaced the “novaprova” package with split novaprova-devel and novaprova-doc packages to satisfy rpmlint on modern RPM-based distros.
- Support for DWARF versions 3 and 4.
- Support for ASLR (Address Space Layout Randomization) on modern Linux toolchains.
- The procedure for building from source has changed, please consult the documentation
- Read DWARF line number information and use it generate cleaner and more useful stack traces.
- Various bug fixes result in cleaner and more accurate stack traces for functions called from mocks or forward declared.
- Fixed bug where the test main loop could hang if a test exited uncleanly (Issue #30)
- Fixed bug mocking a function which returns a 64b quantity in the 32b ABI (Issue #20)
- Fixed bug where the overlapping ELF PHDR structures emitted by modern GNU toolchains could confuse NovaProva and break test discovery and mocking.
- Fixed bug which broke skip() for intercepts of a small fraction of libc functions. This bug existed since the first versions in 2011.
- Fixed bug which broke stack alignment for mocked functions on x86_64 Linux when built with clang.
- Remove the previously hardcoded Valgrind suppressions file. A new can be supplied at configure time, but shouldn’t be necessary.
- Detect (at configure time) and handle the incompatible ABI change in binutils 2.27
- Numerous minor bug fixes.
- Internal redesign of how memory permissions for intercepts are handled, on all platforms, for future proofing on Linux and to support Catalina on MacOS.
- Internal redesign of how reference_t works, making some progress towards removing the state_t singleton.
- Internally switched to C++11. You now need a C++11 compiler if you’re building NovaProva from source. The requirements for using NovaProva as a library do NOT change.
- First attempts to use Travis for CI.
Thanks to the following people who contributed to this release (in alphabetical order)
- David Arnold
- Matt Bennett
- greenbender
- Greig Hamilton
- Kyeong Yoo
- Chris Packham
Release 1.4¶
The 1.4 release partially exists in a confusing way which is hard to discover and reconcile given the large time gap since the 1.3 release. To ensure a clean transition we will skip 1.4 entirely.
Release 1.3¶
- Add a default main() routine.
- Check for leaked file descriptors
- Add an autoconf configure script
- JUnit output captures stdout & stderr
- Silently ignore out-of-range DWARF attributes
- Silently ignore pipes to/from Valgrind’s gdbserver
- Avoid Valgrind warning in intercept_tramp() on 64b
- Fix bug which broke test listing
- Added example 13_twoparams
- Various minor fixes
Release 1.2¶
- Support for building with SUSE OBS
- Added example for LCA2013 talk
- Bug fixes exposed by examples
Release 1.1¶
- Linux x86_64 port.
- All the meta-tests pass now.
- Minor cleanups.
Release 1.0¶
- Initial public release