[llvm] r301940 - Make DWARFDebugLine use StringRef for directory/file tables. NFC
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Mon May 8 11:26:07 PDT 2017
On Tue, May 2, 2017 at 10:50 AM Paul Robinson via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: probinson
> Date: Tue May 2 12:37:32 2017
> New Revision: 301940
>
> URL: http://llvm.org/viewvc/llvm-project?rev=301940&view=rev
> Log:
> Make DWARFDebugLine use StringRef for directory/file tables. NFC
>
> Differential Revision: http://reviews.llvm.org/D32728
>
> Modified:
> llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
> llvm/trunk/include/llvm/Support/DataExtractor.h
> llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
> llvm/trunk/lib/Support/DataExtractor.cpp
>
> Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h?rev=301940&r1=301939&r2=301940&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h (original)
> +++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h Tue May 2
> 12:37:32 2017
> @@ -30,7 +30,7 @@ public:
> struct FileNameEntry {
> FileNameEntry() = default;
>
> - const char *Name = nullptr;
> + StringRef Name = StringRef();
>
This is redundant ^ - probably best to write it as "StringRef Name;" ?
uint64_t DirIdx = 0;
> uint64_t ModTime = 0;
> uint64_t Length = 0;
> @@ -63,7 +63,7 @@ public:
> /// The number assigned to the first special opcode.
> uint8_t OpcodeBase;
> std::vector<uint8_t> StandardOpcodeLengths;
> - std::vector<const char *> IncludeDirectories;
> + std::vector<StringRef> IncludeDirectories;
> std::vector<FileNameEntry> FileNames;
>
> bool IsDWARF64;
>
> Modified: llvm/trunk/include/llvm/Support/DataExtractor.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/DataExtractor.h?rev=301940&r1=301939&r2=301940&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/DataExtractor.h (original)
> +++ llvm/trunk/include/llvm/Support/DataExtractor.h Tue May 2 12:37:32
> 2017
> @@ -58,6 +58,28 @@ public:
> /// NULL will be returned.
> const char *getCStr(uint32_t *offset_ptr) const;
>
> + /// Extract a C string from \a *OffsetPtr.
> + ///
> + /// Returns a StringRef for the C String from the data at the offset
> + /// pointed to by \a OffsetPtr. A variable length NULL terminated C
> + /// string will be extracted and the \a OffsetPtr will be
> + /// updated with the offset of the byte that follows the NULL
> + /// terminator byte.
> + ///
> + /// \param[in,out] OffsetPtr
> + /// A pointer to an offset within the data that will be advanced
> + /// by the appropriate number of bytes if the value is extracted
> + /// correctly. If the offset is out of bounds or there are not
> + /// enough bytes to extract this value, the offset will be left
> + /// unmodified.
> + ///
> + /// \return
> + /// A StringRef for the C string value in the data. If the offset
> + /// pointed to by \a OffsetPtr is out of bounds, or if the
> + /// offset plus the length of the C string is out of bounds,
> + /// a default-initialized StringRef will be returned.
> + StringRef getCStrRef(uint32_t *OffsetPtr) const;
> +
> /// Extract an unsigned integer of size \a byte_size from \a
> /// *offset_ptr.
> ///
>
> Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp?rev=301940&r1=301939&r2=301940&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp Tue May 2 12:37:32
> 2017
> @@ -107,25 +107,22 @@ bool DWARFDebugLine::Prologue::parse(Dat
> }
>
> while (*OffsetPtr < EndPrologueOffset) {
> - const char *S = DebugLineData.getCStr(OffsetPtr);
> - if (S && S[0])
> - IncludeDirectories.push_back(S);
> - else
> + StringRef S = DebugLineData.getCStrRef(OffsetPtr);
> + if (S.empty())
> break;
> + IncludeDirectories.push_back(S);
> }
>
> while (*OffsetPtr < EndPrologueOffset) {
> - const char *Name = DebugLineData.getCStr(OffsetPtr);
> - if (Name && Name[0]) {
> - FileNameEntry FileEntry;
> - FileEntry.Name = Name;
> - FileEntry.DirIdx = DebugLineData.getULEB128(OffsetPtr);
> - FileEntry.ModTime = DebugLineData.getULEB128(OffsetPtr);
> - FileEntry.Length = DebugLineData.getULEB128(OffsetPtr);
> - FileNames.push_back(FileEntry);
> - } else {
> + StringRef Name = DebugLineData.getCStrRef(OffsetPtr);
> + if (Name.empty())
> break;
> - }
> + FileNameEntry FileEntry;
> + FileEntry.Name = Name;
> + FileEntry.DirIdx = DebugLineData.getULEB128(OffsetPtr);
> + FileEntry.ModTime = DebugLineData.getULEB128(OffsetPtr);
> + FileEntry.Length = DebugLineData.getULEB128(OffsetPtr);
> + FileNames.push_back(FileEntry);
> }
>
> if (*OffsetPtr != EndPrologueOffset) {
> @@ -637,7 +634,7 @@ bool DWARFDebugLine::LineTable::getFileN
> if (Kind == FileLineInfoKind::None || !hasFileAtIndex(FileIndex))
> return false;
> const FileNameEntry &Entry = Prologue.FileNames[FileIndex - 1];
> - const char *FileName = Entry.Name;
> + StringRef FileName = Entry.Name;
> if (Kind != FileLineInfoKind::AbsoluteFilePath ||
> sys::path::is_absolute(FileName)) {
> Result = FileName;
> @@ -646,7 +643,7 @@ bool DWARFDebugLine::LineTable::getFileN
>
> SmallString<16> FilePath;
> uint64_t IncludeDirIndex = Entry.DirIdx;
> - const char *IncludeDir = "";
> + StringRef IncludeDir;
> // Be defensive about the contents of Entry.
> if (IncludeDirIndex > 0 &&
> IncludeDirIndex <= Prologue.IncludeDirectories.size())
>
> Modified: llvm/trunk/lib/Support/DataExtractor.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/DataExtractor.cpp?rev=301940&r1=301939&r2=301940&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/DataExtractor.cpp (original)
> +++ llvm/trunk/lib/Support/DataExtractor.cpp Tue May 2 12:37:32 2017
> @@ -128,6 +128,16 @@ const char *DataExtractor::getCStr(uint3
> return nullptr;
> }
>
> +StringRef DataExtractor::getCStrRef(uint32_t *OffsetPtr) const {
> + uint32_t Start = *OffsetPtr;
> + StringRef::size_type Pos = Data.find('\0', Start);
> + if (Pos != StringRef::npos) {
> + *OffsetPtr = Pos + 1;
> + return StringRef(Data.data() + Start, Pos - Start);
> + }
> + return StringRef();
> +}
> +
> uint64_t DataExtractor::getULEB128(uint32_t *offset_ptr) const {
> uint64_t result = 0;
> if (Data.empty())
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170508/6a49ca5b/attachment.html>
More information about the llvm-commits
mailing list