9221725 PR26150, Assertion when asm() defines global symbols, -flto and --start-group

Authored and Committed by Alan Modra 3 years ago
    PR26150, Assertion when asm() defines global symbols, -flto and --start-group
    
    If an archive map contains symbols that aren't actually defined by the
    indexed element for any reason, then loading that element will leave
    the symbol undefined (or common).  This leads to the possibility of
    the element being loaded again should the archive be searched again
    due to the action of --start-group/--end-group.  The testcase
    triggering this problem was an archive containing fat lto objects,
    with the archive map incorrectly created by ar rather than gcc-ar.
    
    	PR 26150
    	* ldlang.c (ldlang_add_file): Assert that we aren't adding the
    	current end of link.next list again too.
    	* ldmain.c (add_archive_element): Don't load archive elements
    	again that have already been loaded.
    
        
file modified
+8 -0
file modified
+2 -1
file modified
+17 -4