1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Reland: [llvm-objcopy] Add support for dynamic relocations

This change adds support for dynamic relocations (allocated
SHT_REL/SHT_RELA sections with a dynamic symbol table as their link).

I had to reland this because of a I wasn't initilizing some pointers.

llvm-svn: 314263
This commit is contained in:
Jake Ehrlich 2017-09-27 00:44:00 +00:00
parent 2763d561fe
commit 5b69666aa1

View File

@ -148,7 +148,7 @@ enum SymbolShndxType {
struct Symbol {
uint8_t Binding;
SectionBase *DefinedIn;
SectionBase *DefinedIn = nullptr;
SymbolShndxType ShndxType;
uint32_t Index;
llvm::StringRef Name;
@ -163,7 +163,7 @@ struct Symbol {
class SymbolTableSection : public SectionBase {
protected:
std::vector<std::unique_ptr<Symbol>> Symbols;
StringTableSection *SymbolNames;
StringTableSection *SymbolNames = nullptr;
public:
void setStrTab(StringTableSection *StrTab) { SymbolNames = StrTab; }
@ -185,7 +185,7 @@ template <class ELFT> class SymbolTableSectionImpl : public SymbolTableSection {
};
struct Relocation {
const Symbol *RelocSymbol;
const Symbol *RelocSymbol = nullptr;
uint64_t Offset;
uint64_t Addend;
uint32_t Type;
@ -193,8 +193,8 @@ struct Relocation {
template <class SymTabType> class RelocationSectionBase : public SectionBase {
private:
SymTabType *Symbols;
SectionBase *SecToApplyRel;
SymTabType *Symbols = nullptr;
SectionBase *SecToApplyRel = nullptr;
public:
void setSymTab(SymTabType *StrTab) { Symbols = StrTab; }
@ -226,7 +226,7 @@ public:
class SectionWithStrTab : public Section {
private:
StringTableSection *StrTab;
StringTableSection *StrTab = nullptr;
public:
SectionWithStrTab(llvm::ArrayRef<uint8_t> Data) : Section(Data) {}
@ -285,8 +285,8 @@ private:
SectionTableRef readSectionHeaders(const llvm::object::ELFFile<ELFT> &ElfFile);
protected:
StringTableSection *SectionNames;
SymbolTableSection *SymbolTable;
StringTableSection *SectionNames = nullptr;
SymbolTableSection *SymbolTable = nullptr;
std::vector<SecPtr> Sections;
std::vector<SegPtr> Segments;