projects
/
platform
/
upstream
/
binutils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't deprecate powerpc mftb insn
[platform/upstream/binutils.git]
/
bfd
/
elf32-cris.c
diff --git
a/bfd/elf32-cris.c
b/bfd/elf32-cris.c
index
5f0eca9
..
9b2b956
100644
(file)
--- a/
bfd/elf32-cris.c
+++ b/
bfd/elf32-cris.c
@@
-1,6
+1,5
@@
/* CRIS-specific support for 32-bit ELF.
/* CRIS-specific support for 32-bit ELF.
- Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010, 2011, 2012 Free Software Foundation, Inc.
+ Copyright (C) 2000-2014 Free Software Foundation, Inc.
Contributed by Axis Communications AB.
Written by Hans-Peter Nilsson, based on elf32-fr30.c
PIC and shlib bits based primarily on elf32-m68k.c and elf32-i386.c.
Contributed by Axis Communications AB.
Written by Hans-Peter Nilsson, based on elf32-fr30.c
PIC and shlib bits based primarily on elf32-m68k.c and elf32-i386.c.
@@
-511,10
+510,10
@@
cris_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
case 202: /* Linux/CRISv32 */
/* pr_cursig */
case 202: /* Linux/CRISv32 */
/* pr_cursig */
- elf_tdata (abfd)->core
_
signal = bfd_get_16 (abfd, note->descdata + 12);
+ elf_tdata (abfd)->core
->
signal = bfd_get_16 (abfd, note->descdata + 12);
/* pr_pid */
/* pr_pid */
- elf_tdata (abfd)->core
_
lwpid = bfd_get_32 (abfd, note->descdata + 22);
+ elf_tdata (abfd)->core
->
lwpid = bfd_get_32 (abfd, note->descdata + 22);
/* pr_reg */
offset = 70;
/* pr_reg */
offset = 70;
@@
-530,10
+529,10
@@
cris_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
case 214: /* Linux/CRIS */
/* pr_cursig */
case 214: /* Linux/CRIS */
/* pr_cursig */
- elf_tdata (abfd)->core
_
signal = bfd_get_16 (abfd, note->descdata + 12);
+ elf_tdata (abfd)->core
->
signal = bfd_get_16 (abfd, note->descdata + 12);
/* pr_pid */
/* pr_pid */
- elf_tdata (abfd)->core
_
lwpid = bfd_get_32 (abfd, note->descdata + 22);
+ elf_tdata (abfd)->core
->
lwpid = bfd_get_32 (abfd, note->descdata + 22);
/* pr_reg */
offset = 70;
/* pr_reg */
offset = 70;
@@
-557,9
+556,9
@@
cris_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
return FALSE;
case 124: /* Linux/CRISv32 elf_prpsinfo */
return FALSE;
case 124: /* Linux/CRISv32 elf_prpsinfo */
- elf_tdata (abfd)->core
_
program
+ elf_tdata (abfd)->core
->
program
= _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
= _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
- elf_tdata (abfd)->core
_
command
+ elf_tdata (abfd)->core
->
command
= _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
}
else
= _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
}
else
@@
-569,9
+568,9
@@
cris_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
return FALSE;
case 124: /* Linux/CRIS elf_prpsinfo */
return FALSE;
case 124: /* Linux/CRIS elf_prpsinfo */
- elf_tdata (abfd)->core
_
program
+ elf_tdata (abfd)->core
->
program
= _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
= _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
- elf_tdata (abfd)->core
_
command
+ elf_tdata (abfd)->core
->
command
= _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
}
= _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
}
@@
-580,7
+579,7
@@
cris_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
implementations, so strip it off if it exists. */
{
implementations, so strip it off if it exists. */
{
- char *command = elf_tdata (abfd)->core
_
command;
+ char *command = elf_tdata (abfd)->core
->
command;
int n = strlen (command);
if (0 < n && command[n - 1] == ' ')
int n = strlen (command);
if (0 < n && command[n - 1] == ' ')
@@
-1040,13
+1039,13
@@
cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
}
else
{
}
else
{
- bfd_boolean warned;
+ bfd_boolean warned
, ignored
;
bfd_boolean unresolved_reloc;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
h, sec, relocation,
bfd_boolean unresolved_reloc;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
h, sec, relocation,
- unresolved_reloc, warned);
+ unresolved_reloc, warned
, ignored
);
symname = h->root.root.string;
symname = h->root.root.string;
@@
-3177,6
+3176,10
@@
cris_elf_check_relocs (bfd *abfd,
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ /* PR15323, ref flags aren't set for references in the same
+ object. */
+ h->root.non_ir_ref = 1;
}
r_type = ELF32_R_TYPE (rel->r_info);
}
r_type = ELF32_R_TYPE (rel->r_info);
@@
-3232,15
+3235,20
@@
cris_elf_check_relocs (bfd *abfd,
abfd, sec);
return FALSE;
}
abfd, sec);
return FALSE;
}
+ }
- /* Create the .got section, so we can assume it's always
- present whenever there's a dynobj. */
+ if (sgot == NULL)
+ {
+ /* We may have a dynobj but no .got section, if machine-
+ independent parts of the linker found a reason to create
+ a dynobj. We want to create the .got section now, so we
+ can assume it's always present whenever there's a dynobj.
+ It's ok to call this function more than once. */
if (!_bfd_elf_create_got_section (dynobj, info))
return FALSE;
if (!_bfd_elf_create_got_section (dynobj, info))
return FALSE;
- }
- if (sgot == NULL)
- sgot = bfd_get_linker_section (dynobj, ".got");
+ sgot = bfd_get_linker_section (dynobj, ".got");
+ }
if (local_got_refcounts == NULL)
{
if (local_got_refcounts == NULL)
{
@@
-4241,7
+4249,9
@@
cris_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
}
static enum elf_reloc_type_class
}
static enum elf_reloc_type_class
-elf_cris_reloc_type_class (const Elf_Internal_Rela *rela)
+elf_cris_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ const asection *rel_sec ATTRIBUTE_UNUSED,
+ const Elf_Internal_Rela *rela)
{
enum elf_cris_reloc_type r_type = ELF32_R_TYPE (rela->r_info);
switch (r_type)
{
enum elf_cris_reloc_type r_type = ELF32_R_TYPE (rela->r_info);
switch (r_type)
@@
-4324,7
+4334,7
@@
elf_cris_got_elt_size (bfd *abfd ATTRIBUTE_UNUSED,
#define ELF_MACHINE_CODE EM_CRIS
#define ELF_MAXPAGESIZE 0x2000
#define ELF_MACHINE_CODE EM_CRIS
#define ELF_MAXPAGESIZE 0x2000
-#define TARGET_LITTLE_SYM
bfd_elf32_cris
_vec
+#define TARGET_LITTLE_SYM
cris_elf32
_vec
#define TARGET_LITTLE_NAME "elf32-cris"
#define elf_symbol_leading_char 0
#define TARGET_LITTLE_NAME "elf32-cris"
#define elf_symbol_leading_char 0
@@
-4393,7
+4403,7
@@
elf_cris_got_elt_size (bfd *abfd ATTRIBUTE_UNUSED,
#undef TARGET_LITTLE_NAME
#undef elf_symbol_leading_char
#undef TARGET_LITTLE_NAME
#undef elf_symbol_leading_char
-#define TARGET_LITTLE_SYM
bfd_elf32_us_cri
s_vec
+#define TARGET_LITTLE_SYM
cris_elf32_u
s_vec
#define TARGET_LITTLE_NAME "elf32-us-cris"
#define elf_symbol_leading_char '_'
#undef elf32_bed
#define TARGET_LITTLE_NAME "elf32-us-cris"
#define elf_symbol_leading_char '_'
#undef elf32_bed