Lines Matching +full:native +full:- +full:endian
1 //===- GsymReader.cpp -----------------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
27 : MemBuffer(std::move(Buffer)), Endian(llvm::endianness::native) {} in GsymReader()
62 BinaryStreamReader FileData(MemBuffer->getBuffer(), llvm::endianness::native); in parse()
70 const auto HostByteOrder = llvm::endianness::native; in parse()
71 switch (Hdr->Magic) { in parse()
73 Endian = HostByteOrder; in parse()
76 // This is a GSYM file, but not native endianness. in parse()
77 Endian = sys::IsBigEndianHost ? llvm::endianness::little in parse()
89 DataExtractor Data(MemBuffer->getBuffer(), DataIsLittleEndian, 4); in parse()
91 Swap->Hdr = ExpectedHdr.get(); in parse()
94 Hdr = &Swap->Hdr; in parse()
100 if (Error Err = Hdr->checkForError()) in parse()
104 // This is the native endianness case that is most common and optimized for in parse()
105 // efficient lookups. Here we just grab pointers to the native data and in parse()
109 if (FileData.padToAlignment(Hdr->AddrOffSize) || in parse()
111 Hdr->NumAddresses * Hdr->AddrOffSize)) in parse()
117 FileData.readArray(AddrInfoOffsets, Hdr->NumAddresses)) in parse()
128 FileData.setOffset(Hdr->StrtabOffset); in parse()
129 if (FileData.readFixedString(StrTab.Data, Hdr->StrtabSize)) in parse()
133 // This is the non native endianness case that is not common and not in parse()
137 DataExtractor Data(MemBuffer->getBuffer(), DataIsLittleEndian, 4); in parse()
140 uint64_t Offset = alignTo(sizeof(Header), Hdr->AddrOffSize); in parse()
141 Swap->AddrOffsets.resize(Hdr->NumAddresses * Hdr->AddrOffSize); in parse()
142 switch (Hdr->AddrOffSize) { in parse()
144 if (!Data.getU8(&Offset, Swap->AddrOffsets.data(), Hdr->NumAddresses)) in parse()
150 reinterpret_cast<uint16_t *>(Swap->AddrOffsets.data()), in parse()
151 Hdr->NumAddresses)) in parse()
157 reinterpret_cast<uint32_t *>(Swap->AddrOffsets.data()), in parse()
158 Hdr->NumAddresses)) in parse()
164 reinterpret_cast<uint64_t *>(Swap->AddrOffsets.data()), in parse()
165 Hdr->NumAddresses)) in parse()
169 AddrOffsets = ArrayRef<uint8_t>(Swap->AddrOffsets); in parse()
173 Swap->AddrInfoOffsets.resize(Hdr->NumAddresses); in parse()
174 if (Data.getU32(&Offset, Swap->AddrInfoOffsets.data(), Hdr->NumAddresses)) in parse()
175 AddrInfoOffsets = ArrayRef<uint32_t>(Swap->AddrInfoOffsets); in parse()
182 Swap->Files.resize(NumFiles); in parse()
183 if (Data.getU32(&Offset, &Swap->Files[0].Dir, NumFiles*2)) in parse()
184 Files = ArrayRef<FileEntry>(Swap->Files); in parse()
190 StrTab.Data = MemBuffer->getBuffer().substr(Hdr->StrtabOffset, in parse()
191 Hdr->StrtabSize); in parse()
209 switch (Hdr->AddrOffSize) { in getAddress()
227 if (Addr >= Hdr->BaseAddress) { in getAddressIndex()
228 const uint64_t AddrOffset = Addr - Hdr->BaseAddress; in getAddressIndex()
230 switch (Hdr->AddrOffSize) { in getAddressIndex()
246 Hdr->AddrOffSize); in getAddressIndex()
290 uint32_t FuncSize = ExpextedData->getU32(&Offset); in getFunctionInfoDataForAddress()
306 assert((Endian == endianness::big || Endian == endianness::little) && in getFunctionInfoDataAtIndex()
307 "Endian must be either big or little"); in getFunctionInfoDataAtIndex()
308 StringRef Bytes = MemBuffer->getBuffer().substr(AddrInfoOffset); in getFunctionInfoDataAtIndex()
318 return DataExtractor(Bytes, Endian == llvm::endianness::little, 4); in getFunctionInfoDataAtIndex()
354 switch (Hdr->AddrOffSize) { in dump()
365 switch (Hdr->AddrOffSize) { in dump()
440 if (FE->Dir == 0 && FE->Base == 0) in dump()
442 StringRef Dir = getString(FE->Dir); in dump()
443 StringRef Base = getString(FE->Base); in dump()
457 OS << "<invalid-file>"; in dump()