#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "common/linux/synth_elf.h"
#include <assert.h>
#include <elf.h>
#include <stdio.h>
#include <string.h>
#include "common/linux/elf_gnu_compat.h"
#include "common/using_std_string.h"
namespace google_breakpad {
namespace synth_elf {
ELF::ELF(uint16_t machine,
uint8_t file_class,
Endianness endianness)
: … { … }
int ELF::AddSection(const string& name, const Section& section,
uint32_t type, uint32_t flags, uint64_t addr,
uint32_t link, uint64_t entsize, uint64_t offset) { … }
void ELF::AppendSection(ElfSection& section) { … }
void ELF::AddSegment(int start, int end, uint32_t type, uint32_t flags) { … }
void ELF::Finish() { … }
SymbolTable::SymbolTable(Endianness endianness,
size_t addr_size,
StringTable& table) : … { … }
void SymbolTable::AddSymbol(const string& name, uint32_t value,
uint32_t size, unsigned info, uint16_t shndx) { … }
void SymbolTable::AddSymbol(const string& name, uint64_t value,
uint64_t size, unsigned info, uint16_t shndx) { … }
void Notes::AddNote(int type, const string& name, const uint8_t* desc_bytes,
size_t desc_size) { … }
}
}