30 lines
1.1 KiB
Diff
30 lines
1.1 KiB
Diff
|
2007-08-20 Roland McGrath <roland@redhat.com>
|
||
|
|
||
|
* ppc_symbol.c (ppc_check_special_symbol): For _GLOBAL_OFFSET_TABLE_
|
||
|
when DT_PPC_GOT is not found, anywhere in the section is valid.
|
||
|
|
||
|
--- backends/ppc_symbol.c 20b22bb299c460c0e41145b39d6908f0f6e69948
|
||
|
+++ backends/ppc_symbol.c 1b3c198586c4cdb6a1200b00378358fa8a26a47a
|
||
|
@@ -1,5 +1,5 @@
|
||
|
/* PPC specific symbolic name handling.
|
||
|
- Copyright (C) 2004, 2005 Red Hat, Inc.
|
||
|
+ Copyright (C) 2004, 2005, 2007 Red Hat, Inc.
|
||
|
This file is part of Red Hat elfutils.
|
||
|
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
|
||
|
|
||
|
@@ -122,10 +122,13 @@ ppc_check_special_symbol (Elf *elf, GElf
|
||
|
|
||
|
if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
|
||
|
{
|
||
|
+ /* In -msecure-plt mode, DT_PPC_GOT is present and must match. */
|
||
|
GElf_Addr gotaddr;
|
||
|
if (find_dyn_got (elf, ehdr, &gotaddr))
|
||
|
return sym->st_value == gotaddr;
|
||
|
- return sym->st_value == destshdr->sh_addr + 4;
|
||
|
+
|
||
|
+ /* In -mbss-plt mode, any place in the section is valid. */
|
||
|
+ return true;
|
||
|
}
|
||
|
|
||
|
const char *sname = elf_strptr (elf, ehdr->e_shstrndx, destshdr->sh_name);
|