aboutsummaryrefslogtreecommitdiff
path: root/libctf
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2020-07-21 15:38:08 +0100
committerNick Alcock <nick.alcock@oracle.com>2020-07-22 18:05:32 +0100
commit8c419a91d761989b824d1bbe3b4575068317181e (patch)
treec5876fb9131c7d553ea9503b862906533899c957 /libctf
parent734c894234e800c924d97ae69d4774c9b00797dd (diff)
downloadfsf-binutils-gdb-8c419a91d761989b824d1bbe3b4575068317181e.zip
fsf-binutils-gdb-8c419a91d761989b824d1bbe3b4575068317181e.tar.gz
fsf-binutils-gdb-8c419a91d761989b824d1bbe3b4575068317181e.tar.bz2
libctf: fixes for systems on which sizeof (void *) > sizeof (long)
Systems like mingw64 have pointers that can only be represented by 'long long'. Consistently cast integers stored in pointers through uintptr_t to cater for this. libctf/ * ctf-create.c (ctf_dtd_insert): Add uintptr_t casts. (ctf_dtd_delete): Likewise. (ctf_dtd_lookup): Likewise. (ctf_rollback): Likewise. * ctf-hash.c (ctf_hash_lookup_type): Likewise. * ctf-types.c (ctf_lookup_by_rawhash): Likewise.
Diffstat (limited to 'libctf')
-rw-r--r--libctf/ChangeLog9
-rw-r--r--libctf/ctf-create.c16
-rw-r--r--libctf/ctf-hash.c2
-rw-r--r--libctf/ctf-types.c2
4 files changed, 21 insertions, 8 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 9183d2b..6887c3f 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,5 +1,14 @@
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
+ * ctf-create.c (ctf_dtd_insert): Add uintptr_t casts.
+ (ctf_dtd_delete): Likewise.
+ (ctf_dtd_lookup): Likewise.
+ (ctf_rollback): Likewise.
+ * ctf-hash.c (ctf_hash_lookup_type): Likewise.
+ * ctf-types.c (ctf_lookup_by_rawhash): Likewise.
+
+2020-07-22 Nick Alcock <nick.alcock@oracle.com>
+
* ctf-lookup.c (ctf_lookup_by_name): Adjust.
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
diff --git a/libctf/ctf-create.c b/libctf/ctf-create.c
index 35c286c..ee87575 100644
--- a/libctf/ctf-create.c
+++ b/libctf/ctf-create.c
@@ -617,16 +617,19 @@ int
ctf_dtd_insert (ctf_file_t *fp, ctf_dtdef_t *dtd, int flag, int kind)
{
const char *name;
- if (ctf_dynhash_insert (fp->ctf_dthash, (void *) dtd->dtd_type, dtd) < 0)
+ if (ctf_dynhash_insert (fp->ctf_dthash, (void *) (uintptr_t) dtd->dtd_type,
+ dtd) < 0)
return -1;
if (flag == CTF_ADD_ROOT && dtd->dtd_data.ctt_name
&& (name = ctf_strraw (fp, dtd->dtd_data.ctt_name)) != NULL)
{
if (ctf_dynhash_insert (ctf_name_table (fp, kind)->ctn_writable,
- (char *) name, (void *) dtd->dtd_type) < 0)
+ (char *) name, (void *) (uintptr_t)
+ dtd->dtd_type) < 0)
{
- ctf_dynhash_remove (fp->ctf_dthash, (void *) dtd->dtd_type);
+ ctf_dynhash_remove (fp->ctf_dthash, (void *) (uintptr_t)
+ dtd->dtd_type);
return -1;
}
}
@@ -642,7 +645,7 @@ ctf_dtd_delete (ctf_file_t *fp, ctf_dtdef_t *dtd)
int name_kind = kind;
const char *name;
- ctf_dynhash_remove (fp->ctf_dthash, (void *) dtd->dtd_type);
+ ctf_dynhash_remove (fp->ctf_dthash, (void *) (uintptr_t) dtd->dtd_type);
switch (kind)
{
@@ -682,7 +685,8 @@ ctf_dtd_delete (ctf_file_t *fp, ctf_dtdef_t *dtd)
ctf_dtdef_t *
ctf_dtd_lookup (const ctf_file_t *fp, ctf_id_t type)
{
- return (ctf_dtdef_t *) ctf_dynhash_lookup (fp->ctf_dthash, (void *) type);
+ return (ctf_dtdef_t *)
+ ctf_dynhash_lookup (fp->ctf_dthash, (void *) (uintptr_t) type);
}
ctf_dtdef_t *
@@ -794,7 +798,7 @@ ctf_rollback (ctf_file_t *fp, ctf_snapshot_id_t id)
ctf_str_remove_ref (fp, name, &dtd->dtd_data.ctt_name);
}
- ctf_dynhash_remove (fp->ctf_dthash, (void *) dtd->dtd_type);
+ ctf_dynhash_remove (fp->ctf_dthash, (void *) (uintptr_t) dtd->dtd_type);
ctf_dtd_delete (fp, dtd);
}
diff --git a/libctf/ctf-hash.c b/libctf/ctf-hash.c
index 2975260..d6e9f5e 100644
--- a/libctf/ctf-hash.c
+++ b/libctf/ctf-hash.c
@@ -829,7 +829,7 @@ ctf_hash_lookup_type (ctf_hash_t *hp, ctf_file_t *fp __attribute__ ((__unused__)
slot = ctf_hashtab_lookup ((struct htab *) hp, key, NO_INSERT);
if (slot)
- return (ctf_id_t) ((*slot)->value);
+ return (ctf_id_t) (uintptr_t) ((*slot)->value);
return 0;
}
diff --git a/libctf/ctf-types.c b/libctf/ctf-types.c
index ddcca66..4843de3 100644
--- a/libctf/ctf-types.c
+++ b/libctf/ctf-types.c
@@ -658,7 +658,7 @@ ctf_id_t ctf_lookup_by_rawhash (ctf_file_t *fp, ctf_names_t *np, const char *nam
ctf_id_t id;
if (fp->ctf_flags & LCTF_RDWR)
- id = (ctf_id_t) ctf_dynhash_lookup (np->ctn_writable, name);
+ id = (ctf_id_t) (uintptr_t) ctf_dynhash_lookup (np->ctn_writable, name);
else
id = ctf_hash_lookup_type (np->ctn_readonly, fp, name);
return id;