Red Hat Bugzilla – Bug 1034441
Net-SNMP libraries and headers are invalid due to hyphens.
Last modified: 2015-07-22 03:22:18 EDT
Description of problem: Net-SNMP libraries and headers are invalid due to hyphens. Version-Release number of selected component (if applicable): gcc-4.4.7-4.el6.x86_64 libgcc-4.4.7-4.el6.x86_64 libgcc-4.4.7-4.el6.i686 How reproducible: 1. # vi test.c #ifdef net-snmp-config_multilib_redirection_h #endif int main() { return 0; } 2. # gcc -o test test.c test.c:1:11: warning: extra tokens at end of #ifdef directive Actual results: The C program compiles but warns of: test.c:1:11: warning: extra tokens at end of #ifdef directive. Remove the hyphens from the #ifdef and #define directives and the problem is fixed. Expected results: Absence of the extra token message. Additional info: Non-conformance of standards. C11 and C99 have a section under 6.4.2.1 that describes what is considered valid syntax for an identifier, which includes pre-processor macro identifiers. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf is the standard document for C99 which provides a reference. Upon consideration of what is considered a valid identifier per C99, "net-snmp-config_multilib_redirection_h" is not a valid identifier because it contains a hyphen. The hyphen is not in the list of characters that are acceptable in an identifier.
Affects current net-snmp packages in RHEL 6.5: net-snmp-libs-5.5-44.el6_4.4.x86_64 net-snmp-devel-5.5-44.el6_4.4.x86_64 net-snmp-5.5-44.el6_4.4.x86_64 net-snmp-utils-5.5-44.el6_4.4.x86_64
Sure, hyphen is not valid identifier, the above is handled essentially as #ifdef net with extra tokens after it for which it warns. Various sources contain extra tokens after e.g. #ifdef, or #else, #endif etc. If you want the compiler to error on this, just use -pedantic-errors, then you'll get a hard error instead of warning.
Well, it can still be fixed on net-snmp side simply by renaming net-snmp-* symbols to net_snmp_*.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2015-1385.html