forked from Imagelibrary/binutils-gdb
Add code to detect and either handle or issue an error message for binaries
created by the DEC ALPHA compilers.
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
2005-07-14 Daniel Marques <marques@cs.cornell.edu>
|
||||
Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* coff-alpha.c (alpha_ecoff_bad_format_hook): Detect compressed
|
||||
Alpha binaries and issue a helpful error message.
|
||||
(alpha_ecoff_swap_reloc_out): Increase maximum allowed internal
|
||||
symbol index to 15 to allow for binaries produced by DEC
|
||||
compilers.
|
||||
|
||||
2005-07-13 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* bfd.m4 (BFD_NEED_DECLARATION): Remove.
|
||||
|
||||
@@ -481,10 +481,16 @@ alpha_ecoff_bad_format_hook (abfd, filehdr)
|
||||
{
|
||||
struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
|
||||
|
||||
if (ALPHA_ECOFF_BADMAG (*internal_f))
|
||||
return FALSE;
|
||||
if (! ALPHA_ECOFF_BADMAG (*internal_f))
|
||||
return TRUE;
|
||||
|
||||
return TRUE;
|
||||
if (ALPHA_ECOFF_COMPRESSEDMAG (*internal_f))
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: Cannot handle compressed Alpha binaries.\n"
|
||||
" Use compiler flags, or objZ, to generate uncompressed binaries."),
|
||||
abfd);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* This is a hook called by coff_real_object_p to create any backend
|
||||
@@ -603,8 +609,11 @@ alpha_ecoff_swap_reloc_out (abfd, intern, dst)
|
||||
size = intern->r_size;
|
||||
}
|
||||
|
||||
/* XXX FIXME: The maximum symndx value used to be 14 but this
|
||||
fails with object files prodiced by DEC's C++ compiler.
|
||||
Where does the value 14 (or 15) come from anyway ? */
|
||||
BFD_ASSERT (intern->r_extern
|
||||
|| (intern->r_symndx >= 0 && intern->r_symndx <= 14));
|
||||
|| (intern->r_symndx >= 0 && intern->r_symndx <= 15));
|
||||
|
||||
H_PUT_64 (abfd, intern->r_vaddr, ext->r_vaddr);
|
||||
H_PUT_32 (abfd, symndx, ext->r_symndx);
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2005-07-14 Daniel Marques <marques@cs.cornell.edu>
|
||||
|
||||
* alpha.h (ALPHA_ECOFF_COMPRESSEDMAG): Define.
|
||||
* ecoff.h (ALPHA_MAGIC_COMPRESSED): Define.
|
||||
|
||||
2005-05-10 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* Update the address and phone number of the FSF organization in
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ECOFF support on Alpha machines.
|
||||
coff/ecoff.h must be included before this file.
|
||||
|
||||
Copyright 2001 Free Software Foundation, Inc.
|
||||
Copyright 2001, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -34,6 +34,9 @@ struct external_filehdr
|
||||
#define ALPHA_ECOFF_BADMAG(x) \
|
||||
((x).f_magic != ALPHA_MAGIC && (x).f_magic != ALPHA_MAGIC_BSD)
|
||||
|
||||
#define ALPHA_ECOFF_COMPRESSEDMAG(x) \
|
||||
((x).f_magic == ALPHA_MAGIC_COMPRESSED)
|
||||
|
||||
/* The object type is encoded in the f_flags. */
|
||||
#define F_ALPHA_OBJECT_TYPE_MASK 0x3000
|
||||
#define F_ALPHA_NO_SHARED 0x1000
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
This does not include symbol information, found in sym.h and
|
||||
symconst.h.
|
||||
|
||||
Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -41,6 +41,8 @@
|
||||
/* Alpha magic numbers used in filehdr. */
|
||||
#define ALPHA_MAGIC 0x183
|
||||
#define ALPHA_MAGIC_BSD 0x185
|
||||
/* A compressed version of an ALPHA_MAGIC file created by DEC's tools. */
|
||||
#define ALPHA_MAGIC_COMPRESSED 0x188
|
||||
|
||||
/* Magic numbers used in a.out header. */
|
||||
#define ECOFF_AOUT_OMAGIC 0407 /* not demand paged (ld -N). */
|
||||
|
||||
Reference in New Issue
Block a user