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();
}

Reply via email to