libctf, open: drop unnecessary historical wart around forwards
authorNick Alcock <nick.alcock@oracle.com>
Tue, 2 Jun 2020 19:26:29 +0000 (20:26 +0100)
committerNick Alcock <nick.alcock@oracle.com>
Wed, 22 Jul 2020 16:57:26 +0000 (17:57 +0100)
When opening, we consider a forward with a kind above the maximum
allowable set of kinds and a forward of kind CTF_K_UNKNOWN to be a
forward to a struct.  Whatever CTF version it was that produced
forwards with no associated kind, it predates anything we can read:
remove this wart.

libctf/
* ctf-open.c (init_types): Remove typeless CTF_K_FORWARD
special-casing.

libctf/ChangeLog
libctf/ctf-open.c

index 8dd6651e07a79726229edec17182124822c9a431..61aebd1422efbc06e2f648ad22e1afcdf2b578ca 100644 (file)
@@ -1,3 +1,8 @@
+2020-07-22  Nick Alcock  <nick.alcock@oracle.com>
+
+       * ctf-open.c (init_types): Remove typeless CTF_K_FORWARD
+       special-casing.
+
 2020-07-22  Nick Alcock  <nick.alcock@oracle.com>
 
        * ctf-types.c (ctf_type_reference): Add support for dynamic slices.
index 4daa1e4535151baa5c132df85e77e8c17f5b09fc..05672f36498b64e9f27cf31e3706380ecb7e54b1 100644 (file)
@@ -692,17 +692,11 @@ init_types (ctf_file_t *fp, ctf_header_t *cth)
       if (vbytes < 0)
        return ECTF_CORRUPT;
 
+      /* For forward declarations, ctt_type is the CTF_K_* kind for the tag,
+        so bump that population count too.  */
       if (kind == CTF_K_FORWARD)
-       {
-         /* For forward declarations, ctt_type is the CTF_K_* kind for the tag,
-            so bump that population count too.  If ctt_type is unknown, treat
-            the tag as a struct.  */
+       pop[tp->ctt_type]++;
 
-         if (tp->ctt_type == CTF_K_UNKNOWN || tp->ctt_type >= CTF_K_MAX)
-           pop[CTF_K_STRUCT]++;
-         else
-           pop[tp->ctt_type]++;
-       }
       tp = (ctf_type_t *) ((uintptr_t) tp + increment + vbytes);
       pop[kind]++;
     }