Skip to content

Commit

Permalink
Fix sparc64 crashes with LD_BIND_NOW and --enable-bind-now.
Browse files Browse the repository at this point in the history
	[BZ #14376]
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Do not
	pass reloc->r_addend in as the 'high' argument to
	sparc64_fixup_plt when handling R_SPARC_JMP_IREL relocations.
  • Loading branch information
David S. Miller committed Sep 28, 2012
1 parent c39bc8b commit aa9bbfe
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2012-09-27 David S. Miller <davem@davemloft.net>

[BZ #14376]
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Do not
pass reloc->r_addend in as the 'high' argument to
sparc64_fixup_plt when handling R_SPARC_JMP_IREL relocations.

2012-09-28 Pino Toscano <toscano.pino@tiscali.it>

* rt/tst-aio2.c: Include <pthread.h>.
Expand Down
4 changes: 2 additions & 2 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ Version 2.17
13412, 13542, 13629, 13679, 13696, 13717, 13741, 13939, 13966, 14042,
14090, 14150, 14151, 14154, 14157, 14166, 14173, 14195, 14237, 14252,
14283, 14298, 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349,
14459, 14476, 14505, 14510, 14516, 14518, 14519, 14530, 14532, 14538,
14544, 14545, 14562, 14576, 14579, 14583, 14587, 14621.
14376, 14459, 14476, 14505, 14510, 14516, 14518, 14519, 14530, 14532,
14538, 14544, 14545, 14562, 14576, 14579, 14583, 14587, 14621.

* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
Optimized versions of memcpy, memset, and memcmp added for System z10 and
Expand Down
9 changes: 8 additions & 1 deletion sysdeps/sparc/sparc64/dl-machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,14 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
break;
case R_SPARC_JMP_IREL:
value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
/* Fall thru */
/* 'high' is always zero, for large PLT entries the linker
emits an R_SPARC_IRELATIVE. */
#ifdef RESOLVE_CONFLICT_FIND_MAP
sparc64_fixup_plt (NULL, reloc, reloc_addr, value, 0, 0);
#else
sparc64_fixup_plt (map, reloc, reloc_addr, value, 0, 0);
#endif
break;
case R_SPARC_JMP_SLOT:
#ifdef RESOLVE_CONFLICT_FIND_MAP
/* R_SPARC_JMP_SLOT conflicts against .plt[32768+]
Expand Down

0 comments on commit aa9bbfe

Please sign in to comment.