ec0179e libctf: add linking of the variable section

Authored and Committed by Nick Alcock 4 years ago
    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.
    
    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.
    
        
file modified
+4 -0
file modified
+2 -1
file modified
+9 -0
file modified
+2 -1
file modified
+134 -24