aboutsummaryrefslogtreecommitdiff
path: root/libctf/ChangeLog
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2019-07-13 21:41:25 +0100
committerNick Alcock <nick.alcock@oracle.com>2019-10-03 17:04:55 +0100
commiteabb7154df3e97e9d808a8673953cc1ce708f3d4 (patch)
treeab9fd36c30115b6c8d19ec062f5f14e1e2860cd9 /libctf/ChangeLog
parent886453cbbc86ba63d8ab1264e9684a7698243eeb (diff)
downloadgdb-eabb7154df3e97e9d808a8673953cc1ce708f3d4.zip
gdb-eabb7154df3e97e9d808a8673953cc1ce708f3d4.tar.gz
gdb-eabb7154df3e97e9d808a8673953cc1ce708f3d4.tar.bz2
libctf: add linking of the variable section
The compiler describes the name and type of all file-scope variables in this section. Merging it at link time requires using the type mapping added in the previous commit to determine the appropriate type for the variable in the output, given its type in the input: we check the shared container first, and if the type doesn't exist there, it must be a conflicted type in the per-CU child, and the variable should go there too. We also put the variable in the per-CU child if a variable with the same name but a different type already exists in the parent: we ignore any such conflict in the child because CTF cannot represent such things, nor can they happen unless a third-party linking program has overridden the mapping of CU to CTF archive member name (using machinery added in a later commit). v3: rewritten using an algorithm that actually works in the case of conflicting names. Some code motion from the next commit. Set the per-CU parent name. v4: check for strdup failure. v5: fix tabdamage. include/ * ctf-api.h (ECTF_INTERNAL): New. libctf/ * ctf-link.c (ctf_create_per_cu): New, refactored out of... (ctf_link_one_type): ... here, with parent-name setting added. (check_variable): New. (ctf_link_one_variable): Likewise. (ctf_link_one_input_archive_member): Call it. * ctf-error.c (_ctf_errlist): Updated with new errors.
Diffstat (limited to 'libctf/ChangeLog')
-rw-r--r--libctf/ChangeLog9
1 files changed, 9 insertions, 0 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 7dc32b8..a5995eb 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,5 +1,14 @@
2019-07-13 Nick Alcock <nick.alcock@oracle.com>
+ * ctf-link.c (ctf_create_per_cu): New, refactored out of...
+ (ctf_link_one_type): ... here, with parent-name setting added.
+ (check_variable): New.
+ (ctf_link_one_variable): Likewise.
+ (ctf_link_one_input_archive_member): Call it.
+ * ctf-error.c (_ctf_errlist): Updated with new errors.
+
+2019-07-13 Nick Alcock <nick.alcock@oracle.com>
+
* ctf-impl.h (ctf_file_t): New field ctf_link_type_mapping.
(struct ctf_link_type_mapping_key): New.
(ctf_hash_type_mapping_key): Likewise.