X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fcontrib%2Fari%2Fgdb_ari.sh;h=ee9f16a8ddd4e979e9998e33cfffd9e1108048b0;hb=a15a95ed265962027c7a8e0269bead6e5795006f;hp=2211f66bdf97e62c9c58ddf9d8b897c728c1023c;hpb=a93478eab4c34a25032e58b173fede5d14fe823d;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/contrib/ari/gdb_ari.sh b/gdb/contrib/ari/gdb_ari.sh old mode 100644 new mode 100755 index 2211f66bdf..ee9f16a8dd --- a/gdb/contrib/ari/gdb_ari.sh +++ b/gdb/contrib/ari/gdb_ari.sh @@ -2,7 +2,7 @@ # GDB script to list of problems using awk. # -# Copyright (C) 2002-2012 Free Software Foundation, Inc. +# Copyright (C) 2002-2019 Free Software Foundation, Inc. # # This file is part of GDB. # @@ -27,7 +27,7 @@ LC_ALL=C ; export LC_ALL # Permanent checks take the form: -# Do not use XXXX, ISO C 90 implies YYYY +# Do not use XXXX, C++11 implies YYYY # Do not use XXXX, instead use YYYY''. # and should never be removed. @@ -60,7 +60,7 @@ Options: -Werror Treat all problems as errors. -Wall Report all problems. -Wari Report problems that should be fixed in new code. - -W Report problems in the specifed category. Vaid categories + -W Report problems in the specifed category. Valid categories are: ${all} EOF exit 1 @@ -255,32 +255,6 @@ BEGIN { } -# Things in comments - -BEGIN { doc["GNU/Linux"] = "\ -Do not use `Linux'\'', instead use `Linux kernel'\'' or `GNU/Linux system'\'';\ - comments should clearly differentiate between the two (this test assumes that\ - word `Linux'\'' appears on the same line as the word `GNU'\'' or `kernel'\''\ - or a kernel version" - category["GNU/Linux"] = ari_comment -} -/(^|[^_[:alnum:]])Linux([^_[:alnum:]]|$)/ \ -&& !/(^|[^_[:alnum:]])Linux\[sic\]([^_[:alnum:]]|$)/ \ -&& !/(^|[^_[:alnum:]])GNU\/Linux([^_[:alnum:]]|$)/ \ -&& !/(^|[^_[:alnum:]])Linux kernel([^_[:alnum:]]|$)/ \ -&& !/(^|[^_[:alnum:]])Linux [[:digit:]]\.[[:digit:]]+)/ { - fail("GNU/Linux") -} - -BEGIN { doc["ARGSUSED"] = "\ -Do not use ARGSUSED, unnecessary" - category["ARGSUSED"] = ari_regression -} -/(^|[^_[:alnum:]])ARGSUSED([^_[:alnum:]]|$)/ { - fail("ARGSUSED") -} - - # SNIP - Strip out comments - SNIP FNR == 1 { @@ -321,14 +295,6 @@ Do not include assert.h, instead include \"gdb_assert.h\""; fail("assert.h") } -BEGIN { doc["dirent.h"] = "\ -Do not include dirent.h, instead include gdb_dirent.h" - category["dirent.h"] = ari_regression -} -/^#[[:space:]]*include[[:space:]]*.dirent\.h./ { - fail("dirent.h") -} - BEGIN { doc["regex.h"] = "\ Do not include regex.h, instead include gdb_regex.h" category["regex.h"] = ari_regression @@ -355,19 +321,9 @@ Do not include gnu-regex.h, instead include gdb_regex.h" fail("gnu regex.h") } -BEGIN { doc["stat.h"] = "\ -Do not include stat.h or sys/stat.h, instead include gdb_stat.h" - category["stat.h"] = ari_regression - fix("stat.h", "common/gdb_stat.h", 1) -} -/^#[[:space:]]*include[[:space:]]*.stat\.h./ \ -|| /^#[[:space:]]*include[[:space:]]*.sys\/stat\.h./ { - fail("stat.h") -} - BEGIN { doc["wait.h"] = "\ Do not include wait.h or sys/wait.h, instead include gdb_wait.h" - fix("wait.h", "common/gdb_wait.h", 2); + fix("wait.h", "gdbsupport/gdb_wait.h", 2); category["wait.h"] = ari_regression } /^#[[:space:]]*include[[:space:]]*.wait\.h./ \ @@ -397,7 +353,8 @@ Do not use printf(\"%p\"), instead use printf(\"%s\",paddr()) to dump a \ target address, or host_address_to_string() for a host address" category["%p"] = ari_code } -/%p/ && !/%prec/ { +# Allow gdb %p extensions, but not other uses of %p. +/%p[^[\]sF]/ && !/%prec/ { fail("%p") } @@ -466,27 +423,8 @@ FNR == 1 { cont_p { $0 = full_line $0; cont_p = 0; full_line = ""; } -# GDB uses ISO C 90. Check for any non pure ISO C 90 code - -BEGIN { doc["PARAMS"] = "\ -Do not use PARAMS(), ISO C 90 implies prototypes" - category["PARAMS"] = ari_regression -} -/(^|[^_[:alnum:]])PARAMS([^_[:alnum:]]|$)/ { - fail("PARAMS") -} - -BEGIN { doc["__func__"] = "\ -Do not use __func__, ISO C 90 does not support this macro" - category["__func__"] = ari_regression - fix("__func__", "common/gdb_assert.h", 1) -} -/(^|[^_[:alnum:]])__func__([^_[:alnum:]]|$)/ { - fail("__func__") -} - BEGIN { doc["__FUNCTION__"] = "\ -Do not use __FUNCTION__, ISO C 90 does not support this macro" +Do not use __FUNCTION__, C++11 does not support this macro" category["__FUNCTION__"] = ari_regression } /(^|[^_[:alnum:]])__FUNCTION__([^_[:alnum:]]|$)/ { @@ -503,7 +441,7 @@ autoconf tests" } BEGIN { doc["PTR"] = "\ -Do not use PTR, ISO C 90 implies `void *'\''" +Do not use PTR, C++11 implies `void *'\''" category["PTR"] = ari_regression #fix("PTR", "gdb/utils.c", 6) } @@ -558,7 +496,7 @@ Function name starts lower case but has uppercased letters." editCase_full_line = "" } (possible_editCase) { - if (ARI_OK == "ediCase function") { + if (ARI_OK == "editCase function") { possible_editCase = 0 } # Closing brace found? @@ -600,16 +538,6 @@ Function name in first column should be restricted to function implementation" } -# Functions without any parameter should have (void) -# after their name not simply (). -BEGIN { doc["no parameter function"] = "\ -Function having no parameter should be declared with funcname (void)." - category["no parameter function"] = ari_code -} -/^[a-zA-Z][a-z0-9A-Z_]*[[:space:]]*\(\)/ { - fail("no parameter function") -} - BEGIN { doc["hash"] = "\ Do not use ` #...'\'', instead use `#...'\''(some compilers only correctly \ parse a C preprocessor directive when `#'\'' is the first character on \ @@ -624,7 +552,11 @@ BEGIN { doc["OP eol"] = "\ Do not use &&, or || at the end of a line" category["OP eol"] = ari_code } -/(\|\||\&\&|==|!=)[[:space:]]*$/ { +# * operator needs a special treatment as it can be a +# valid end of line for a pointer type definition +# Only catch case where an assignment or an opening brace is present +/(\|\||\&\&|==|!=|[[:space:]][+\-\/])[[:space:]]*$/ \ +|| /(\(|=)[[:space:]].*[[:space:]]\*[[:space:]]*$/ { fail("OP eol") } @@ -632,8 +564,8 @@ BEGIN { doc["strerror"] = "\ Do not use strerror(), instead use safe_strerror()" category["strerror"] = ari_regression fix("strerror", "gdb/gdb_string.h", 1) - fix("strerror", "gdb/mingw-hdep.c", 1) - fix("strerror", "gdb/posix-hdep.c", 1) + fix("strerror", "gdb/gdbsupport/mingw-strerror.c", 1) + fix("strerror", "gdb/gdbsupport/posix-strerror.c", 1) } /(^|[^_[:alnum:]])strerror[[:space:]]*\(/ { fail("strerror") @@ -767,7 +699,7 @@ Replace ADD_SHARED_SYMBOL_FILES with nothing, not needed?" BEGIN { doc["SOLIB_ADD"] = "\ Replace SOLIB_ADD with nothing, not needed?" - category["SOLIB_ADD"] = ari_deprecate + category["SOLIB_ADD"] = ari_regression } /(^|[^_[:alnum:]])SOLIB_ADD([^_[:alnum:]]|$)/ { fail("SOLIB_ADD") @@ -775,7 +707,7 @@ Replace SOLIB_ADD with nothing, not needed?" BEGIN { doc["SOLIB_CREATE_INFERIOR_HOOK"] = "\ Replace SOLIB_CREATE_INFERIOR_HOOK with nothing, not needed?" - category["SOLIB_CREATE_INFERIOR_HOOK"] = ari_deprecate + category["SOLIB_CREATE_INFERIOR_HOOK"] = ari_regression } /(^|[^_[:alnum:]])SOLIB_CREATE_INFERIOR_HOOK([^_[:alnum:]]|$)/ { fail("SOLIB_CREATE_INFERIOR_HOOK") @@ -807,7 +739,7 @@ Replace PROCESS_LINENUMBER_HOOK with nothing, not needed?" BEGIN { doc["PC_SOLIB"] = "\ Replace PC_SOLIB with nothing, not needed?" - category["PC_SOLIB"] = ari_deprecate + category["PC_SOLIB"] = ari_regression } /(^|[^_[:alnum:]])PC_SOLIB([^_[:alnum:]]|$)/ { fail("PC_SOLIB") @@ -855,7 +787,7 @@ unconditionally" } BEGIN { doc["bcmp"] = "\ -Do not use bcmp(), ISO C 90 implies memcmp()" +Do not use bcmp(), C++11 implies memcmp()" category["bcmp"] = ari_regression } /(^|[^_[:alnum:]])bcmp[[:space:]]*\(/ { @@ -863,7 +795,7 @@ Do not use bcmp(), ISO C 90 implies memcmp()" } BEGIN { doc["setlinebuf"] = "\ -Do not use setlinebuf(), ISO C 90 implies setvbuf()" +Do not use setlinebuf(), C++11 implies setvbuf()" category["setlinebuf"] = ari_regression } /(^|[^_[:alnum:]])setlinebuf[[:space:]]*\(/ { @@ -871,7 +803,7 @@ Do not use setlinebuf(), ISO C 90 implies setvbuf()" } BEGIN { doc["bcopy"] = "\ -Do not use bcopy(), ISO C 90 implies memcpy() and memmove()" +Do not use bcopy(), C++11 implies memcpy() and memmove()" category["bcopy"] = ari_regression } /(^|[^_[:alnum:]])bcopy[[:space:]]*\(/ { @@ -1051,7 +983,6 @@ a DECR_PC_AFTER_BREAK" category["write_pc"] = ari_deprecate } /(^|[^_[:alnum:]])write_pc[[:space:]]*\(/ || \ -/(^|[^_[:alnum:]])set_gdbarch_write_pc[[:space:]]*\(/ || \ /(^|[^_[:alnum:]])TARGET_WRITE_PC[[:space:]]*\(/ { fail("write_pc") } @@ -1120,13 +1051,29 @@ Do not use asprintf(), instead use xstrprintf()" BEGIN { doc["vasprintf"] = "\ Do not use vasprintf(), instead use xstrvprintf" - fix("vasprintf", "common/common-utils.c", 1) + fix("vasprintf", "gdbsupport/common-utils.c", 1) category["vasprintf"] = ari_regression } /(^|[^_[:alnum:]])vasprintf[[:space:]]*\(/ { fail("vasprintf") } +BEGIN { doc["printf_vma"] = "\ +Do not use printf_vma, instead use paddress or phex_nz" + category["printf_vma"] = ari_code +} +/(^|[^_[:alnum:]])printf_vma[[:space:]]*\(/ { + fail("printf_vma") +} + +BEGIN { doc["sprintf_vma"] = "\ +Do not use sprintf_vma, instead use paddress or phex_nz" + category["sprintf_vma"] = ari_code +} +/(^|[^_[:alnum:]])sprintf_vma[[:space:]]*\(/ { + fail("sprintf_vma") +} + # More generic memory operations BEGIN { doc["bzero"] = "\ @@ -1163,38 +1110,6 @@ Do not use strnicmp(), instead use strncasecmp()" fail("strnicmp") } -# Boolean expressions and conditionals - -BEGIN { doc["boolean"] = "\ -Do not use `boolean'\'', use `int'\'' instead" - category["boolean"] = ari_regression -} -/(^|[^_[:alnum:]])boolean([^_[:alnum:]]|$)/ { - if (is_yacc_or_lex == 0) { - fail("boolean") - } -} - -BEGIN { doc["false"] = "\ -Definitely do not use `false'\'' in boolean expressions" - category["false"] = ari_regression -} -/(^|[^_[:alnum:]])false([^_[:alnum:]]|$)/ { - if (is_yacc_or_lex == 0) { - fail("false") - } -} - -BEGIN { doc["true"] = "\ -Do not try to use `true'\'' in boolean expressions" - category["true"] = ari_regression -} -/(^|[^_[:alnum:]])true([^_[:alnum:]]|$)/ { - if (is_yacc_or_lex == 0) { - fail("true") - } -} - # Typedefs that are either redundant or can be reduced to `struct # type *''. # Must be placed before if assignment otherwise ARI exceptions @@ -1216,20 +1131,6 @@ Do not use strlen dirent.d_name, instead use NAMELEN" fail("strlen d_name") } -BEGIN { doc["var_boolean"] = "\ -Replace var_boolean with add_setshow_boolean_cmd" - category["var_boolean"] = ari_regression - fix("var_boolean", "gdb/command.h", 1) - # fix only uses the last directory level - fix("var_boolean", "cli/cli-decode.c", 2) -} -/(^|[^_[:alnum:]])var_boolean([^_[:alnum:]]|$)/ { - if (($0 !~ /(^|[^_[:alnum:]])case *var_boolean:/) \ - && ($0 !~ /(^|[^_[:alnum:]])[=!]= *var_boolean/)) { - fail("var_boolean") - } -} - BEGIN { doc["generic_use_struct_convention"] = "\ Replace generic_use_struct_convention with nothing, \ EXTRACT_STRUCT_VALUE_ADDRESS is a predicate"