Skip to content
  • Max Filippov's avatar
    xtensa: don't emit dynamic relocation for weak undefined symbol · c451bb34
    Max Filippov authored
    Resolved reference to a weak undefined symbol in PIE must not have
    a dynamic relative relocation against itself, otherwise the value of a
    reference will be changed from 0 to the base of executable, breaking
    code like the following:
    
      void weak_function (void);
      if (weak_function)
        weak_function ();
    
    This fixes tests for PR ld/22269 and a number of PIE tests in xtensa gcc
    testsuite.
    
    bfd/
    2018-07-06  Max Filippov  <jcmvbkbc@gmail.com>
    
    	* elf32-xtensa.c (elf_xtensa_allocate_dynrelocs): Don't allocate
    	space for dynamic relocation for undefined weak symbol.
    	(elf_xtensa_relocate_section): Don't emit R_XTENSA_RELATIVE
    	relocation for undefined weak symbols.
    	(shrink_dynamic_reloc_sections): Don't shrink dynamic relocation
    	section for relocations against undefined weak symbols.
    c451bb34
To find the state of this project's repository at the time of any of these versions, check out the tags.