Merge our ELF branding into Binutils 2.11.2.
This commit is contained in:
parent
d4d994956c
commit
fdcfb587ca
@ -1,5 +1,6 @@
|
||||
/* ELF executable support for BFD.
|
||||
Copyright 1993, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
@ -58,6 +59,10 @@ static INLINE int sym_is_global PARAMS ((bfd *, asymbol *));
|
||||
static boolean elf_map_symbols PARAMS ((bfd *));
|
||||
static bfd_size_type get_program_header_size PARAMS ((bfd *));
|
||||
static boolean elfcore_read_notes PARAMS ((bfd *, bfd_vma, bfd_vma));
|
||||
static boolean elf_find_function PARAMS ((bfd *, asection *,
|
||||
asymbol **,
|
||||
bfd_vma, const char **,
|
||||
const char **));
|
||||
|
||||
/* Swap version information in and out. The version information is
|
||||
currently size independent. If that ever changes, this code will
|
||||
@ -807,8 +812,8 @@ bfd_elf_print_symbol (abfd, filep, symbol, how)
|
||||
break;
|
||||
case bfd_print_symbol_all:
|
||||
{
|
||||
CONST char *section_name;
|
||||
CONST char *name = NULL;
|
||||
const char *section_name;
|
||||
const char *name = NULL;
|
||||
struct elf_backend_data *bed;
|
||||
unsigned char st_other;
|
||||
|
||||
@ -1004,8 +1009,9 @@ _bfd_elf_link_hash_hide_symbol (info, h)
|
||||
struct elf_link_hash_entry *h;
|
||||
{
|
||||
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
|
||||
h->dynindx = -1;
|
||||
h->plt.offset = (bfd_vma) -1;
|
||||
if ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0)
|
||||
h->dynindx = -1;
|
||||
}
|
||||
|
||||
/* Initialize an ELF linker hash table. */
|
||||
@ -1425,7 +1431,7 @@ bfd_section_from_shdr (abfd, shindex)
|
||||
}
|
||||
*hdr2 = *hdr;
|
||||
elf_elfsections (abfd)[shindex] = hdr2;
|
||||
target_sect->reloc_count += hdr->sh_size / hdr->sh_entsize;
|
||||
target_sect->reloc_count += NUM_SHDR_ENTRIES (hdr);
|
||||
target_sect->flags |= SEC_RELOC;
|
||||
target_sect->relocation = NULL;
|
||||
target_sect->rel_filepos = hdr->sh_offset;
|
||||
@ -3401,7 +3407,7 @@ prep_headers (abfd)
|
||||
case bfd_arch_cris:
|
||||
i_ehdrp->e_machine = EM_CRIS;
|
||||
break;
|
||||
/* also note that EM_M32, AT&T WE32100 is unknown to bfd */
|
||||
/* Also note that EM_M32, AT&T WE32100 is unknown to bfd. */
|
||||
default:
|
||||
i_ehdrp->e_machine = EM_NONE;
|
||||
}
|
||||
@ -4738,8 +4744,8 @@ _bfd_elf_slurp_version_tables (abfd)
|
||||
{
|
||||
_bfd_elf_swap_verdef_in (abfd, everdef, &iverdefmem);
|
||||
|
||||
if ((iverdefmem.vd_ndx & VERSYM_VERSION) > maxidx)
|
||||
maxidx = iverdefmem.vd_ndx & VERSYM_VERSION;
|
||||
if ((iverdefmem.vd_ndx & ((unsigned) VERSYM_VERSION)) > maxidx)
|
||||
maxidx = iverdefmem.vd_ndx & ((unsigned) VERSYM_VERSION);
|
||||
|
||||
everdef = ((Elf_External_Verdef *)
|
||||
((bfd_byte *) everdef + iverdefmem.vd_next));
|
||||
@ -4982,53 +4988,24 @@ _bfd_elf_set_arch_mach (abfd, arch, machine)
|
||||
return bfd_default_set_arch_mach (abfd, arch, machine);
|
||||
}
|
||||
|
||||
/* Find the nearest line to a particular section and offset, for error
|
||||
reporting. */
|
||||
/* Find the function to a particular section and offset,
|
||||
for error reporting. */
|
||||
|
||||
boolean
|
||||
_bfd_elf_find_nearest_line (abfd,
|
||||
section,
|
||||
symbols,
|
||||
offset,
|
||||
filename_ptr,
|
||||
functionname_ptr,
|
||||
line_ptr)
|
||||
bfd *abfd;
|
||||
static boolean
|
||||
elf_find_function (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
asection *section;
|
||||
asymbol **symbols;
|
||||
bfd_vma offset;
|
||||
CONST char **filename_ptr;
|
||||
CONST char **functionname_ptr;
|
||||
unsigned int *line_ptr;
|
||||
const char **filename_ptr;
|
||||
const char **functionname_ptr;
|
||||
{
|
||||
boolean found;
|
||||
const char *filename;
|
||||
asymbol *func;
|
||||
bfd_vma low_func;
|
||||
asymbol **p;
|
||||
|
||||
if (_bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr,
|
||||
line_ptr))
|
||||
return true;
|
||||
|
||||
if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr,
|
||||
line_ptr, 0,
|
||||
&elf_tdata (abfd)->dwarf2_find_line_info))
|
||||
return true;
|
||||
|
||||
if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
|
||||
&found, filename_ptr,
|
||||
functionname_ptr, line_ptr,
|
||||
&elf_tdata (abfd)->line_info))
|
||||
return false;
|
||||
if (found)
|
||||
return true;
|
||||
|
||||
if (symbols == NULL)
|
||||
return false;
|
||||
|
||||
filename = NULL;
|
||||
func = NULL;
|
||||
low_func = 0;
|
||||
@ -5065,8 +5042,70 @@ _bfd_elf_find_nearest_line (abfd,
|
||||
if (func == NULL)
|
||||
return false;
|
||||
|
||||
*filename_ptr = filename;
|
||||
*functionname_ptr = bfd_asymbol_name (func);
|
||||
if (filename_ptr)
|
||||
*filename_ptr = filename;
|
||||
if (functionname_ptr)
|
||||
*functionname_ptr = bfd_asymbol_name (func);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Find the nearest line to a particular section and offset,
|
||||
for error reporting. */
|
||||
|
||||
boolean
|
||||
_bfd_elf_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr, line_ptr)
|
||||
bfd *abfd;
|
||||
asection *section;
|
||||
asymbol **symbols;
|
||||
bfd_vma offset;
|
||||
const char **filename_ptr;
|
||||
const char **functionname_ptr;
|
||||
unsigned int *line_ptr;
|
||||
{
|
||||
boolean found;
|
||||
|
||||
if (_bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr,
|
||||
line_ptr))
|
||||
{
|
||||
if (!*functionname_ptr)
|
||||
elf_find_function (abfd, section, symbols, offset,
|
||||
*filename_ptr ? NULL : filename_ptr,
|
||||
functionname_ptr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr,
|
||||
line_ptr, 0,
|
||||
&elf_tdata (abfd)->dwarf2_find_line_info))
|
||||
{
|
||||
if (!*functionname_ptr)
|
||||
elf_find_function (abfd, section, symbols, offset,
|
||||
*filename_ptr ? NULL : filename_ptr,
|
||||
functionname_ptr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
|
||||
&found, filename_ptr,
|
||||
functionname_ptr, line_ptr,
|
||||
&elf_tdata (abfd)->line_info))
|
||||
return false;
|
||||
if (found)
|
||||
return true;
|
||||
|
||||
if (symbols == NULL)
|
||||
return false;
|
||||
|
||||
if (! elf_find_function (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr))
|
||||
return false;
|
||||
|
||||
*line_ptr = 0;
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user