aboutsummaryrefslogtreecommitdiff
path: root/libctf/ChangeLog
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2020-06-02 20:04:24 +0100
committerNick Alcock <nick.alcock@oracle.com>2020-07-22 17:57:21 +0100
commit2361f1c85913a0ff0955069bf3182011765a8ae8 (patch)
treeb8a2204417f250c58c0e643e2eb8976ca9f7ee9d /libctf/ChangeLog
parent7eea9d3bdb037a3953101eccdb05826daf2da39a (diff)
downloadgdb-2361f1c85913a0ff0955069bf3182011765a8ae8.zip
gdb-2361f1c85913a0ff0955069bf3182011765a8ae8.tar.gz
gdb-2361f1c85913a0ff0955069bf3182011765a8ae8.tar.bz2
libctf, create: support addition of references to the unimplemented type
The deduplicating linker adds types from the linker inputs to the output via the same API everyone else does, so it's important that we can emit everything that the compiler wants us to. Unfortunately, the compiler may represent the unimplemented type (used for compiler constructs that CTF cannot currently encode) as type zero or as a type of kind CTF_K_UNKNOWN, and we don't allow the addition of types that cite the former. Adding this support adds a tiny bit of extra complexity: additions of structure members immediately following a member of the unimplemented type must be via ctf_add_member_offset or ctf_add_member_encoded, since we have no idea how big members of the unimplemented type are. (Attempts to do otherwise return -ECTF_NONREPRESENTABLE, like other attempts to do forbidden things with the unimplemented type.) Even slices of the unimplemented type are permitted: this is the only case in which you can slice a type that terminates in a non-integral type, on the grounds that it was likely integral in the source code, it's just that we can't represent that sort of integral type properly yet. libctf/ * ctf-create.c (ctf_add_reftype): Support refs to type zero. (ctf_add_array): Support array contents of type zero. (ctf_add_function): Support arguments and return types of type zero. (ctf_add_typedef): Support typedefs to type zero. (ctf_add_member_offset): Support members of type zero, unless added at unspecified (naturally-aligned) offset.
Diffstat (limited to 'libctf/ChangeLog')
-rw-r--r--libctf/ChangeLog10
1 files changed, 10 insertions, 0 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 74e9776..cca704a 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,5 +1,15 @@
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
+ * ctf-create.c (ctf_add_reftype): Support refs to type zero.
+ (ctf_add_array): Support array contents of type zero.
+ (ctf_add_function): Support arguments and return types of
+ type zero.
+ (ctf_add_typedef): Support typedefs to type zero.
+ (ctf_add_member_offset): Support members of type zero,
+ unless added at unspecified (naturally-aligned) offset.
+
+2020-07-22 Nick Alcock <nick.alcock@oracle.com>
+
* ctf-error.c: Include <stddef.h>, for offsetof.
(_ctf_errlist): Migrate to...
(_ctf_errlist_t): ... this.