64-bit build fixes for ASN.1 compiler 64-bit integer support

This commit is contained in:
Nicolas Williams
2011-12-13 13:02:26 -06:00
parent 449fb4775e
commit a222521e68
6 changed files with 25 additions and 20 deletions

View File

@@ -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;
} }
} }

View File

@@ -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);

View File

@@ -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);

View File

@@ -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:

View File

@@ -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:

View File

@@ -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;