Hi,
I have here an (attached) testcase which unexpectedly turns off warnings. Compiling it using `gcc test.c -c -Wall` (or test.i) gives: test.c: In function ‘pam_sm_authenticate’: test.c:6: warning: implicit declaration of function ‘undef’ What I would have expected: test.c: In function ‘pam_sm_authenticate’: test.c:6: warning: implicit declaration of function ‘undef’ test.c: In function ‘pam_sm_authenticate’: test.c:11: warning: implicit declaration of function ‘undef2’ Compiler in use: openSUSE 11.1 Using built-in specs. Target: i586-suse-linux Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.3 --enable-linux-futex --without-system-libunwind --with-cpu=generic --build=i586-suse-linux Thread model: posix gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)
#include <security/pam_modules.h> int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) { undef(); } void f2(void) { undef2(); }
# 1 "test.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "test.c" # 1 "/usr/include/security/pam_modules.h" 1 3 4 # 17 "/usr/include/security/pam_modules.h" 3 4 # 1 "/usr/include/security/_pam_types.h" 1 3 4 # 18 "/usr/include/security/_pam_types.h" 3 4 typedef struct pam_handle pam_handle_t; # 170 "/usr/include/security/_pam_types.h" 3 4 extern int __attribute__((__nonnull__ (1))) pam_set_item(pam_handle_t *pamh, int item_type, const void *item); extern int __attribute__((__nonnull__ (1))) pam_get_item(const pam_handle_t *pamh, int item_type, const void **item); extern const char * pam_strerror(pam_handle_t *pamh, int errnum); extern int __attribute__((__nonnull__ (1,2))) pam_putenv(pam_handle_t *pamh, const char *name_value); extern const char * __attribute__((__nonnull__ (1,2))) pam_getenv(pam_handle_t *pamh, const char *name); extern char ** __attribute__((__nonnull__ (1))) pam_getenvlist(pam_handle_t *pamh); # 216 "/usr/include/security/_pam_types.h" 3 4 extern int pam_fail_delay(pam_handle_t *pamh, unsigned int musec_delay); # 247 "/usr/include/security/_pam_types.h" 3 4 struct pam_message { int msg_style; const char *msg; }; # 272 "/usr/include/security/_pam_types.h" 3 4 struct pam_response { char *resp; int resp_retcode; }; struct pam_conv { int (*conv)(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr); void *appdata_ptr; }; struct pam_xauth_data { int namelen; char *name; int datalen; char *data; }; # 18 "/usr/include/security/pam_modules.h" 2 3 4 extern int __attribute__((__nonnull__ (1,2))) pam_set_data(pam_handle_t *pamh, const char *module_data_name, void *data, void (*cleanup)(pam_handle_t *pamh, void *data, int error_status)); extern int __attribute__((__nonnull__ (1,2,3))) pam_get_data(const pam_handle_t *pamh, const char *module_data_name, const void **data); extern int __attribute__((__nonnull__ (1,2))) pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt); # 70 "/usr/include/security/pam_modules.h" 3 4 extern int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv); extern int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv); extern int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv); extern int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv); extern int pam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv); extern int pam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv); # 134 "/usr/include/security/pam_modules.h" 3 4 # 1 "/usr/include/security/_pam_compat.h" 1 3 4 # 135 "/usr/include/security/pam_modules.h" 2 3 4 # 2 "test.c" 2 int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) { undef(); } void f2(void) { undef2(); }