* config.bfd, configure.host, configure.in: Remove ia64-aix support.
* elfxx-ia64.c, targets.c: Likewise.
This commit is contained in:
parent
336d1bba0a
commit
02e6ad56bf
7 changed files with 318 additions and 488 deletions
|
@ -1,3 +1,8 @@
|
|||
2003-07-16 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config.bfd, configure.host, configure.in: Remove ia64-aix support.
|
||||
* elfxx-ia64.c, targets.c: Likewise.
|
||||
|
||||
2003-07-16 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Properly return false
|
||||
|
|
|
@ -117,10 +117,6 @@ case "${targ}" in
|
|||
alpha*-*-*)
|
||||
targ_defvec=ecoffalpha_little_vec
|
||||
;;
|
||||
ia64*-*-aix*)
|
||||
targ_defvec=bfd_elf64_ia64_aix_little_vec
|
||||
targ_selvecs="bfd_elf64_ia64_aix_big_vec bfd_efi_app_ia64_vec"
|
||||
;;
|
||||
ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf*)
|
||||
targ_defvec=bfd_elf64_ia64_little_vec
|
||||
targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
|
||||
|
|
581
bfd/configure
vendored
581
bfd/configure
vendored
File diff suppressed because it is too large
Load diff
|
@ -31,7 +31,6 @@ hppa*-*-bsd*) HDEFINES=-DHOST_HPPABSD ;;
|
|||
hppa*-*-osf*) HDEFINES=-DHOST_HPPAOSF ;;
|
||||
|
||||
ia64-*-linux*) host64=true; HOST_64BIT_TYPE=long ;;
|
||||
ia64-*-aix*) host64=true; HOST_64BIT_TYPE=long ;;
|
||||
ia64-*-hpux*) host64=true
|
||||
HOST_64BIT_TYPE="long long";
|
||||
HOST_U_64BIT_TYPE="unsigned long long";
|
||||
|
|
|
@ -650,8 +650,6 @@ do
|
|||
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf64_hppa_linux_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_hppa_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_aix_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_aix_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
|
|
209
bfd/elfxx-ia64.c
209
bfd/elfxx-ia64.c
|
@ -193,14 +193,6 @@ static bfd_boolean elfNN_ia64_add_symbol_hook
|
|||
PARAMS ((bfd *abfd, struct bfd_link_info *info, const Elf_Internal_Sym *sym,
|
||||
const char **namep, flagword *flagsp, asection **secp,
|
||||
bfd_vma *valp));
|
||||
static bfd_boolean elfNN_ia64_aix_vec
|
||||
PARAMS ((const bfd_target *vec));
|
||||
static bfd_boolean elfNN_ia64_aix_add_symbol_hook
|
||||
PARAMS ((bfd *abfd, struct bfd_link_info *info, const Elf_Internal_Sym *sym,
|
||||
const char **namep, flagword *flagsp, asection **secp,
|
||||
bfd_vma *valp));
|
||||
static bfd_boolean elfNN_ia64_aix_link_add_symbols
|
||||
PARAMS ((bfd *abfd, struct bfd_link_info *info));
|
||||
static int elfNN_ia64_additional_program_headers
|
||||
PARAMS ((bfd *abfd));
|
||||
static bfd_boolean elfNN_ia64_modify_segment_map
|
||||
|
@ -657,9 +649,6 @@ static const bfd_byte plt_full_entry[PLT_FULL_ENTRY_SIZE] =
|
|||
};
|
||||
|
||||
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
#define AIX_DYNAMIC_INTERPRETER "/usr/lib/ia64l64/libc.so.1"
|
||||
#define DYNAMIC_INTERPRETER(abfd) \
|
||||
(elfNN_ia64_aix_vec (abfd->xvec) ? AIX_DYNAMIC_INTERPRETER : ELF_DYNAMIC_INTERPRETER)
|
||||
|
||||
static const bfd_byte oor_brl[16] =
|
||||
{
|
||||
|
@ -1367,114 +1356,6 @@ elfNN_ia64_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
elfNN_ia64_aix_vec (const bfd_target *vec)
|
||||
{
|
||||
extern const bfd_target bfd_elfNN_ia64_aix_little_vec;
|
||||
extern const bfd_target bfd_elfNN_ia64_aix_big_vec;
|
||||
|
||||
return (/**/vec == & bfd_elfNN_ia64_aix_little_vec
|
||||
|| vec == & bfd_elfNN_ia64_aix_big_vec);
|
||||
}
|
||||
|
||||
/* Hook called by the linker routine which adds symbols from an object
|
||||
file. We use it to handle OS-specific symbols. */
|
||||
|
||||
static bfd_boolean
|
||||
elfNN_ia64_aix_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *info;
|
||||
const Elf_Internal_Sym *sym;
|
||||
const char **namep;
|
||||
flagword *flagsp;
|
||||
asection **secp;
|
||||
bfd_vma *valp;
|
||||
{
|
||||
if (strcmp (*namep, "__GLOB_DATA_PTR") == 0)
|
||||
{
|
||||
/* Define __GLOB_DATA_PTR when it is encountered. This is expected to
|
||||
be a linker-defined symbol by the Aix C runtime startup code. IBM sez
|
||||
no one else should use it b/c it is undocumented. */
|
||||
struct elf_link_hash_entry *h;
|
||||
|
||||
h = elf_link_hash_lookup (elf_hash_table (info), *namep,
|
||||
FALSE, FALSE, FALSE);
|
||||
if (h == NULL)
|
||||
{
|
||||
struct elf_backend_data *bed;
|
||||
struct elfNN_ia64_link_hash_table *ia64_info;
|
||||
struct bfd_link_hash_entry *bh = NULL;
|
||||
|
||||
bed = get_elf_backend_data (abfd);
|
||||
ia64_info = elfNN_ia64_hash_table (info);
|
||||
|
||||
if (!(_bfd_generic_link_add_one_symbol
|
||||
(info, abfd, *namep, BSF_GLOBAL,
|
||||
bfd_get_section_by_name (abfd, ".bss"),
|
||||
bed->got_symbol_offset, (const char *) NULL, FALSE,
|
||||
bed->collect, &bh)))
|
||||
return FALSE;
|
||||
|
||||
h = (struct elf_link_hash_entry *) bh;
|
||||
h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
|
||||
h->type = STT_OBJECT;
|
||||
|
||||
if (! _bfd_elf_link_record_dynamic_symbol (info, h))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else if (sym->st_shndx == SHN_LOOS)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
/* SHN_AIX_SYSCALL: Treat this as any other symbol. The special symbol
|
||||
is only relevant when compiling code for extended system calls.
|
||||
Replace the "special" section with .text, if possible.
|
||||
Note that these symbols are always assumed to be in .text. */
|
||||
for (i = 1; i < elf_numsections (abfd); i++)
|
||||
{
|
||||
asection * sec = bfd_section_from_elf_index (abfd, i);
|
||||
|
||||
if (sec && strcmp (sec->name, ".text") == 0)
|
||||
{
|
||||
*secp = sec;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (*secp == NULL)
|
||||
*secp = bfd_abs_section_ptr;
|
||||
|
||||
*valp = sym->st_size;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return elfNN_ia64_add_symbol_hook (abfd, info, sym,
|
||||
namep, flagsp, secp, valp);
|
||||
}
|
||||
}
|
||||
|
||||
bfd_boolean
|
||||
elfNN_ia64_aix_link_add_symbols (abfd, info)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *info;
|
||||
{
|
||||
/* Make sure dynamic sections are always created. */
|
||||
if (! elf_hash_table (info)->dynamic_sections_created
|
||||
&& abfd->xvec == info->hash->creator)
|
||||
{
|
||||
if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Now do the standard call. */
|
||||
return bfd_elfNN_bfd_link_add_symbols (abfd, info);
|
||||
}
|
||||
|
||||
/* Return the number of additional phdrs we will need. */
|
||||
|
||||
static int
|
||||
|
@ -2301,8 +2182,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
|
|||
if (h && ((!info->executable
|
||||
&& (!info->symbolic || info->allow_shlib_undefined))
|
||||
|| ! (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
|
||||
|| h->root.type == bfd_link_hash_defweak
|
||||
|| elfNN_ia64_aix_vec (abfd->xvec)))
|
||||
|| h->root.type == bfd_link_hash_defweak))
|
||||
maybe_dynamic = TRUE;
|
||||
|
||||
need_entry = 0;
|
||||
|
@ -2359,7 +2239,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
|
|||
case R_IA64_FPTR32LSB:
|
||||
case R_IA64_FPTR64MSB:
|
||||
case R_IA64_FPTR64LSB:
|
||||
if (info->shared || h || elfNN_ia64_aix_vec (abfd->xvec))
|
||||
if (info->shared || h)
|
||||
need_entry = NEED_FPTR | NEED_DYNREL;
|
||||
else
|
||||
need_entry = NEED_FPTR;
|
||||
|
@ -2411,10 +2291,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
|
|||
case R_IA64_DIR64MSB:
|
||||
case R_IA64_DIR64LSB:
|
||||
/* Shared objects will always need at least a REL relocation. */
|
||||
if (info->shared || maybe_dynamic
|
||||
|| (elfNN_ia64_aix_vec (abfd->xvec)
|
||||
&& (!h || strcmp (h->root.root.string,
|
||||
"__GLOB_DATA_PTR") != 0)))
|
||||
if (info->shared || maybe_dynamic)
|
||||
need_entry = NEED_DYNREL;
|
||||
dynrel_type = R_IA64_DIR64LSB;
|
||||
break;
|
||||
|
@ -2488,9 +2365,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
|
|||
/* FPTRs for shared libraries are allocated by the dynamic
|
||||
linker. Make sure this local symbol will appear in the
|
||||
dynamic symbol table. */
|
||||
if (!h && (info->shared
|
||||
/* AIX also needs one */
|
||||
|| elfNN_ia64_aix_vec (abfd->xvec)))
|
||||
if (!h && info->shared)
|
||||
{
|
||||
if (! (_bfd_elfNN_link_record_local_dynamic_symbol
|
||||
(info, abfd, (long) r_symndx)))
|
||||
|
@ -2540,10 +2415,7 @@ allocate_global_data_got (dyn_i, data)
|
|||
|
||||
if ((dyn_i->want_got || dyn_i->want_gotx)
|
||||
&& ! dyn_i->want_fptr
|
||||
&& (elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info)
|
||||
|| (elfNN_ia64_aix_vec (x->info->hash->creator)
|
||||
&& (!dyn_i->h || strcmp (dyn_i->h->root.root.string,
|
||||
"__GLOB_DATA_PTR") != 0))))
|
||||
&& elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info))
|
||||
{
|
||||
dyn_i->got_offset = x->ofs;
|
||||
x->ofs += 8;
|
||||
|
@ -2592,8 +2464,7 @@ allocate_global_fptr_got (dyn_i, data)
|
|||
|
||||
if (dyn_i->want_got
|
||||
&& dyn_i->want_fptr
|
||||
&& (elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info)
|
||||
|| elfNN_ia64_aix_vec (x->info->hash->creator)))
|
||||
&& elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info))
|
||||
{
|
||||
dyn_i->got_offset = x->ofs;
|
||||
x->ofs += 8;
|
||||
|
@ -2611,8 +2482,7 @@ allocate_local_got (dyn_i, data)
|
|||
struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
|
||||
|
||||
if ((dyn_i->want_got || dyn_i->want_gotx)
|
||||
&& ! (elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info)
|
||||
|| elfNN_ia64_aix_vec (x->info->hash->creator)))
|
||||
&& !elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info))
|
||||
{
|
||||
dyn_i->got_offset = x->ofs;
|
||||
x->ofs += 8;
|
||||
|
@ -2658,15 +2528,10 @@ allocate_fptr (dyn_i, data)
|
|||
|| h->root.type == bfd_link_hash_warning)
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
|
||||
if ((!x->info->executable
|
||||
&& (!h
|
||||
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||
|| h->root.type != bfd_link_hash_undefweak))
|
||||
/* AIX needs an FPTR in this case. */
|
||||
|| (elfNN_ia64_aix_vec (x->info->hash->creator)
|
||||
&& (!h
|
||||
|| h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)))
|
||||
if (!x->info->executable
|
||||
&& (!h
|
||||
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||
|| h->root.type != bfd_link_hash_undefweak))
|
||||
{
|
||||
if (h && h->dynindx == -1)
|
||||
{
|
||||
|
@ -2789,11 +2654,7 @@ allocate_dynrel_entries (dyn_i, data)
|
|||
bfd_boolean dynamic_symbol, shared, resolved_zero;
|
||||
|
||||
ia64_info = elfNN_ia64_hash_table (x->info);
|
||||
dynamic_symbol = elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info)
|
||||
|| (elfNN_ia64_aix_vec (x->info->hash->creator)
|
||||
/* Don't allocate an entry for __GLOB_DATA_PTR */
|
||||
&& (!dyn_i->h || strcmp (dyn_i->h->root.root.string,
|
||||
"__GLOB_DATA_PTR") != 0));
|
||||
dynamic_symbol = elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info);
|
||||
shared = x->info->shared;
|
||||
resolved_zero = (dyn_i->h
|
||||
&& ELF_ST_VISIBILITY (dyn_i->h->other)
|
||||
|
@ -2939,8 +2800,8 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
|
|||
{
|
||||
sec = bfd_get_section_by_name (dynobj, ".interp");
|
||||
BFD_ASSERT (sec != NULL);
|
||||
sec->contents = (bfd_byte *) DYNAMIC_INTERPRETER (output_bfd);
|
||||
sec->_raw_size = strlen (DYNAMIC_INTERPRETER (output_bfd)) + 1;
|
||||
sec->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
|
||||
sec->_raw_size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
|
||||
}
|
||||
|
||||
/* Allocate the GOT entries. */
|
||||
|
@ -3482,7 +3343,6 @@ set_got_entry (abfd, info, dyn_i, dynindx, addend, value, dyn_r_type)
|
|||
|| dyn_i->h->root.type != bfd_link_hash_undefweak)
|
||||
&& dyn_r_type != R_IA64_DTPREL64LSB)
|
||||
|| elfNN_ia64_dynamic_symbol_p (dyn_i->h, info)
|
||||
|| elfNN_ia64_aix_vec (abfd->xvec)
|
||||
|| (dynindx != -1 && dyn_r_type == R_IA64_FPTR64LSB))
|
||||
&& (!dyn_i->want_ltoff_fptr
|
||||
|| !info->pie
|
||||
|
@ -4079,11 +3939,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
case R_IA64_DIR64MSB:
|
||||
case R_IA64_DIR64LSB:
|
||||
/* Install a dynamic relocation for this reloc. */
|
||||
if ((dynamic_symbol_p || info->shared
|
||||
|| (elfNN_ia64_aix_vec (info->hash->creator)
|
||||
/* Don't emit relocs for __GLOB_DATA_PTR on AIX. */
|
||||
&& (!h || strcmp (h->root.root.string,
|
||||
"__GLOB_DATA_PTR") != 0)))
|
||||
if ((dynamic_symbol_p || info->shared)
|
||||
&& r_symndx != 0
|
||||
&& (input_section->flags & SEC_ALLOC) != 0)
|
||||
{
|
||||
|
@ -4136,8 +3992,6 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
addend = value;
|
||||
}
|
||||
|
||||
if (elfNN_ia64_aix_vec (info->hash->creator))
|
||||
rel->r_addend = value;
|
||||
elfNN_ia64_install_dyn_reloc (output_bfd, info, input_section,
|
||||
srel, rel->r_offset, dyn_r_type,
|
||||
dynindx, addend);
|
||||
|
@ -4302,9 +4156,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
case R_IA64_PCREL64MSB:
|
||||
case R_IA64_PCREL64LSB:
|
||||
/* Install a dynamic relocation for this reloc. */
|
||||
if ((dynamic_symbol_p
|
||||
|| elfNN_ia64_aix_vec (info->hash->creator))
|
||||
&& r_symndx != 0)
|
||||
if (dynamic_symbol_p && r_symndx != 0)
|
||||
{
|
||||
BFD_ASSERT (srel != NULL);
|
||||
|
||||
|
@ -5056,27 +4908,6 @@ elfNN_hpux_backend_section_from_bfd_section (abfd, sec, retval)
|
|||
|
||||
#include "elfNN-target.h"
|
||||
|
||||
/* AIX-specific vectors. */
|
||||
|
||||
#undef TARGET_LITTLE_SYM
|
||||
#define TARGET_LITTLE_SYM bfd_elfNN_ia64_aix_little_vec
|
||||
#undef TARGET_LITTLE_NAME
|
||||
#define TARGET_LITTLE_NAME "elfNN-ia64-aix-little"
|
||||
#undef TARGET_BIG_SYM
|
||||
#define TARGET_BIG_SYM bfd_elfNN_ia64_aix_big_vec
|
||||
#undef TARGET_BIG_NAME
|
||||
#define TARGET_BIG_NAME "elfNN-ia64-aix-big"
|
||||
|
||||
#undef elf_backend_add_symbol_hook
|
||||
#define elf_backend_add_symbol_hook elfNN_ia64_aix_add_symbol_hook
|
||||
|
||||
#undef bfd_elfNN_bfd_link_add_symbols
|
||||
#define bfd_elfNN_bfd_link_add_symbols elfNN_ia64_aix_link_add_symbols
|
||||
|
||||
#define elfNN_bed elfNN_ia64_aix_bed
|
||||
|
||||
#include "elfNN-target.h"
|
||||
|
||||
/* HPUX-specific vectors. */
|
||||
|
||||
#undef TARGET_LITTLE_SYM
|
||||
|
@ -5086,14 +4917,6 @@ elfNN_hpux_backend_section_from_bfd_section (abfd, sec, retval)
|
|||
#undef TARGET_BIG_NAME
|
||||
#define TARGET_BIG_NAME "elfNN-ia64-hpux-big"
|
||||
|
||||
/* We need to undo the AIX specific functions. */
|
||||
|
||||
#undef elf_backend_add_symbol_hook
|
||||
#define elf_backend_add_symbol_hook elfNN_ia64_add_symbol_hook
|
||||
|
||||
#undef bfd_elfNN_bfd_link_add_symbols
|
||||
#define bfd_elfNN_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
|
||||
/* These are HP-UX specific functions. */
|
||||
|
||||
#undef elf_backend_post_process_headers
|
||||
|
|
|
@ -589,8 +589,6 @@ extern const bfd_target bfd_elf64_big_generic_vec;
|
|||
extern const bfd_target bfd_elf64_bigmips_vec;
|
||||
extern const bfd_target bfd_elf64_hppa_linux_vec;
|
||||
extern const bfd_target bfd_elf64_hppa_vec;
|
||||
extern const bfd_target bfd_elf64_ia64_aix_big_vec;
|
||||
extern const bfd_target bfd_elf64_ia64_aix_little_vec;
|
||||
extern const bfd_target bfd_elf64_ia64_big_vec;
|
||||
extern const bfd_target bfd_elf64_ia64_hpux_big_vec;
|
||||
extern const bfd_target bfd_elf64_ia64_little_vec;
|
||||
|
@ -885,8 +883,6 @@ static const bfd_target * const _bfd_target_vector[] = {
|
|||
&bfd_elf64_bigmips_vec,
|
||||
&bfd_elf64_hppa_linux_vec,
|
||||
&bfd_elf64_hppa_vec,
|
||||
&bfd_elf64_ia64_aix_big_vec,
|
||||
&bfd_elf64_ia64_aix_little_vec,
|
||||
&bfd_elf64_ia64_big_vec,
|
||||
&bfd_elf64_ia64_hpux_big_vec,
|
||||
&bfd_elf64_ia64_little_vec,
|
||||
|
|
Loading…
Reference in a new issue