64-bit build fixes for ASN.1 compiler 64-bit integer support
This commit is contained in:
		| @@ -815,12 +815,13 @@ check_tag_length64(void) | |||||||
| 	    } | 	    } | ||||||
| 	    if (td[i].expected_len != sz) { | 	    if (td[i].expected_len != sz) { | ||||||
| 		printf("wrong expected size for tag test %d\n", i); | 		printf("wrong expected size for tag test %d\n", i); | ||||||
| 		printf("sz = %d\n", sz); | 		printf("sz = %lu\n", (unsigned long)sz); | ||||||
| 		failed = 1; | 		failed = 1; | ||||||
| 	    } | 	    } | ||||||
| 	    if (values[i] != u) { | 	    if (values[i] != u) { | ||||||
| 		printf("wrong value for tag test %d\n", i); | 		printf("wrong value for tag test %d\n", i); | ||||||
| 		printf("Expected value: %lld\nActual value: %lld\n", values[i], u); | 		printf("Expected value: %llu\nActual value: %llu\n", | ||||||
|  | 		       (unsigned long long)values[i], (unsigned long long)u); | ||||||
| 		failed = 1; | 		failed = 1; | ||||||
| 	    } | 	    } | ||||||
| 	} | 	} | ||||||
| @@ -874,12 +875,13 @@ check_tag_length64s(void) | |||||||
| 	    } | 	    } | ||||||
| 	    if (td[i].expected_len != sz) { | 	    if (td[i].expected_len != sz) { | ||||||
| 		printf("wrong expected size for tag test %d\n", i); | 		printf("wrong expected size for tag test %d\n", i); | ||||||
| 		printf("sz = %d\n", sz); | 		printf("sz = %lu\n", (unsigned long)sz); | ||||||
| 		failed = 1; | 		failed = 1; | ||||||
| 	    } | 	    } | ||||||
| 	    if (values[i] != u) { | 	    if (values[i] != u) { | ||||||
| 		printf("wrong value for tag test %d\n", i); | 		printf("wrong value for tag test %d\n", i); | ||||||
| 		printf("Expected value: %lld\nActual value: %lld\n", values[i], u); | 		printf("Expected value: %lld\nActual value: %lld\n", | ||||||
|  | 		       (long long)values[i], (long long)u); | ||||||
| 		failed = 1; | 		failed = 1; | ||||||
| 	    } | 	    } | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -306,7 +306,7 @@ gen_assign_defval(const char *var, struct value *val) | |||||||
| 	fprintf(codefile, "if((%s = strdup(\"%s\")) == NULL)\nreturn ENOMEM;\n", var, val->u.stringvalue); | 	fprintf(codefile, "if((%s = strdup(\"%s\")) == NULL)\nreturn ENOMEM;\n", var, val->u.stringvalue); | ||||||
| 	break; | 	break; | ||||||
|     case integervalue: |     case integervalue: | ||||||
| 	fprintf(codefile, "%s = %lld;\n", var, val->u.integervalue); | 	fprintf(codefile, "%s = %lld;\n", var, (long long)val->u.integervalue); | ||||||
| 	break; | 	break; | ||||||
|     case booleanvalue: |     case booleanvalue: | ||||||
| 	if(val->u.booleanvalue) | 	if(val->u.booleanvalue) | ||||||
| @@ -327,7 +327,8 @@ gen_compare_defval(const char *var, struct value *val) | |||||||
| 	fprintf(codefile, "if(strcmp(%s, \"%s\") != 0)\n", var, val->u.stringvalue); | 	fprintf(codefile, "if(strcmp(%s, \"%s\") != 0)\n", var, val->u.stringvalue); | ||||||
| 	break; | 	break; | ||||||
|     case integervalue: |     case integervalue: | ||||||
| 	fprintf(codefile, "if(%s != %lld)\n", var, val->u.integervalue); | 	fprintf(codefile, "if(%s != %lld)\n", var, | ||||||
|  | 		(long long)val->u.integervalue); | ||||||
| 	break; | 	break; | ||||||
|     case booleanvalue: |     case booleanvalue: | ||||||
| 	if(val->u.booleanvalue) | 	if(val->u.booleanvalue) | ||||||
| @@ -400,8 +401,8 @@ generate_constant (const Symbol *s) | |||||||
|     case booleanvalue: |     case booleanvalue: | ||||||
| 	break; | 	break; | ||||||
|     case integervalue: |     case integervalue: | ||||||
| 	fprintf (headerfile, "enum { %s = %lld };\n\n", | 	fprintf(headerfile, "enum { %s = %lld };\n\n", s->gen_name, | ||||||
| 		 s->gen_name, s->value->u.integervalue); | 		(long long)s->value->u.integervalue); | ||||||
| 	break; | 	break; | ||||||
|     case nullvalue: |     case nullvalue: | ||||||
| 	break; | 	break; | ||||||
| @@ -542,9 +543,10 @@ define_asn1 (int level, Type *t) | |||||||
|     case TInteger: |     case TInteger: | ||||||
| 	if(t->members == NULL) { | 	if(t->members == NULL) { | ||||||
|             fprintf (headerfile, "INTEGER"); |             fprintf (headerfile, "INTEGER"); | ||||||
| 	    if (t->range) | 	    if (t->range) { | ||||||
| 		fprintf(headerfile, " (%lld..%lld)", | 		fprintf(headerfile, " (%lld..%lld)", | ||||||
| 			 t->range->min, t->range->max); | 			(long long)t->range->min, (long long)t->range->max); | ||||||
|  | 	    } | ||||||
|         } else { |         } else { | ||||||
| 	    Member *m; | 	    Member *m; | ||||||
|             fprintf (headerfile, "INTEGER {\n"); |             fprintf (headerfile, "INTEGER {\n"); | ||||||
| @@ -734,9 +736,10 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ | |||||||
| 	    fprintf (headerfile, "int %s;\n", name); | 	    fprintf (headerfile, "int %s;\n", name); | ||||||
| 	} else if (t->range->min >= 0 && t->range->max <= UINT_MAX) { | 	} else if (t->range->min >= 0 && t->range->max <= UINT_MAX) { | ||||||
| 	    fprintf (headerfile, "unsigned int %s;\n", name); | 	    fprintf (headerfile, "unsigned int %s;\n", name); | ||||||
| 	} else | 	} else { | ||||||
| 	    errx(1, "%s: unsupported range %lld -> %lld", | 	    errx(1, "%s: unsupported range %lld -> %lld", | ||||||
| 		 name, t->range->min, t->range->max); | 		 name, (long long)t->range->min, (long long)t->range->max); | ||||||
|  | 	} | ||||||
| 	break; | 	break; | ||||||
|     case TBoolean: |     case TBoolean: | ||||||
| 	space(level); | 	space(level); | ||||||
|   | |||||||
| @@ -192,19 +192,19 @@ range_check(const char *name, | |||||||
| 		 "if ((%s)->%s > %lld) {\n" | 		 "if ((%s)->%s > %lld) {\n" | ||||||
| 		 "e = ASN1_MAX_CONSTRAINT; %s;\n" | 		 "e = ASN1_MAX_CONSTRAINT; %s;\n" | ||||||
| 		 "}\n", | 		 "}\n", | ||||||
| 		 name, length, r->max, forwstr); | 		 name, length, (long long)r->max, forwstr); | ||||||
|     if (r->min - 1 == r->max || r->min < r->max) |     if (r->min - 1 == r->max || r->min < r->max) | ||||||
| 	fprintf (codefile, | 	fprintf (codefile, | ||||||
| 		 "if ((%s)->%s < %lld) {\n" | 		 "if ((%s)->%s < %lld) {\n" | ||||||
| 		 "e = ASN1_MIN_CONSTRAINT; %s;\n" | 		 "e = ASN1_MIN_CONSTRAINT; %s;\n" | ||||||
| 		 "}\n", | 		 "}\n", | ||||||
| 		 name, length, r->min, forwstr); | 		 name, length, (long long)r->min, forwstr); | ||||||
|     if (r->max == r->min) |     if (r->max == r->min) | ||||||
| 	fprintf (codefile, | 	fprintf (codefile, | ||||||
| 		 "if ((%s)->%s != %lld) {\n" | 		 "if ((%s)->%s != %lld) {\n" | ||||||
| 		 "e = ASN1_EXACT_CONSTRAINT; %s;\n" | 		 "e = ASN1_EXACT_CONSTRAINT; %s;\n" | ||||||
| 		 "}\n", | 		 "}\n", | ||||||
| 		 name, length, r->min, forwstr); | 		 name, length, (long long)r->min, forwstr); | ||||||
| } | } | ||||||
|  |  | ||||||
| static int | static int | ||||||
| @@ -262,7 +262,7 @@ decode_type (const char *name, const Type *t, int optional, | |||||||
| 	    decode_primitive ("unsigned", name, forwstr); | 	    decode_primitive ("unsigned", name, forwstr); | ||||||
| 	} else | 	} else | ||||||
| 	    errx(1, "%s: unsupported range %lld -> %lld", | 	    errx(1, "%s: unsupported range %lld -> %lld", | ||||||
| 		 name, t->range->min, t->range->max); | 		 name, (long long)t->range->min, (long long)t->range->max); | ||||||
| 	break; | 	break; | ||||||
|     case TBoolean: |     case TBoolean: | ||||||
|       decode_primitive ("boolean", name, forwstr); |       decode_primitive ("boolean", name, forwstr); | ||||||
|   | |||||||
| @@ -139,7 +139,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr) | |||||||
| 	    encode_primitive ("unsigned", name); | 	    encode_primitive ("unsigned", name); | ||||||
| 	} else | 	} else | ||||||
| 	    errx(1, "%s: unsupported range %lld -> %lld", | 	    errx(1, "%s: unsupported range %lld -> %lld", | ||||||
| 		 name, t->range->min, t->range->max); | 		 name, (long long)t->range->min, (long long)t->range->max); | ||||||
| 	constructed = 0; | 	constructed = 0; | ||||||
| 	break; | 	break; | ||||||
|     case TBoolean: |     case TBoolean: | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ length_type (const char *name, const Type *t, | |||||||
| 	    length_primitive ("unsigned", name, variable); | 	    length_primitive ("unsigned", name, variable); | ||||||
| 	} else | 	} else | ||||||
| 	    errx(1, "%s: unsupported range %lld -> %lld", | 	    errx(1, "%s: unsupported range %lld -> %lld", | ||||||
| 		 name, t->range->min, t->range->max); | 		 name, (long long)t->range->min, (long long)t->range->max); | ||||||
|  |  | ||||||
| 	break; | 	break; | ||||||
|     case TBoolean: |     case TBoolean: | ||||||
|   | |||||||
| @@ -502,7 +502,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na | |||||||
| 	    itype = "UNSIGNED"; | 	    itype = "UNSIGNED"; | ||||||
| 	else | 	else | ||||||
| 	    errx(1, "%s: unsupported range %lld -> %lld", | 	    errx(1, "%s: unsupported range %lld -> %lld", | ||||||
| 		 name, t->range->min, t->range->max); | 		 name, (long long)t->range->min, (long long)t->range->max); | ||||||
|  |  | ||||||
| 	add_line(temp, "{ A1_PARSE_T(A1T_%s), %s, NULL }", itype, poffset); | 	add_line(temp, "{ A1_PARSE_T(A1T_%s), %s, NULL }", itype, poffset); | ||||||
| 	break; | 	break; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Nicolas Williams
					Nicolas Williams