mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-23 06:41:32 +02:00
Modern compilers love to break existing code, and some options detected at build time (such as -fwrapv) are absolutely critical otherwise some bad code can be generated. Given that some users rely on packages that force CFLAGS without being aware of this and can be hit by runtime bugs, we have to help packagers figure that they need to be careful about their build options. The test here consists in detecting correct wrapping of signed integers. Some of the old code relies on it, and modern compilers recently decided to break it. It's normally addressed using -fwrapv which users will rarely enforce in their own flags. Thus it is a good indicator of missing critical CFLAGS, and it happens to be very easy to detect at run time. Note that the test uses argc in order to have a variable. While gcc ignores wrapping even for constants, clang only ignores it for variables. The way the code is constructed doesn't result in code being emitted for optimized builds thanks to value range propagation. This should address GitHub issue #1315, and should be backported to all stable versions. It may result in instantly breaking binaries that seemed to work fine (typically the ones suddenly showing a busy loop after a few weeks of uptime), and require packagers to fix their flags. The vast majority of distro packages are fine and will not be affected though.
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)
Description
Languages
C
98.1%
Shell
0.8%
Makefile
0.5%
Lua
0.2%
Python
0.2%