libnids on 64-bit architecture machines
A quick note for anybody using libnids on a 64-bit machine (AMD64), you will need to compile with -fno-strict-aliasing
if you use optimisation at -O2
or above. Without it libnids will silently fail to provide you any data.
Rafal (the original author of libnids) posted some sample broken code in Ubuntu bug #1072650. There is also Gentoo bug #505026 with further information about how the libnids code breaks strict-aliasing rules. There are some good explanations online about this rule, especially in this PDF.
GCC should provide a warning about this, but apparently these bugs are quite hard to detect. GCC bug #60581 has further details.
So until the libnids code is fixed (which might not be soon unless somebody patches it) package maintainers for AMD64 should pass -fno-strict-aliasing
in CFLAGS
when building packages.