* bfd.c (bfd_alt_mach_code): New function.

* bfd-in2.h: Rebuilt.
This commit is contained in:
Alexandre Oliva 2001-08-24 13:55:55 +00:00
parent 17ea634937
commit 8c98ec7dcc
3 changed files with 63 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2001-08-24 Alexandre Oliva <aoliva@redhat.com>
* bfd.c (bfd_alt_mach_code): New function.
* bfd-in2.h: Rebuilt.
2001-08-24 Alexandre Oliva <aoliva@redhat.com>
* elf-m10300.c (mn10300_elf_relocate_section): Test the right

View file

@ -3296,6 +3296,9 @@ extern bfd_byte *bfd_get_relocated_section_contents
struct bfd_link_order *, bfd_byte *,
boolean, asymbol **));
boolean
bfd_alt_mach_code PARAMS ((bfd *abfd, int index));
symindex
bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym));

View file

@ -1288,3 +1288,58 @@ bfd_fprintf_vma (abfd, stream, value)
else
fprintf_vma ((FILE *) stream, value);
}
/*
FUNCTION
bfd_alt_mach_code
SYNOPSIS
boolean bfd_alt_mach_code(bfd *abfd, int index);
DESCRIPTION
When more than one machine code number is available for the
same machine type, this function can be used to switch between
the preferred one (index == 0) and any others. Currently,
only ELF supports this feature, with up to two alternate
machine codes.
*/
boolean
bfd_alt_mach_code (abfd, index)
bfd *abfd;
int index;
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
{
int code;
switch (index)
{
case 0:
code = get_elf_backend_data (abfd)->elf_machine_code;
break;
case 1:
code = get_elf_backend_data (abfd)->elf_machine_alt1;
if (code == 0)
return false;
break;
case 2:
code = get_elf_backend_data (abfd)->elf_machine_alt2;
if (code == 0)
return false;
break;
default:
return false;
}
elf_elfheader (abfd)->e_machine = code;
return true;
}
return false;
}