================ @@ -392,6 +393,70 @@ ELFFile<ELFT>::decode_relrs(Elf_Relr_Range relrs) const { return Relocs; } +template <class ELFT> +uint64_t ELFFile<ELFT>::crelHeader(ArrayRef<uint8_t> Content) const { + DataExtractor Data(Content, true, 8); // endian/class is irrelevant + DataExtractor::Cursor Cur(0); + uint64_t Hdr = Data.getULEB128(Cur); + // In case of an error, return 0 and postpone error reporting to decodeCrel. + consumeError(Cur.takeError()); + return Hdr; +} + +template <class ELFT> +Expected<typename ELFFile<ELFT>::RelsOrRelas> +ELFFile<ELFT>::decodeCrel(ArrayRef<uint8_t> Content) const { + DataExtractor Data(Content, true, 8); // endian/class is irrelevant + DataExtractor::Cursor Cur(0); + const uint64_t Hdr = Data.getULEB128(Cur); + const size_t Count = Hdr / 8, FlagBits = Hdr & ELF::CREL_HDR_ADDEND ? 3 : 2, + Shift = Hdr % ELF::CREL_HDR_ADDEND; ---------------- MaskRay wrote:
done https://github.com/llvm/llvm-project/pull/91280 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits