aboutsummaryrefslogtreecommitdiff
path: root/libctf/ChangeLog
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2020-06-04 19:28:52 +0100
committerNick Alcock <nick.alcock@oracle.com>2020-07-22 18:02:18 +0100
commit8d2229ad1e779fbdecfe1d68c02706d075eb81c6 (patch)
treec62cc34c280ec16b5596e43fb29c16ec9530f85b /libctf/ChangeLog
parente148b73013109517c4d179aa9ae5a50b6d1dd5b5 (diff)
downloadgdb-8d2229ad1e779fbdecfe1d68c02706d075eb81c6.zip
gdb-8d2229ad1e779fbdecfe1d68c02706d075eb81c6.tar.gz
gdb-8d2229ad1e779fbdecfe1d68c02706d075eb81c6.tar.bz2
libctf, link: add lazy linking: clean up input members: err/warn cleanup
This rather large and intertwined pile of changes does three things: First, it transitions from dprintf to ctf_err_warn for things the user might care about: this one file is the major impetus for the ctf_err_warn infrastructure, because things like file names are crucial in linker error messages, and errno values are utterly incapable of communicating them Second, it stabilizes the ctf_link APIs: you can now call ctf_link_add_ctf without a CTF argument (only a NAME), to lazily ctf_open the file with the given NAME when needed, and close it as soon as possible, to save memory. This is not an API change because a null CTF argument was prohibited before now. Since getting CTF directly from files uses ctf_open, passing in only a NAME requires use of libctf, not libctf-nobfd. The linker's behaviour is unchanged, as it still passes in a ctf_archive_t as before. This also let us fix a leak: we were opening ctf_archives and their containing ctf_files, then only closing the files and leaving the archives open. Third, this commit restructures the ctf_link_in_member argument used by the CTF linking machinery and adjusts its users accordingly. We drop two members: - arcname, which is difficult to construct and then only used in error messages (that were only dprintf()ed, so never seen!) - share_mode, since we store the flags passed to ctf_link (including the share mode) in a new ctf_file_t.ctf_link_flags to help dedup get hold of it We rename others whose existing names were fairly dreadful: - done_main_member -> done_parent, using consistent terminology for .ctf as the parent of all archive members - main_input_fp -> in_fp_parent, likewise - file_name -> in_file_name, likewise We add one new member, cu_mapped. Finally, we move the various frees of things like mapping table data to the top-level ctf_link, since deduplicating links will want to do that too. include/ * ctf-api.h (ECTF_NEEDSBFD): New. (ECTF_NERR): Adjust. (ctf_link): Rename share_mode arg to flags. libctf/ * Makefile.am: Set -DNOBFD=1 in libctf-nobfd, and =0 elsewhere. * Makefile.in: Regenerated. * ctf-impl.h (ctf_link_input_name): New. (ctf_file_t) <ctf_link_flags>: New. * ctf-create.c (ctf_serialize): Adjust accordingly. * ctf-link.c: Define ctf_open as weak when PIC. (ctf_arc_close_thunk): Remove unnecessary thunk. (ctf_file_close_thunk): Likewise. (ctf_link_input_name): New. (ctf_link_input_t): New value of the ctf_file_t.ctf_link_input. (ctf_link_input_close): Adjust accordingly. (ctf_link_add_ctf_internal): New, split from... (ctf_link_add_ctf): ... here. Return error if lazy loading of CTF is not possible. Change to just call... (ctf_link_add): ... this new function. (ctf_link_add_cu_mapping): Transition to ctf_err_warn. Drop the ctf_file_close_thunk. (ctf_link_in_member_cb_arg_t) <file_name> Rename to... <in_file_name>: ... this. <arcname>: Drop. <share_mode>: Likewise (migrated to ctf_link_flags). <done_main_member>: Rename to... <done_parent>: ... this. <main_input_fp>: Rename to... <in_fp_parent>: ... this. <cu_mapped>: New. (ctf_link_one_type): Adjuwt accordingly. Transition to ctf_err_warn, removing a TODO. (ctf_link_one_variable): Note a case too common to warn about. Report in the debug stream if a cu-mapped link prevents addition of a conflicting variable. (ctf_link_one_input_archive_member): Adjust. (ctf_link_lazy_open): New, open a CTF archive for linking when needed. (ctf_link_close_one_input_archive): New, close it again. (ctf_link_one_input_archive): Adjust for lazy opening, member renames, and ctf_err_warn transition. Move the empty_link_type_mapping call to... (ctf_link): ... here. Adjut for renamings and thunk removal. Don't spuriously fail if some input contains no CTF data. (ctf_link_write): ctf_err_warn transition. * libctf.ver: Remove not-yet-stable comment.
Diffstat (limited to 'libctf/ChangeLog')
-rw-r--r--libctf/ChangeLog45
1 files changed, 45 insertions, 0 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index d54af35..c3451ee 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,5 +1,50 @@
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
+ * Makefile.am: Set -DNOBFD=1 in libctf-nobfd, and =0 elsewhere.
+ * Makefile.in: Regenerated.
+ * ctf-impl.h (ctf_link_input_name): New.
+ (ctf_file_t) <ctf_link_flags>: New.
+ * ctf-create.c (ctf_serialize): Adjust accordingly.
+ * ctf-link.c: Define ctf_open as weak when PIC.
+ (ctf_arc_close_thunk): Remove unnecessary thunk.
+ (ctf_file_close_thunk): Likewise.
+ (ctf_link_input_name): New.
+ (ctf_link_input_t): New value of the ctf_file_t.ctf_link_input.
+ (ctf_link_input_close): Adjust accordingly.
+ (ctf_link_add_ctf_internal): New, split from...
+ (ctf_link_add_ctf): ... here. Return error if lazy loading of
+ CTF is not possible. Change to just call...
+ (ctf_link_add): ... this new function.
+ (ctf_link_add_cu_mapping): Transition to ctf_err_warn. Drop the
+ ctf_file_close_thunk.
+ (ctf_link_in_member_cb_arg_t) <file_name> Rename to...
+ <in_file_name>: ... this.
+ <arcname>: Drop.
+ <share_mode>: Likewise (migrated to ctf_link_flags).
+ <done_main_member>: Rename to...
+ <done_parent>: ... this.
+ <main_input_fp>: Rename to...
+ <in_fp_parent>: ... this.
+ <cu_mapped>: New.
+ (ctf_link_one_type): Adjuwt accordingly. Transition to
+ ctf_err_warn, removing a TODO.
+ (ctf_link_one_variable): Note a case too common to warn about.
+ Report in the debug stream if a cu-mapped link prevents addition
+ of a conflicting variable.
+ (ctf_link_one_input_archive_member): Adjust.
+ (ctf_link_lazy_open): New, open a CTF archive for linking when
+ needed.
+ (ctf_link_close_one_input_archive): New, close it again.
+ (ctf_link_one_input_archive): Adjust for lazy opening, member
+ renames, and ctf_err_warn transition. Move the
+ empty_link_type_mapping call to...
+ (ctf_link): ... here. Adjut for renamings and thunk removal.
+ Don't spuriously fail if some input contains no CTF data.
+ (ctf_link_write): ctf_err_warn transition.
+ * libctf.ver: Remove not-yet-stable comment.
+
+2020-07-22 Nick Alcock <nick.alcock@oracle.com>
+
* ctf-impl.h (ctf_strerror): Delete.
* ctf-subr.c (ctf_strerror): Likewise.
* ctf-error.c (ctf_errmsg): Stop using ctf_strerror: just use