[coreboot-gerrit] Patch set updated for coreboot: lint/kconfig_lint: Make sure all symbols have a type defined

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Thu Nov 10 22:33:38 CET 2016


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17345

-gerrit

commit daac0cd69bc27af4c9e997f7fac94a63a713c979
Author: Martin Roth <martinroth at google.com>
Date:   Wed Nov 9 14:27:00 2016 -0700

    lint/kconfig_lint: Make sure all symbols have a type defined
    
    Show an error if a symbol does not have a defined type.
    
    This caused a problem of an undefined symbol in check_defaults, so
    we just skip those symbols there as we can't verify the default pattern
    without knowing the type.
    
    Change-Id: I28711a77962e16f6fc89789400363edd0fdd0931
    Signed-off-by: Martin Roth <martinroth at google.com>
---
 util/lint/kconfig_lint        | 29 +++++++++++++++++++++++++++++
 util/lint/kconfig_lint_README |  1 +
 2 files changed, 30 insertions(+)

diff --git a/util/lint/kconfig_lint b/util/lint/kconfig_lint
index 064f3db..717684c 100755
--- a/util/lint/kconfig_lint
+++ b/util/lint/kconfig_lint
@@ -84,6 +84,7 @@ sub Main {
 
     load_config($config_file) if ($config_file);
 
+    check_type();
     check_defaults();
     check_referenced_symbols();
 
@@ -272,6 +273,31 @@ sub check_for_def {
 }
 
 #-------------------------------------------------------------------------------
+# check_type - Make sure that all symbols have a type defined.
+#
+# Conflicting types are found when parsing the Kconfig tree.
+#-------------------------------------------------------------------------------
+sub check_type {
+
+    # loop through each defined symbol
+    foreach my $sym ( sort ( keys %symbols ) ) {
+
+        # Make sure there's a type set for the symbol
+        if (!defined $symbols{$sym}{type}) {
+
+            #loop through each instance of that symbol
+            for ( my $sym_num = 0 ; $sym_num <= $symbols{$sym}{count} ; $sym_num++ ) {
+
+                my $filename = $symbols{$sym}{$sym_num}{file};
+                my $line_no  = $symbols{$sym}{$sym_num}{line_no};
+
+                show_error("No type defined for symbol $sym defined at $filename:$line_no.");
+            }
+        }
+    }
+}
+
+#-------------------------------------------------------------------------------
 # check_is_enabled - The IS_ENABLED() macro is only valid for symbols of type
 # bool. It would probably work on type hex or int if the value was 0 or 1, but
 # this seems like a bad plan.  Using it on strings is dead out.
@@ -332,6 +358,9 @@ sub check_defaults {
                 my $filename = $symbols{$sym}{$sym_num}{file};
                 my $line_no  = $symbols{$sym}{$sym_num}{default}{$def_num}{default_line_no};
 
+                # Make sure there's a type set for the symbol
+                next if (!defined $symbols{$sym}{type});
+
                 # skip good defaults
                 if (! ((($symbols{$sym}{type} eq "hex") && ($symbols{$sym}{$sym_num}{default}{$def_num}{default} =~ /^0x/)) ||
                     (($symbols{$sym}{type} eq "int") && ($symbols{$sym}{$sym_num}{default}{$def_num}{default} =~ /^[-0-9]+$/)) ||
diff --git a/util/lint/kconfig_lint_README b/util/lint/kconfig_lint_README
index 5a5eacd..c36320e 100644
--- a/util/lint/kconfig_lint_README
+++ b/util/lint/kconfig_lint_README
@@ -89,6 +89,7 @@ Errors in Kconfig that are also caught by Kconfig itself:
   int in another location.
 - Type keywords (bool, int, hex, string) used outside of a config block.
 - Using a 'prompt' keyword not inside a config or choice block.
+- Symbols with no defined type.
 
 Errors in coreboot source files:
 - The IS_ENABLED macro is only valid for bool symbols.



More information about the coreboot-gerrit mailing list