diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/kconfig/symbol.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index a76b8fd1db4f..c9a6775565bf 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
@@ -136,7 +136,7 @@ static struct property *sym_get_range_prop(struct symbol *sym) | |||
136 | return NULL; | 136 | return NULL; |
137 | } | 137 | } |
138 | 138 | ||
139 | static long sym_get_range_val(struct symbol *sym, int base) | 139 | static long long sym_get_range_val(struct symbol *sym, int base) |
140 | { | 140 | { |
141 | sym_calc_value(sym); | 141 | sym_calc_value(sym); |
142 | switch (sym->type) { | 142 | switch (sym->type) { |
@@ -149,13 +149,14 @@ static long sym_get_range_val(struct symbol *sym, int base) | |||
149 | default: | 149 | default: |
150 | break; | 150 | break; |
151 | } | 151 | } |
152 | return strtol(sym->curr.val, NULL, base); | 152 | return strtoll(sym->curr.val, NULL, base); |
153 | } | 153 | } |
154 | 154 | ||
155 | static void sym_validate_range(struct symbol *sym) | 155 | static void sym_validate_range(struct symbol *sym) |
156 | { | 156 | { |
157 | struct property *prop; | 157 | struct property *prop; |
158 | long base, val, val2; | 158 | int base; |
159 | long long val, val2; | ||
159 | char str[64]; | 160 | char str[64]; |
160 | 161 | ||
161 | switch (sym->type) { | 162 | switch (sym->type) { |
@@ -171,7 +172,7 @@ static void sym_validate_range(struct symbol *sym) | |||
171 | prop = sym_get_range_prop(sym); | 172 | prop = sym_get_range_prop(sym); |
172 | if (!prop) | 173 | if (!prop) |
173 | return; | 174 | return; |
174 | val = strtol(sym->curr.val, NULL, base); | 175 | val = strtoll(sym->curr.val, NULL, base); |
175 | val2 = sym_get_range_val(prop->expr->left.sym, base); | 176 | val2 = sym_get_range_val(prop->expr->left.sym, base); |
176 | if (val >= val2) { | 177 | if (val >= val2) { |
177 | val2 = sym_get_range_val(prop->expr->right.sym, base); | 178 | val2 = sym_get_range_val(prop->expr->right.sym, base); |
@@ -179,9 +180,9 @@ static void sym_validate_range(struct symbol *sym) | |||
179 | return; | 180 | return; |
180 | } | 181 | } |
181 | if (sym->type == S_INT) | 182 | if (sym->type == S_INT) |
182 | sprintf(str, "%ld", val2); | 183 | sprintf(str, "%lld", val2); |
183 | else | 184 | else |
184 | sprintf(str, "0x%lx", val2); | 185 | sprintf(str, "0x%llx", val2); |
185 | sym->curr.val = strdup(str); | 186 | sym->curr.val = strdup(str); |
186 | } | 187 | } |
187 | 188 | ||
@@ -594,7 +595,7 @@ bool sym_string_valid(struct symbol *sym, const char *str) | |||
594 | bool sym_string_within_range(struct symbol *sym, const char *str) | 595 | bool sym_string_within_range(struct symbol *sym, const char *str) |
595 | { | 596 | { |
596 | struct property *prop; | 597 | struct property *prop; |
597 | long val; | 598 | long long val; |
598 | 599 | ||
599 | switch (sym->type) { | 600 | switch (sym->type) { |
600 | case S_STRING: | 601 | case S_STRING: |
@@ -605,7 +606,7 @@ bool sym_string_within_range(struct symbol *sym, const char *str) | |||
605 | prop = sym_get_range_prop(sym); | 606 | prop = sym_get_range_prop(sym); |
606 | if (!prop) | 607 | if (!prop) |
607 | return true; | 608 | return true; |
608 | val = strtol(str, NULL, 10); | 609 | val = strtoll(str, NULL, 10); |
609 | return val >= sym_get_range_val(prop->expr->left.sym, 10) && | 610 | return val >= sym_get_range_val(prop->expr->left.sym, 10) && |
610 | val <= sym_get_range_val(prop->expr->right.sym, 10); | 611 | val <= sym_get_range_val(prop->expr->right.sym, 10); |
611 | case S_HEX: | 612 | case S_HEX: |
@@ -614,7 +615,7 @@ bool sym_string_within_range(struct symbol *sym, const char *str) | |||
614 | prop = sym_get_range_prop(sym); | 615 | prop = sym_get_range_prop(sym); |
615 | if (!prop) | 616 | if (!prop) |
616 | return true; | 617 | return true; |
617 | val = strtol(str, NULL, 16); | 618 | val = strtoll(str, NULL, 16); |
618 | return val >= sym_get_range_val(prop->expr->left.sym, 16) && | 619 | return val >= sym_get_range_val(prop->expr->left.sym, 16) && |
619 | val <= sym_get_range_val(prop->expr->right.sym, 16); | 620 | val <= sym_get_range_val(prop->expr->right.sym, 16); |
620 | case S_BOOLEAN: | 621 | case S_BOOLEAN: |