5cd720a x86: Remove the unused _GLOBAL_OFFSET_TABLE_

21 files Authored by H.J. Lu 6 years ago, Committed by Roland McGrath 6 years ago,
    x86: Remove the unused _GLOBAL_OFFSET_TABLE_
    
    Since _GLOBAL_OFFSET_TABLE_ may be referenced implicitly on x86,
    checking ref_regular_nonweak leaves the unused _GLOBAL_OFFSET_TABLE_
    in output.  This patch checks explicit GOT references instead.
    
    ld-i386/discarded1.s and ld-x86-64/discarded1.s are updated to avoid
    linker optimization which removes GOT references.
    
    bfd/
    
    	PR ld/22782
    	* elf32-i386.c (elf_i386_check_relocs): Set got_referenced if
    	_GLOBAL_OFFSET_TABLE_ is referenced or GOT is needed to resolve
    	undefined weak symbol to 0.
    	* elf64-x86-64.c (elf_x86_64_check_relocs): Set got_referenced
    	if _GLOBAL_OFFSET_TABLE_ is referenced.
    	* elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Check
    	got_referenced instead of ref_regular_nonweak.  Remove the
    	unused _GLOBAL_OFFSET_TABLE_ from symbol table.
    	* elfxx-x86.h (elf_x86_link_hash_table): Add got_referenced.
    
    ld/
    
    	PR ld/22782
    	* testsuite/ld-i386/discarded1.s: Replace mov with div.
    	* testsuite/ld-x86-64/discarded1.s: Likewise.
    	* testsuite/ld-i386/i386.exp: Run pr22782.
    	* testsuite/ld-i386/load1-nacl.d: Updated for removing
    	_GLOBAL_OFFSET_TABLE_ from output.
    	* testsuite/ld-i386/load1.d: Likewise.
    	* testsuite/ld-x86-64/load1a-nacl.d: Likewise.
    	* testsuite/ld-x86-64/load1a.d: Likewise.
    	* testsuite/ld-x86-64/load1b-nacl.d: Likewise.
    	* testsuite/ld-x86-64/load1b.d: Likewise.
    	* testsuite/ld-i386/pr22782.d: New file.
    	* testsuite/ld-i386/pr22782.s: Likewise.
    	* testsuite/ld-x86-64/pr22782.s: Likewise.
    	* testsuite/ld-x86-64/pr22782a.d: Likewise.
    	* testsuite/ld-x86-64/pr22782b.d: Likewise.
    	* testsuite/ld-x86-64/x86-64.exp: Run pr22782a and pr22782b.
    
    (cherry picked from commit cd04836359da82ae1dc67e5a05565536f4427b51)
    
        
file modified
+13 -0
file modified
+14 -2
file modified
+4 -0
file modified
+15 -2
file modified
+3 -0
file modified
+20 -0
file modified
+42 -42
file modified
+38 -38
file modified
+38 -38