]> granicus.if.org Git - llvm/commitdiff
Revert r374139, "[dsymutil] Fix handling of common symbols in multiple object files."
authorJeremy Morse <jeremy.morse.llvm@gmail.com>
Wed, 9 Oct 2019 08:27:48 +0000 (08:27 +0000)
committerJeremy Morse <jeremy.morse.llvm@gmail.com>
Wed, 9 Oct 2019 08:27:48 +0000 (08:27 +0000)
The added test files ("com", "com1.o", "com2.o") are reserved names on
Windows, and makes 'git checkout' fail with a filesystem error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@374144 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/dsymutil/Inputs/private/tmp/common/com [deleted file]
test/tools/dsymutil/Inputs/private/tmp/common/com1.o [deleted file]
test/tools/dsymutil/Inputs/private/tmp/common/com2.o [deleted file]
test/tools/dsymutil/X86/common-sym-multi.test [deleted file]
tools/dsymutil/MachODebugMapParser.cpp

diff --git a/test/tools/dsymutil/Inputs/private/tmp/common/com b/test/tools/dsymutil/Inputs/private/tmp/common/com
deleted file mode 100755 (executable)
index 3aec975..0000000
Binary files a/test/tools/dsymutil/Inputs/private/tmp/common/com and /dev/null differ
diff --git a/test/tools/dsymutil/Inputs/private/tmp/common/com1.o b/test/tools/dsymutil/Inputs/private/tmp/common/com1.o
deleted file mode 100644 (file)
index 32c05ad..0000000
Binary files a/test/tools/dsymutil/Inputs/private/tmp/common/com1.o and /dev/null differ
diff --git a/test/tools/dsymutil/Inputs/private/tmp/common/com2.o b/test/tools/dsymutil/Inputs/private/tmp/common/com2.o
deleted file mode 100644 (file)
index a22d1af..0000000
Binary files a/test/tools/dsymutil/Inputs/private/tmp/common/com2.o and /dev/null differ
diff --git a/test/tools/dsymutil/X86/common-sym-multi.test b/test/tools/dsymutil/X86/common-sym-multi.test
deleted file mode 100644 (file)
index 008362e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/common/com -f -o - | llvm-dwarfdump -debug-info - | FileCheck %s
-RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/common/com -dump-debug-map | FileCheck %s --check-prefix DEBUGMAP
-
-The test was compiled from two source files:
-$ cd /private/tmp/common
-$ cat com1.c
-int i[1000];
-int main() {
-  return i[1];
-}
-$ cat com2.c
-extern int i[1000];
-int bar() {
-  return i[0];
-}
-$ clang -fcommon -g -c com1.c -o com1.o
-$ clang -fcommon -g -c com2.c -o com2.o
-$ clang -fcommon -g com1.o com2.o -o com
-
-CHECK: DW_TAG_compile_unit
-CHECK:   DW_TAG_variable
-CHECK-NOT: {{NULL|DW_TAG}}
-CHECK:     DW_AT_name{{.*}}"i"
-CHECK-NOT: {{NULL|DW_TAG}}
-CHECK:     DW_AT_location{{.*}}DW_OP_addr 0x100001000)
-
-CHECK: DW_TAG_compile_unit
-CHECK:   DW_TAG_variable
-CHECK-NOT: {{NULL|DW_TAG}}
-CHECK:     DW_AT_name{{.*}}"i"
-CHECK-NOT: {{NULL|DW_TAG}}
-CHECK:     DW_AT_location{{.*}}DW_OP_addr 0x100001000)
-
-DEBUGMAP: filename:{{.*}}com1.o
-DEBUGMAP: symbols:
-DEBUGMAP: sym: _i, binAddr: 0x0000000100001000, size: 0x00000000
-DEBUGMAP: filename:{{.*}}com2.o
-DEBUGMAP: symbols:
-DEBUGMAP: sym: _i, binAddr: 0x0000000100001000, size: 0x00000000
index 487fbfff50cfac342d1f3b50eddefeb116f9813b..27379c232decd5900c2df30058fb9fcac3f82e2e 100644 (file)
@@ -14,7 +14,6 @@
 #include "llvm/Support/Path.h"
 #include "llvm/Support/WithColor.h"
 #include "llvm/Support/raw_ostream.h"
-#include <vector>
 
 namespace {
 using namespace llvm;
@@ -52,8 +51,6 @@ private:
   StringRef MainBinaryStrings;
   /// The constructed DebugMap.
   std::unique_ptr<DebugMap> Result;
-  /// List of common symbols that need to be added to the debug map.
-  std::vector<std::string> CommonSymbols;
 
   /// Map of the currently processed object file symbol addresses.
   StringMap<Optional<uint64_t>> CurrentObjectAddresses;
@@ -84,8 +81,6 @@ private:
                                STE.n_value);
   }
 
-  void addCommonSymbols();
-
   /// Dump the symbol table output header.
   void dumpSymTabHeader(raw_ostream &OS, StringRef Arch);
 
@@ -127,32 +122,11 @@ void MachODebugMapParser::resetParserState() {
   CurrentDebugMapObject = nullptr;
 }
 
-/// Commons symbols won't show up in the symbol map but might need to be
-/// relocated. We can add them to the symbol table ourselves by combining the
-/// information in the object file (the symbol name) and the main binary (the
-/// address).
-void MachODebugMapParser::addCommonSymbols() {
-  for (auto &CommonSymbol : CommonSymbols) {
-    uint64_t CommonAddr = getMainBinarySymbolAddress(CommonSymbol);
-    if (CommonAddr == 0) {
-      // The main binary doesn't have an address for the given symbol.
-      continue;
-    }
-    if (!CurrentDebugMapObject->addSymbol(CommonSymbol, None /*ObjectAddress*/,
-                                          CommonAddr, 0 /*size*/)) {
-      // The symbol is already present.
-      continue;
-    }
-  }
-  CommonSymbols.clear();
-}
-
 /// Create a new DebugMapObject. This function resets the state of the
 /// parser that was referring to the last object file and sets
 /// everything up to add symbols to the new one.
 void MachODebugMapParser::switchToNewDebugMapObject(
     StringRef Filename, sys::TimePoint<std::chrono::seconds> Timestamp) {
-  addCommonSymbols();
   resetParserState();
 
   SmallString<80> Path(PathPrefix);
@@ -492,15 +466,10 @@ void MachODebugMapParser::loadCurrentObjectFileSymbols(
     // relocations will use the symbol itself, and won't need an
     // object file address. The object file address field is optional
     // in the DebugMap, leave it unassigned for these symbols.
-    uint32_t Flags = Sym.getFlags();
-    if (Flags & SymbolRef::SF_Absolute) {
-      CurrentObjectAddresses[*Name] = None;
-    } else if (Flags & SymbolRef::SF_Common) {
+    if (Sym.getFlags() & (SymbolRef::SF_Absolute | SymbolRef::SF_Common))
       CurrentObjectAddresses[*Name] = None;
-      CommonSymbols.push_back(*Name);
-    } else {
+    else
       CurrentObjectAddresses[*Name] = Addr;
-    }
   }
 }