mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-22 00:23:50 +00:00
2946cd7010
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
//===- Writer.h -------------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLD_ELF_WRITER_H
|
|
#define LLD_ELF_WRITER_H
|
|
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include <cstdint>
|
|
#include <memory>
|
|
|
|
namespace lld {
|
|
namespace elf {
|
|
class InputFile;
|
|
class OutputSection;
|
|
class InputSectionBase;
|
|
template <class ELFT> class ObjFile;
|
|
class SymbolTable;
|
|
template <class ELFT> void writeResult();
|
|
|
|
// This describes a program header entry.
|
|
// Each contains type, access flags and range of output sections that will be
|
|
// placed in it.
|
|
struct PhdrEntry {
|
|
PhdrEntry(unsigned Type, unsigned Flags) : p_type(Type), p_flags(Flags) {}
|
|
void add(OutputSection *Sec);
|
|
|
|
uint64_t p_paddr = 0;
|
|
uint64_t p_vaddr = 0;
|
|
uint64_t p_memsz = 0;
|
|
uint64_t p_filesz = 0;
|
|
uint64_t p_offset = 0;
|
|
uint32_t p_align = 0;
|
|
uint32_t p_type = 0;
|
|
uint32_t p_flags = 0;
|
|
|
|
OutputSection *FirstSec = nullptr;
|
|
OutputSection *LastSec = nullptr;
|
|
bool HasLMA = false;
|
|
|
|
uint64_t LMAOffset = 0;
|
|
};
|
|
|
|
void addReservedSymbols();
|
|
llvm::StringRef getOutputSectionName(const InputSectionBase *S);
|
|
|
|
template <class ELFT> uint32_t calcMipsEFlags();
|
|
|
|
uint8_t getMipsFpAbiFlag(uint8_t OldFlag, uint8_t NewFlag,
|
|
llvm::StringRef FileName);
|
|
|
|
bool isMipsN32Abi(const InputFile *F);
|
|
bool isMicroMips();
|
|
bool isMipsR6();
|
|
} // namespace elf
|
|
} // namespace lld
|
|
|
|
#endif
|