diff options
author | Ian Lance Taylor <iant@google.com> | 2006-11-16 00:38:25 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2006-11-16 00:38:25 +0000 |
commit | 0468de001cf096f21419373d7577b58d9b5977e0 (patch) | |
tree | 2ef13984d4c121ba39f97cb72b79eb77e00a338a /gold/reloc-types.h | |
parent | 6580ee5353cd78f4b7e8bc7fe1c84fc3b622300e (diff) | |
download | binutils-redhat-0468de001cf096f21419373d7577b58d9b5977e0.tar.gz |
Snapshot. Includes first cut at output relocation sections.
Diffstat (limited to 'gold/reloc-types.h')
-rw-r--r-- | gold/reloc-types.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gold/reloc-types.h b/gold/reloc-types.h new file mode 100644 index 0000000000..62538d6011 --- /dev/null +++ b/gold/reloc-types.h @@ -0,0 +1,36 @@ +// reloc-types.h -- ELF relocation templates for gold -*- C++ -*- + +// This header files defines a few convenient templated types for use +// when handling ELF relocations. + +#ifndef GOLD_RELOC_TYPES_H +#define GOLD_RELOC_TYPES_H + +#include "elfcpp.h" + +namespace gold +{ + +// Pick the ELF relocation accessor class and the size based on +// SH_TYPE, which is either elfcpp::SHT_REL or elfcpp::SHT_RELA. + +template<int sh_type, int size, bool big_endian> +struct Reloc_types; + +template<int size, bool big_endian> +struct Reloc_types<elfcpp::SHT_REL, size, big_endian> +{ + typedef typename elfcpp::Rel<size, big_endian> Reloc; + static const int reloc_size = elfcpp::Elf_sizes<size>::rel_size; +}; + +template<int size, bool big_endian> +struct Reloc_types<elfcpp::SHT_RELA, size, big_endian> +{ + typedef typename elfcpp::Rela<size, big_endian> Reloc; + static const int reloc_size = elfcpp::Elf_sizes<size>::rela_size; +}; + +}; // End namespace gold. + +#endif // !defined(GOLD_RELOC_TYPE_SH) |