include: always do unsigned left-shift in CTF_SET_STID
authorNick Alcock <nick.alcock@oracle.com>
Thu, 25 Mar 2021 16:32:46 +0000 (16:32 +0000)
committerNick Alcock <nick.alcock@oracle.com>
Thu, 25 Mar 2021 16:32:47 +0000 (16:32 +0000)
This turns into a signed left shift by 31 bits, otherwise.  This is an
offset and is always treated as unsigned in any case, so add an
appropriate cast.

include/ChangeLog
2021-03-25  Nick Alcock  <nick.alcock@oracle.com>

PR libctf/27628
* ctf-api.h: Fix some indentation.
(CTF_SET_STID): Always do an unsigned shift, even if STID is
signed.

include/ChangeLog
include/ctf.h

index db23305dbf77ba7f80c43074596ef0e6b4dc0baa..5fa6b09ac846831f0858b0574d4c7918812a9014 100644 (file)
@@ -1,3 +1,10 @@
+2021-03-25  Nick Alcock  <nick.alcock@oracle.com>
+
+       PR libctf/27628
+       * ctf-api.h: Fix some indentation.
+       (CTF_SET_STID): Always do an unsigned shift, even if STID is
+       signed.
+
 2021-03-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        * elf/common.h (EM_INTEL205): Renamed to ...
index 50605743ab65cfe4660cdda1a835d97e54a9c792..90631fccbd60110da9acd472e6e3e222e6c61fab 100644 (file)
@@ -358,9 +358,9 @@ union
    c.ctt_info = CTF_TYPE_INFO(kind, vlen);
    c.ctt_name = CTF_TYPE_NAME(stid, offset);  */
 
-# define CTF_V1_INFO_KIND(info)                (((info) & 0xf800) >> 11)
-# define CTF_V1_INFO_ISROOT(info)      (((info) & 0x0400) >> 10)
-# define CTF_V1_INFO_VLEN(info)                (((info) & CTF_MAX_VLEN_V1))
+#define CTF_V1_INFO_KIND(info)         (((info) & 0xf800) >> 11)
+#define CTF_V1_INFO_ISROOT(info)       (((info) & 0x0400) >> 10)
+#define CTF_V1_INFO_VLEN(info)         (((info) & CTF_MAX_VLEN_V1))
 
 #define CTF_V2_INFO_KIND(info)         (((info) & 0xfc000000) >> 26)
 #define CTF_V2_INFO_ISROOT(info)       (((info) & 0x2000000) >> 25)
@@ -368,7 +368,7 @@ union
 
 #define CTF_NAME_STID(name)            ((name) >> 31)
 #define CTF_NAME_OFFSET(name)          ((name) & CTF_MAX_NAME)
-#define CTF_SET_STID(name, stid)       ((name) | (stid) << 31)
+#define CTF_SET_STID(name, stid)       ((name) | ((unsigned int) stid) << 31)
 
 /* V2 only. */
 #define CTF_TYPE_INFO(kind, isroot, vlen) \
@@ -387,10 +387,10 @@ union
 #define CTF_V2_TYPE_TO_INDEX(id)       ((id) & CTF_MAX_PTYPE)
 #define CTF_V2_INDEX_TO_TYPE(id, child) ((child) ? ((id) | (CTF_MAX_PTYPE+1)) : (id))
 
-# define CTF_V1_TYPE_ISPARENT(fp, id)  ((id) <= CTF_MAX_PTYPE_V1)
-# define CTF_V1_TYPE_ISCHILD(fp, id)   ((id) > CTF_MAX_PTYPE_V1)
-# define CTF_V1_TYPE_TO_INDEX(id)      ((id) & CTF_MAX_PTYPE_V1)
-# define CTF_V1_INDEX_TO_TYPE(id, child) ((child) ? ((id) | (CTF_MAX_PTYPE_V1+1)) : (id))
+#define CTF_V1_TYPE_ISPARENT(fp, id)   ((id) <= CTF_MAX_PTYPE_V1)
+#define CTF_V1_TYPE_ISCHILD(fp, id)    ((id) > CTF_MAX_PTYPE_V1)
+#define CTF_V1_TYPE_TO_INDEX(id)       ((id) & CTF_MAX_PTYPE_V1)
+#define CTF_V1_INDEX_TO_TYPE(id, child) ((child) ? ((id) | (CTF_MAX_PTYPE_V1+1)) : (id))
 
 /* Valid for both V1 and V2. */
 #define CTF_TYPE_LSIZE(cttp) \