diff --git a/CODING b/CODING index 9b349131d4..b1e12c764c 100644 --- a/CODING +++ b/CODING @@ -188,3 +188,80 @@ change. One workflow to do this: 2) In your editor, delete the existing Change-ID line. Save and quit. 3) Run "git commit --amend", saving and quitting again. Git will run the commit hook and generate a new Change-ID for Gerrit. + +Warnings +======== + +OpenAFS Warning detection +------------------------- + +There's been a concerted effort over the last few years, by many developers, +to reduce the number of warnings in the OpenAFS tree. In an attempt to +prevent warnings from creeping back in, we now have the ability to break the +build when new warnings appear. + +This is only available for systems with gcc 4.2 or later, and is disabled +unless the --enable-checking option is supplied to configure. Because we +can't remove all of the warnings, we permit file by file (and warning by +warning) disabling of specific warnings. The --enable-checking=all prevents +this, and errors for any file containing a warning. + +Disabling warnings +------------------ + +If warnings are unavoidable in a particular part of the build, they may be +disabled in an number of ways. + +You can disable a single warning type in a particular file by using GCC +pragmas. If a warning can be disabled with a pragma, then the switch to use +will be listed in the error message you receive from the compiler. Pragmas +should be wrapped in IGNORE_SOME_GCC_WARNINGS, so that they aren't used +with non-gcc compilers, and can be disabled if desired. For example: + #ifdef IGNORE_SOME_GCC_WARNINGS + # pragma GCC diagnostic warning "-Wold-style-definition" + #endif + +It would appear that when built with -Werror, the llvm clang compiler will +still upgrade warnings that are suppresed in this way to errors. In this case, +the fix is to mark that warning as ignored, but only for clang. For example: + #ifdef IGNORE_SOME_GCC_WARNINGS + # ifdef __clang__ + # pragma GCC diagnostic ignored "-Wdeprecated-declarations" + # else + # pragma GCC diagnostic warning "-Wdeprecated-declarations" + # endif + #endif + +If a pragma isn't available for your particular warning, you will need to +disable all warnings for the file in question. You can do this by supplying +the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For +example: + lex.yy.o : lex.yy.c y.tab.c + ${CC} -c ${CFLAGS} @CFLAGS_NOERROR@ lex.yy.c + +If you add a new warning inhibition, please also add it to the list below. + +Inhibited warnings +------------------ + +afs/afs_syscall.c : old-style + : strict-proto + : all (ukernel) : syscall pointer issues +afsd/afsd_kernel.c : deprecated : daemon() marked as deprecated on Darwin +auth/ktc.c : all (ukernel) : call_syscall doesn't have a prototype +bozo/bosserver.c : deprecated : daemon() marked as deprecated on Darwin +bucoord/ubik_db_if.c : strict-proto : Ubik_Call +bucoord/commands.c : all : Ubik_Call + : signed vs unsigned for dates +butc/tcudbprocs.c : all : ubik_Call +external/heimdal/hcrypto/validate.c: all: statement with empty body +kauth/admin_tools.c : all : signed vs unsigned for dates +kauth/authclient.c : strict-proto : ubik_Call nonsense +libadmin/kas/afs_kasAdmin.c: all : Ubik_Call nonsense +libadmin/samples/rxstat_query_peer.c : all : util_RPCStatsStateGet types +libadmin/samples/rxstat_query_process.c : all : util_RPCStatsStateGet types +libadmin/test/client.c : all : util_RPCStatsStateGet types +rxkad/ticket5.c : all : v5gen.c has set-but-unused variables +ubik/ubikclient.c : strict-protos : ubik_Call +volser/vol-dump.c : format : afs_sfsize_t + diff --git a/README.WARNINGS b/README.WARNINGS deleted file mode 100644 index fa5fb8fb4f..0000000000 --- a/README.WARNINGS +++ /dev/null @@ -1,73 +0,0 @@ -OpenAFS Warning detection -------------------------- - -There's been a concerted effort over the last few years, by many developers, -to reduce the number of warnings in the OpenAFS tree. In an attempt to -prevent warnings from creeping back in, we now have the ability to break the -build when new warnings appear. - -This is only available for systems with gcc 4.2 or later, and is disabled -unless the --enable-checking option is supplied to configure. Because we -can't remove all of the warnings, we permit file by file (and warning by -warning) disabling of specific warnings. The --enable-checking=all prevents -this, and errors for any file containing a warning. - -Disabling warnings ------------------- - -If warnings are unavoidable in a particular part of the build, they may be -disabled in an number of ways. - -You can disable a single warning type in a particular file by using GCC -pragmas. If a warning can be disabled with a pragma, then the switch to use -will be listed in the error message you receive from the compiler. Pragmas -should be wrapped in IGNORE_SOME_GCC_WARNINGS, so that they aren't used -with non-gcc compilers, and can be disabled if desired. For example: - #ifdef IGNORE_SOME_GCC_WARNINGS - # pragma GCC diagnostic warning "-Wold-style-definition" - #endif - -It would appear that when built with -Werror, the llvm clang compiler will -still upgrade warnings that are suppresed in this way to errors. In this case, -the fix is to mark that warning as ignored, but only for clang. For example: - #ifdef IGNORE_SOME_GCC_WARNINGS - # ifdef __clang__ - # pragma GCC diagnostic ignored "-Wdeprecated-declarations" - # else - # pragma GCC diagnostic warning "-Wdeprecated-declarations" - # endif - #endif - -If a pragma isn't available for your particular warning, you will need to -disable all warnings for the file in question. You can do this by supplying -the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For -example: - lex.yy.o : lex.yy.c y.tab.c - ${CC} -c ${CFLAGS} @CFLAGS_NOERROR@ lex.yy.c - -If you add a new warning inhibition, please also add it to the list below. - -Inhibited warnings ------------------- - -afs/afs_syscall.c : old-style - : strict-proto - : all (ukernel) : syscall pointer issues -afsd/afsd_kernel.c : deprecated : daemon() marked as deprecated on Darwin -auth/ktc.c : all (ukernel) : call_syscall doesn't have a prototype -bozo/bosserver.c : deprecated : daemon() marked as deprecated on Darwin -bucoord/ubik_db_if.c : strict-proto : Ubik_Call -bucoord/commands.c : all : Ubik_Call - : signed vs unsigned for dates -butc/tcudbprocs.c : all : ubik_Call -external/heimdal/hcrypto/validate.c: all: statement with empty body -kauth/admin_tools.c : all : signed vs unsigned for dates -kauth/authclient.c : strict-proto : ubik_Call nonsense -libadmin/kas/afs_kasAdmin.c: all : Ubik_Call nonsense -libadmin/samples/rxstat_query_peer.c : all : util_RPCStatsStateGet types -libadmin/samples/rxstat_query_process.c : all : util_RPCStatsStateGet types -libadmin/test/client.c : all : util_RPCStatsStateGet types -rxkad/ticket5.c : all : v5gen.c has set-but-unused variables -ubik/ubikclient.c : strict-protos : ubik_Call -volser/vol-dump.c : format : afs_sfsize_t -