* reloc.c (bfd_reloc_code_type): Add new value BFD_RELOC_12_PCREL.

* bfd-in2.h, libbfd.h: Rebuilt.
This commit is contained in:
Ken Raeburn 1994-11-17 22:46:22 +00:00
parent b68a74d193
commit fca2b81b88
4 changed files with 61 additions and 29 deletions

View File

@ -1,3 +1,8 @@
Thu Nov 17 17:37:39 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
* reloc.c (bfd_reloc_code_type): Add new value BFD_RELOC_12_PCREL.
* bfd-in2.h, libbfd.h: Rebuilt.
Thu Nov 17 13:12:08 1994 Jeff Law (law@snake.cs.utah.edu) Thu Nov 17 13:12:08 1994 Jeff Law (law@snake.cs.utah.edu)
* bfd/elf32-hppa.c (elf32_hppa_bfd_final_link_relocated): Use the * bfd/elf32-hppa.c (elf32_hppa_bfd_final_link_relocated): Use the

View File

@ -545,11 +545,11 @@ extern boolean bfd_elf32_record_link_assignment
extern boolean bfd_elf64_record_link_assignment extern boolean bfd_elf64_record_link_assignment
PARAMS ((bfd *, struct bfd_link_info *, const char *)); PARAMS ((bfd *, struct bfd_link_info *, const char *));
extern boolean bfd_elf32_size_dynamic_sections extern boolean bfd_elf32_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, struct bfd_link_info *, PARAMS ((bfd *, const char *, const char *, boolean,
struct sec **)); struct bfd_link_info *, struct sec **));
extern boolean bfd_elf64_size_dynamic_sections extern boolean bfd_elf64_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, struct bfd_link_info *, PARAMS ((bfd *, const char *, const char *, boolean,
struct sec **)); struct bfd_link_info *, struct sec **));
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *)); extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
/* SunOS shared library support routines for the linker. */ /* SunOS shared library support routines for the linker. */
@ -1277,6 +1277,15 @@ bfd_perform_relocation
bfd *output_bfd, bfd *output_bfd,
char **error_message)); char **error_message));
bfd_reloc_status_type
bfd_install_relocation
PARAMS ((bfd *abfd,
arelent *reloc_entry,
PTR data, bfd_vma data_start,
asection *input_section,
char **error_message));
enum bfd_reloc_code_real { enum bfd_reloc_code_real {
_dummy_first_bfd_reloc_code_real, _dummy_first_bfd_reloc_code_real,
@ -1298,6 +1307,7 @@ The 24-bit relocation is used in some Intel 960 configurations. */
BFD_RELOC_32_PCREL, BFD_RELOC_32_PCREL,
BFD_RELOC_24_PCREL, BFD_RELOC_24_PCREL,
BFD_RELOC_16_PCREL, BFD_RELOC_16_PCREL,
BFD_RELOC_12_PCREL,
BFD_RELOC_8_PCREL, BFD_RELOC_8_PCREL,
/* Linkage-table relative. */ /* Linkage-table relative. */
@ -1308,11 +1318,12 @@ The 24-bit relocation is used in some Intel 960 configurations. */
/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */ /* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
BFD_RELOC_8_FFnn, BFD_RELOC_8_FFnn,
/* These PC-relative relocations are stored as word displacements -- i.e., /* These PC-relative relocations are stored as word displacements --
byte displacements shifted right two bits. The 30-bit word displacement i.e., byte displacements shifted right two bits. The 30-bit word
(<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the SPARC. The signed displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
16-bit displacement is used on the MIPS, and the 23-bit displacement is SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
used on the Alpha. */ signed 16-bit displacement is used on the MIPS, and the 23-bit
displacement is used on the Alpha. */
BFD_RELOC_32_PCREL_S2, BFD_RELOC_32_PCREL_S2,
BFD_RELOC_16_PCREL_S2, BFD_RELOC_16_PCREL_S2,
BFD_RELOC_23_PCREL_S2, BFD_RELOC_23_PCREL_S2,
@ -1609,12 +1620,15 @@ typedef struct symbol_cache_entry
/* A pointer to the section to which this symbol is /* A pointer to the section to which this symbol is
relative. This will always be non NULL, there are special relative. This will always be non NULL, there are special
sections for undefined and absolute symbols */ sections for undefined and absolute symbols. */
struct sec *section; struct sec *section;
/* Back end special data. This is being phased out in favour /* Back end special data. */
of making this a union. */ union
PTR udata; {
PTR p;
bfd_vma i;
} udata;
} asymbol; } asymbol;
#define bfd_get_symtab_upper_bound(abfd) \ #define bfd_get_symtab_upper_bound(abfd) \
@ -2057,6 +2071,7 @@ CAT(NAME,_core_file_matches_executable_p)
#define BFD_JUMP_TABLE_ARCHIVE(NAME)\ #define BFD_JUMP_TABLE_ARCHIVE(NAME)\
CAT(NAME,_slurp_armap),\ CAT(NAME,_slurp_armap),\
CAT(NAME,_slurp_extended_name_table),\ CAT(NAME,_slurp_extended_name_table),\
CAT(NAME,_construct_extended_name_table),\
CAT(NAME,_truncate_arname),\ CAT(NAME,_truncate_arname),\
CAT(NAME,_write_armap),\ CAT(NAME,_write_armap),\
CAT(NAME,_openr_next_archived_file),\ CAT(NAME,_openr_next_archived_file),\
@ -2064,6 +2079,8 @@ CAT(NAME,_generic_stat_arch_elt),\
CAT(NAME,_update_armap_timestamp) CAT(NAME,_update_armap_timestamp)
boolean (*_bfd_slurp_armap) PARAMS ((bfd *)); boolean (*_bfd_slurp_armap) PARAMS ((bfd *));
boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *)); boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
boolean (*_bfd_construct_extended_name_table)
PARAMS ((bfd *, char **, bfd_size_type *, const char **));
void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *)); void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
boolean (*write_armap) PARAMS ((bfd *arch, boolean (*write_armap) PARAMS ((bfd *arch,
unsigned int elength, unsigned int elength,

View File

@ -95,15 +95,12 @@ boolean bfd_slurp_bsd_armap_f2 PARAMS ((bfd *abfd));
#define bfd_slurp_bsd_armap bfd_slurp_armap #define bfd_slurp_bsd_armap bfd_slurp_armap
#define bfd_slurp_coff_armap bfd_slurp_armap #define bfd_slurp_coff_armap bfd_slurp_armap
boolean _bfd_slurp_extended_name_table PARAMS ((bfd *abfd)); boolean _bfd_slurp_extended_name_table PARAMS ((bfd *abfd));
extern boolean _bfd_construct_extended_name_table
PARAMS ((bfd *, boolean, char **, bfd_size_type *));
boolean _bfd_write_archive_contents PARAMS ((bfd *abfd)); boolean _bfd_write_archive_contents PARAMS ((bfd *abfd));
bfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos)); bfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos));
bfd * _bfd_new_bfd PARAMS ((void)); bfd * _bfd_new_bfd PARAMS ((void));
#define DEFAULT_STRING_SPACE_SIZE 0x2000
boolean bfd_add_to_string_table PARAMS ((char **table, char *new_string,
unsigned int *table_length,
char **free_ptr));
boolean bfd_false PARAMS ((bfd *ignore)); boolean bfd_false PARAMS ((bfd *ignore));
boolean bfd_true PARAMS ((bfd *ignore)); boolean bfd_true PARAMS ((bfd *ignore));
PTR bfd_nullvoidptr PARAMS ((bfd *ignore)); PTR bfd_nullvoidptr PARAMS ((bfd *ignore));
@ -167,6 +164,9 @@ extern boolean _bfd_nocore_core_file_matches_executable_p
#define _bfd_noarchive_slurp_armap bfd_false #define _bfd_noarchive_slurp_armap bfd_false
#define _bfd_noarchive_slurp_extended_name_table bfd_false #define _bfd_noarchive_slurp_extended_name_table bfd_false
#define _bfd_noarchive_construct_extended_name_table \
((boolean (*) PARAMS ((bfd *, char **, bfd_size_type *, const char **))) \
bfd_false)
#define _bfd_noarchive_truncate_arname \ #define _bfd_noarchive_truncate_arname \
((void (*) PARAMS ((bfd *, const char *, char *))) bfd_void) ((void (*) PARAMS ((bfd *, const char *, char *))) bfd_void)
#define _bfd_noarchive_write_armap \ #define _bfd_noarchive_write_armap \
@ -184,6 +184,8 @@ extern boolean _bfd_nocore_core_file_matches_executable_p
#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap #define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
#define _bfd_archive_bsd_slurp_extended_name_table \ #define _bfd_archive_bsd_slurp_extended_name_table \
_bfd_slurp_extended_name_table _bfd_slurp_extended_name_table
extern boolean _bfd_archive_bsd_construct_extended_name_table
PARAMS ((bfd *, char **, bfd_size_type *, const char **));
#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
#define _bfd_archive_bsd_write_armap bsd_write_armap #define _bfd_archive_bsd_write_armap bsd_write_armap
#define _bfd_archive_bsd_openr_next_archived_file \ #define _bfd_archive_bsd_openr_next_archived_file \
@ -198,6 +200,8 @@ extern boolean _bfd_archive_bsd_update_armap_timestamp PARAMS ((bfd *));
#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap #define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
#define _bfd_archive_coff_slurp_extended_name_table \ #define _bfd_archive_coff_slurp_extended_name_table \
_bfd_slurp_extended_name_table _bfd_slurp_extended_name_table
extern boolean _bfd_archive_coff_construct_extended_name_table
PARAMS ((bfd *, char **, bfd_size_type *, const char **));
#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
#define _bfd_archive_coff_write_armap coff_write_armap #define _bfd_archive_coff_write_armap coff_write_armap
#define _bfd_archive_coff_openr_next_archived_file \ #define _bfd_archive_coff_openr_next_archived_file \
@ -446,11 +450,6 @@ bfd_open_file PARAMS ((bfd *abfd));
FILE * FILE *
bfd_cache_lookup_worker PARAMS ((bfd *abfd)); bfd_cache_lookup_worker PARAMS ((bfd *abfd));
boolean
bfd_constructor_entry PARAMS ((bfd *abfd,
asymbol **symbol_ptr_ptr,
CONST char*type));
#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real #ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
@ -465,6 +464,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_32_PCREL", "BFD_RELOC_32_PCREL",
"BFD_RELOC_24_PCREL", "BFD_RELOC_24_PCREL",
"BFD_RELOC_16_PCREL", "BFD_RELOC_16_PCREL",
"BFD_RELOC_12_PCREL",
"BFD_RELOC_8_PCREL", "BFD_RELOC_8_PCREL",
"BFD_RELOC_32_BASEREL", "BFD_RELOC_32_BASEREL",
"BFD_RELOC_16_BASEREL", "BFD_RELOC_16_BASEREL",
@ -546,6 +546,13 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_PPC_BA26", "BFD_RELOC_PPC_BA26",
"BFD_RELOC_PPC_TOC16", "BFD_RELOC_PPC_TOC16",
"BFD_RELOC_CTOR", "BFD_RELOC_CTOR",
"BFD_RELOC_ARM_PCREL_BRANCH",
"BFD_RELOC_ARM_IMMEDIATE",
"BFD_RELOC_ARM_OFFSET_IMM",
"BFD_RELOC_ARM_SHIFT_IMM",
"BFD_RELOC_ARM_SWI",
"BFD_RELOC_ARM_MULTI",
"BFD_RELOC_ARM_CP_OFF_IMM",
"@@overflow: BFD_RELOC_UNUSED@@", "@@overflow: BFD_RELOC_UNUSED@@",
}; };
#endif #endif

View File

@ -964,7 +964,7 @@ bfd_install_relocation (abfd, reloc_entry, data_start, data_start_offset,
const reloc_howto_type *howto = reloc_entry->howto; const reloc_howto_type *howto = reloc_entry->howto;
asection *reloc_target_output_section; asection *reloc_target_output_section;
asymbol *symbol; asymbol *symbol;
PTR data; bfd_byte *data;
symbol = *(reloc_entry->sym_ptr_ptr); symbol = *(reloc_entry->sym_ptr_ptr);
if (bfd_is_abs_section (symbol->section)) if (bfd_is_abs_section (symbol->section))
@ -1681,6 +1681,8 @@ ENUMX
BFD_RELOC_24_PCREL BFD_RELOC_24_PCREL
ENUMX ENUMX
BFD_RELOC_16_PCREL BFD_RELOC_16_PCREL
ENUMX
BFD_RELOC_12_PCREL
ENUMX ENUMX
BFD_RELOC_8_PCREL BFD_RELOC_8_PCREL
ENUMDOC ENUMDOC
@ -1711,11 +1713,12 @@ ENUMX
ENUMX ENUMX
BFD_RELOC_23_PCREL_S2 BFD_RELOC_23_PCREL_S2
ENUMDOC ENUMDOC
These PC-relative relocations are stored as word displacements -- i.e., These PC-relative relocations are stored as word displacements --
byte displacements shifted right two bits. The 30-bit word displacement i.e., byte displacements shifted right two bits. The 30-bit word
(<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the SPARC. The signed displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
16-bit displacement is used on the MIPS, and the 23-bit displacement is SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
used on the Alpha. signed 16-bit displacement is used on the MIPS, and the 23-bit
displacement is used on the Alpha.
ENUM ENUM
BFD_RELOC_HI22 BFD_RELOC_HI22