cvs commit: src/libexec/rtld-elf rtld.csrc/libexec/rtld-elf/sparc64 rtld_machdep.h rtld_start.S

Thomas Moestl tmm at FreeBSD.org
Thu Jun 17 19:02:38 PDT 2004


tmm         2004-06-18 02:01:38 UTC

  FreeBSD src repository

  Modified files:
    libexec/rtld-elf     rtld.c 
    libexec/rtld-elf/sparc64 rtld_machdep.h rtld_start.S 
  Log:
  Fix the problem that surfaced with the new binutils import on sparc64
  (and that is for now being worked around by a binutils patch).
  
  The rtld code tested &_DYNAMIC against 0 to see whether rtld itself
  was built as PIC or not. While the sparc64 MD code did not rely
  on the preset value of the GOT slot for _DYNAMIC any more due
  to previous binutils changes, it still used to not be 0, so
  that this check did work. The new binutils do however initialize
  this slot with 0. As a consequence, rtld would not properly initialize
  itself and crash.
  Fix that by introducing a new macro, RTLD_IS_DYNAMIC, to take the role
  of this test. For sparc64, it is implemented using the rtld_dynamic()
  code that was already there. If an architecture does not provide its
  own implementation, we default to the old check.
  
  While being there, mark _DYNAMIC as a weak symbol in the sparc64
  rtld_start.S. This is needed in the LDSCRIPT case, which is however
  not currently supported for want of an actual ldscript.
  
  Sanity checked with md5 on alpha, amd64, i386 and ia64.
  
  Revision  Changes    Path
  1.97      +4 -1      src/libexec/rtld-elf/rtld.c
  1.6       +3 -1      src/libexec/rtld-elf/sparc64/rtld_machdep.h
  1.6       +3 -2      src/libexec/rtld-elf/sparc64/rtld_start.S


More information about the cvs-all mailing list