lib/asn1: gen_template cast integer const to uintptr_t then void ptr
When generating code cast integer constants to (void *) with an intermediate cast to (uintptr_t). On Windows this avoid hundreds of warnings about a signed integer being cast to a pointer of larger size. No functional change. Change-Id: Ifd2acd0cfe99a7859aad58e79ab0f0c12b28fdeb
This commit is contained in:

committed by
Nico Williams

parent
42ad8b4c55
commit
fb1ded497a
@@ -549,11 +549,11 @@ defval(struct templatehead *temp, Member *m)
|
|||||||
{
|
{
|
||||||
switch (m->defval->type) {
|
switch (m->defval->type) {
|
||||||
case booleanvalue:
|
case booleanvalue:
|
||||||
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)%u }",
|
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)%u }",
|
||||||
m->defval->u.booleanvalue);
|
m->defval->u.booleanvalue);
|
||||||
break;
|
break;
|
||||||
case nullvalue:
|
case nullvalue:
|
||||||
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_NULL, ~0, (void *)0 }");
|
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_NULL, ~0, (void *)(uintptr_t)0 }");
|
||||||
break;
|
break;
|
||||||
case integervalue: {
|
case integervalue: {
|
||||||
const char *dv = "A1_DV_INTEGER";
|
const char *dv = "A1_DV_INTEGER";
|
||||||
@@ -585,7 +585,7 @@ defval(struct templatehead *temp, Member *m)
|
|||||||
dv = "A1_DV_INTEGER64";
|
dv = "A1_DV_INTEGER64";
|
||||||
else
|
else
|
||||||
dv = "A1_DV_INTEGER32";
|
dv = "A1_DV_INTEGER32";
|
||||||
add_line(temp, "{ A1_OP_DEFVAL|%s, ~0, (void *)%llu }",
|
add_line(temp, "{ A1_OP_DEFVAL|%s, ~0, (void *)(uintptr_t)%llu }",
|
||||||
dv, (long long)m->defval->u.integervalue);
|
dv, (long long)m->defval->u.integervalue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -595,7 +595,7 @@ defval(struct templatehead *temp, Member *m)
|
|||||||
if (rk_strasvis("ed, m->defval->u.stringvalue,
|
if (rk_strasvis("ed, m->defval->u.stringvalue,
|
||||||
VIS_CSTYLE | VIS_NL, "\"") < 0)
|
VIS_CSTYLE | VIS_NL, "\"") < 0)
|
||||||
err(1, "Could not quote a string");
|
err(1, "Could not quote a string");
|
||||||
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_UTF8STRING, ~0, (void *)\"%s\" }",
|
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_UTF8STRING, ~0, (void *)(uintptr_t)\"%s\" }",
|
||||||
quoted);
|
quoted);
|
||||||
free(quoted);
|
free(quoted);
|
||||||
break;
|
break;
|
||||||
@@ -628,7 +628,7 @@ defval(struct templatehead *temp, Member *m)
|
|||||||
sz -= len;
|
sz -= len;
|
||||||
p += len;
|
p += len;
|
||||||
|
|
||||||
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_INTEGER, ~0, (void *)\"%s\" }", s);
|
add_line(temp, "{ A1_OP_DEFVAL|A1_DV_INTEGER, ~0, (void *)(uintptr_t)\"%s\" }", s);
|
||||||
free(s);
|
free(s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -794,7 +794,7 @@ template_object_set(IOSObjectSet *os, Field *typeidfield, Field *opentypefield)
|
|||||||
switch (typeidobjf->value->type) {
|
switch (typeidobjf->value->type) {
|
||||||
case integervalue:
|
case integervalue:
|
||||||
add_line(&tl->template,
|
add_line(&tl->template,
|
||||||
"{ A1_OP_OPENTYPE_ID | A1_OTI_IS_INTEGER, 0, (void *)%lld }",
|
"{ A1_OP_OPENTYPE_ID | A1_OTI_IS_INTEGER, 0, (void *)(uintptr_t)%lld }",
|
||||||
(long long)typeidobjf->value->u.integervalue);
|
(long long)typeidobjf->value->u.integervalue);
|
||||||
break;
|
break;
|
||||||
case objectidentifiervalue:
|
case objectidentifiervalue:
|
||||||
@@ -820,7 +820,7 @@ template_object_set(IOSObjectSet *os, Field *typeidfield, Field *opentypefield)
|
|||||||
}
|
}
|
||||||
free(objects);
|
free(objects);
|
||||||
|
|
||||||
tlist_header(tl, "{ 0, 0, ((void *)%lu) }", nobjs);
|
tlist_header(tl, "{ 0, 0, ((void *)(uintptr_t)%lu) }", nobjs);
|
||||||
tlist_print(tl);
|
tlist_print(tl);
|
||||||
tlist_add(tl);
|
tlist_add(tl);
|
||||||
os->symbol->emitted_template = 1;
|
os->symbol->emitted_template = 1;
|
||||||
@@ -957,7 +957,7 @@ template_members(struct templatehead *temp,
|
|||||||
"{ A1_OP_NAME, %d, \"%s\" }", m->val, m->name);
|
"{ A1_OP_NAME, %d, \"%s\" }", m->val, m->name);
|
||||||
nmemb++;
|
nmemb++;
|
||||||
}
|
}
|
||||||
tlist_header(tl, "{ 0, 0, ((void *)%lu) }", nmemb);
|
tlist_header(tl, "{ 0, 0, ((void *)(uintptr_t)%lu) }", nmemb);
|
||||||
/* XXX Accidentally O(N^2)? */
|
/* XXX Accidentally O(N^2)? */
|
||||||
if (!tlist_find_dup(tl)) {
|
if (!tlist_find_dup(tl)) {
|
||||||
tlist_print(tl);
|
tlist_print(tl);
|
||||||
@@ -1039,7 +1039,7 @@ template_members(struct templatehead *temp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(f, "static const struct asn1_template asn1_%s_%s[] = {\n", basetype, bname);
|
fprintf(f, "static const struct asn1_template asn1_%s_%s[] = {\n", basetype, bname);
|
||||||
fprintf(f, "/* 0 */ { 0%s, sizeof(%s), ((void *)%lu) },\n",
|
fprintf(f, "/* 0 */ { 0%s, sizeof(%s), ((void *)(uintptr_t)%lu) },\n",
|
||||||
rfc1510_bitstring ? "|A1_HBF_RFC1510" : "",
|
rfc1510_bitstring ? "|A1_HBF_RFC1510" : "",
|
||||||
basetype, (unsigned long)count);
|
basetype, (unsigned long)count);
|
||||||
i = 1;
|
i = 1;
|
||||||
@@ -1343,7 +1343,7 @@ template_members(struct templatehead *temp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(f, "static const struct asn1_template %s[] = {\n", tname);
|
fprintf(f, "static const struct asn1_template %s[] = {\n", tname);
|
||||||
fprintf(f, "/* 0 */ { %s, offsetof(%s%s, element), ((void *)%lu) },\n",
|
fprintf(f, "/* 0 */ { %s, offsetof(%s%s, element), ((void *)(uintptr_t)%lu) },\n",
|
||||||
e ? e : "0", isstruct ? "struct " : "", basetype, (unsigned long)count);
|
e ? e : "0", isstruct ? "struct " : "", basetype, (unsigned long)count);
|
||||||
i = 1;
|
i = 1;
|
||||||
HEIM_TAILQ_FOREACH(q, &template, members) {
|
HEIM_TAILQ_FOREACH(q, &template, members) {
|
||||||
@@ -1464,7 +1464,7 @@ generate_template_type(const char *varname,
|
|||||||
|
|
||||||
fprintf(get_code_file(), "/* generate_template_type: %s */\n", tl->name);
|
fprintf(get_code_file(), "/* generate_template_type: %s */\n", tl->name);
|
||||||
|
|
||||||
tlist_header(tl, "{ 0%s%s, sizeof(%s), ((void *)%lu) }",
|
tlist_header(tl, "{ 0%s%s, sizeof(%s), ((void *)(uintptr_t)%lu) }",
|
||||||
(symname && preserve_type(symname)) ? "|A1_HF_PRESERVE" : "",
|
(symname && preserve_type(symname)) ? "|A1_HF_PRESERVE" : "",
|
||||||
have_ellipsis ? "|A1_HF_ELLIPSIS" : "", szt, tlist_count(tl));
|
have_ellipsis ? "|A1_HF_ELLIPSIS" : "", szt, tlist_count(tl));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user