Mercurial > hg > CbC > CbC_llvm
diff lld/ELF/Target.h @ 173:0572611fdcc8 llvm10 llvm12
reorgnization done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:55:54 +0900 |
parents | 1d019706d866 |
children | 2e18cbf3894f |
line wrap: on
line diff
--- a/lld/ELF/Target.h Mon May 25 11:50:15 2020 +0900 +++ b/lld/ELF/Target.h Mon May 25 11:55:54 2020 +0900 @@ -88,8 +88,21 @@ relocate(loc, Relocation{R_NONE, type, 0, 0, nullptr}, val); } + virtual void applyJumpInstrMod(uint8_t *loc, JumpModType type, + JumpModType val) const {} + virtual ~TargetInfo(); + // This deletes a jump insn at the end of the section if it is a fall thru to + // the next section. Further, if there is a conditional jump and a direct + // jump consecutively, it tries to flip the conditional jump to convert the + // direct jump into a fall thru and delete it. Returns true if a jump + // instruction can be deleted. + virtual bool deleteFallThruJmpInsn(InputSection &is, InputFile *file, + InputSection *nextIS) const { + return false; + } + unsigned defaultCommonPageSize = 4096; unsigned defaultMaxPageSize = 4096; @@ -126,6 +139,10 @@ // executable OutputSections. std::array<uint8_t, 4> trapInstr; + // Stores the NOP instructions of different sizes for the target and is used + // to pad sections that are relaxed. + llvm::Optional<std::vector<std::vector<uint8_t>>> nopInstrs; + // If a target needs to rewrite calls to __morestack to instead call // __morestack_non_split when a split-stack enabled caller calls a // non-split-stack callee this will return true. Otherwise returns false.