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
int pam_sm_authenticate(pam_handle_t *pamh, int flags,
int argc, const char **argv)
{
undef();
}
void f2(void)
{
undef2();
}
# 1 "test.c"
# 1 ""
# 1 ""
# 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();
}