mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-18 06:38:41 +00:00
[mips] Move some structures represent MIPS specific ELF sections from LLD to LLVM
That allows to reuse the code in other tools like llvm-readobj etc. No functional changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238188 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7b0f8fc600
commit
eda9f8aa74
@ -489,6 +489,43 @@ struct Elf_Phdr_Impl<ELFType<TargetEndianness, MaxAlign, true> > {
|
|||||||
Elf_Xword p_align; // Segment alignment constraint
|
Elf_Xword p_align; // Segment alignment constraint
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// MIPS .reginfo section
|
||||||
|
template <class ELFT>
|
||||||
|
struct Elf_Mips_RegInfo;
|
||||||
|
|
||||||
|
template <llvm::support::endianness TargetEndianness, std::size_t MaxAlign>
|
||||||
|
struct Elf_Mips_RegInfo<ELFType<TargetEndianness, MaxAlign, false>> {
|
||||||
|
LLVM_ELF_IMPORT_TYPES(TargetEndianness, MaxAlign, false)
|
||||||
|
Elf_Word ri_gprmask; // bit-mask of used general registers
|
||||||
|
Elf_Word ri_cprmask[4]; // bit-mask of used co-processor registers
|
||||||
|
Elf_Addr ri_gp_value; // gp register value
|
||||||
|
};
|
||||||
|
|
||||||
|
template <llvm::support::endianness TargetEndianness, std::size_t MaxAlign>
|
||||||
|
struct Elf_Mips_RegInfo<ELFType<TargetEndianness, MaxAlign, true>> {
|
||||||
|
LLVM_ELF_IMPORT_TYPES(TargetEndianness, MaxAlign, true)
|
||||||
|
Elf_Word ri_gprmask; // bit-mask of used general registers
|
||||||
|
Elf_Word ri_pad; // unused padding field
|
||||||
|
Elf_Word ri_cprmask[4]; // bit-mask of used co-processor registers
|
||||||
|
Elf_Addr ri_gp_value; // gp register value
|
||||||
|
};
|
||||||
|
|
||||||
|
// .MIPS.options section
|
||||||
|
template <class ELFT> struct Elf_Mips_Options {
|
||||||
|
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
|
||||||
|
uint8_t kind; // Determines interpretation of variable part of descriptor
|
||||||
|
uint8_t size; // Byte size of descriptor, including this header
|
||||||
|
Elf_Half section; // Section header index of section affected,
|
||||||
|
// or 0 for global options
|
||||||
|
Elf_Word info; // Kind-specific information
|
||||||
|
|
||||||
|
const Elf_Mips_RegInfo<ELFT> &getRegInfo() const {
|
||||||
|
assert(kind == llvm::ELF::ODK_REGINFO);
|
||||||
|
return *reinterpret_cast<const Elf_Mips_RegInfo<ELFT> *>(
|
||||||
|
(const uint8_t *)this + sizeof(Elf_Mips_Options));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// .MIPS.abiflags section content
|
// .MIPS.abiflags section content
|
||||||
template <class ELFT> struct Elf_Mips_ABIFlags {
|
template <class ELFT> struct Elf_Mips_ABIFlags {
|
||||||
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
|
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user