[PATCH] D41657: Do not look up symbol names when n_strx == 0

Michael Trent via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 2 13:04:20 PST 2018


mtrent updated this revision to Diff 128451.
mtrent added a comment.

Updating change request with review feedback.

Main change is to rewrite the lit test to exactly match whole lines of input.
Also added a comment explaining how the test binary was formed.


https://reviews.llvm.org/D41657

Files:
  lib/Object/MachOObjectFile.cpp
  test/tools/llvm-nm/X86/Inputs/macho-dwarf-x86_64
  test/tools/llvm-nm/X86/macho-dwarf.test


Index: test/tools/llvm-nm/X86/macho-dwarf.test
===================================================================
--- /dev/null
+++ test/tools/llvm-nm/X86/macho-dwarf.test
@@ -0,0 +1,15 @@
+# This file was constructed from 3 trivial source files and linked with macOS's
+# ld64 linker. 
+#
+#   cc -gdwarf-2 -o foo.o -c foo.c
+#   cc -gdwarf-2 -o bar.o -c bar.c
+#   ld -r foo.o bar.o -o foobar.o
+#   cc -gdwarf-2 -o baz foobar.o baz.c
+
+# RUN: llvm-nm -ap %p/Inputs/macho-dwarf-x86_64 | FileCheck -match-full-lines -strict-whitespace %s
+
+# CHECK:000000000000002a - 01 0000 ENSYM 
+# CHECK:0000000000000010 - 01 0000 ENSYM 
+# CHECK:000000000000000b - 01 0000 ENSYM 
+
+
Index: lib/Object/MachOObjectFile.cpp
===================================================================
--- lib/Object/MachOObjectFile.cpp
+++ lib/Object/MachOObjectFile.cpp
@@ -1659,6 +1659,9 @@
 Expected<StringRef> MachOObjectFile::getSymbolName(DataRefImpl Symb) const {
   StringRef StringTable = getStringTableData();
   MachO::nlist_base Entry = getSymbolTableEntryBase(*this, Symb);
+  // contents of the StringTable at n_strx 0 are not defined
+  if (Entry.n_strx == 0)
+    return StringRef();
   const char *Start = &StringTable.data()[Entry.n_strx];
   if (Start < getData().begin() || Start >= getData().end()) {
     return malformedError("bad string index: " + Twine(Entry.n_strx) +


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41657.128451.patch
Type: text/x-patch
Size: 1375 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180102/4c429b58/attachment.bin>


More information about the llvm-commits mailing list