Don't hide the first ELF symbol.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 5 Jun 2013 20:33:54 +0000 (20:33 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 5 Jun 2013 20:33:54 +0000 (20:33 +0000)
The first symbol on ELF is dummy, but it has a defined content and readelf
normally displays it. With this change llvm-readobj also displays it and we
can check that llvm-mc output is correct according to the standard.

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

include/llvm/Object/ELF.h
test/MC/ELF/alias-reloc.s
test/MC/ELF/alias.s
test/MC/ELF/weakref.s
test/tools/llvm-readobj/symbols.test

index a1a3d593efbca3630fd3c7baa60180706578608c..2c66941bc41a0cc94604dd97e32433e08599cdb7 100644 (file)
@@ -2466,7 +2466,7 @@ symbol_iterator ELFObjectFile<ELFT>::begin_symbols() const {
     SymbolData.d.a = 0;
     SymbolData.d.b = 0;
   } else {
-    SymbolData.d.a = 1; // The 0th symbol in ELF is fake.
+    SymbolData.d.a = 0;
     SymbolData.d.b = SymbolTableIndex;
   }
   return symbol_iterator(SymbolRef(SymbolData, this));
@@ -2493,7 +2493,7 @@ symbol_iterator ELFObjectFile<ELFT>::begin_dynamic_symbols() const {
     SymbolData.d.a = 0;
     SymbolData.d.b = 0;
   } else {
-    SymbolData.d.a = 1; // The 0th symbol in ELF is fake.
+    SymbolData.d.a = 0;
     SymbolData.d.b = DynamicSymbolTableIndex;
   }
   return symbol_iterator(SymbolRef(SymbolData, this));
index f5448e5ffb53a3b5b63837c888f462221fab7bd7..0ee73e9ca24a11bbfa49b24f0916d21ae68dc6e9 100644 (file)
@@ -25,7 +25,16 @@ foo2:
 // CHECK-NEXT: ]
 
 // CHECK:      Symbols [
-// CHECK:        Symbol {
+// CHECK-NEXT:   Symbol {
+// CHECK-NEXT:     Name:  (0)
+// CHECK-NEXT:     Value: 0x0
+// CHECK-NEXT:     Size: 0
+// CHECK-NEXT:     Binding: Local (0x0)
+// CHECK-NEXT:     Type: None (0x0)
+// CHECK-NEXT:     Other: 0
+// CHECK-NEXT:     Section:  (0x0)
+// CHECK-NEXT:   }
+// CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:     Size: 0
index 0575f41fc8510592a78663d1f3f9f6e4969d6785..8da75f7ef2dee0238088663f3ea96e0e19ed4027 100644 (file)
@@ -19,6 +19,15 @@ bar4 = foo4
 
 // CHECK:      Symbols [
 // CHECK-NEXT:   Symbol {
+// CHECK-NEXT:     Name:  (0)
+// CHECK-NEXT:     Value: 0x0
+// CHECK-NEXT:     Size: 0
+// CHECK-NEXT:     Binding: Local (0x0)
+// CHECK-NEXT:     Type: None (0x0)
+// CHECK-NEXT:     Other: 0
+// CHECK-NEXT:     Section:  (0x0)
+// CHECK-NEXT:   }
+// CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:     Size: 0
index 87173641b56f5eee95b3bec705608aa137497019..6c2d33397c85bf776e5f83a21258ac9f2744e9f4 100644 (file)
@@ -71,6 +71,15 @@ bar15:
 
 // CHECK:      Symbols [
 // CHECK-NEXT:   Symbol {
+// CHECK-NEXT:     Name:  (0)
+// CHECK-NEXT:     Value: 0x0
+// CHECK-NEXT:     Size: 0
+// CHECK-NEXT:     Binding: Local (0x0)
+// CHECK-NEXT:     Type: None (0x0)
+// CHECK-NEXT:     Other: 0
+// CHECK-NEXT:     Section:  (0x0)
+// CHECK-NEXT:   }
+// CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar6 (21)
 // CHECK-NEXT:     Value: 0x18
 // CHECK-NEXT:     Size: 0
index d33bd8ed2cd04fd1fb871c4d0e9c0d4139d4e0e7..e014377e586f484d69ca0f9291615b7fbcc706f2 100644 (file)
@@ -25,6 +25,15 @@ COFF-NEXT:   }
 
 ELF:      Symbols [
 ELF-NEXT:   Symbol {
+ELF-NEXT:     Name:  (0)
+ELF-NEXT:     Value: 0x0
+ELF-NEXT:     Size: 0
+ELF-NEXT:     Binding: Local (0x0)
+ELF-NEXT:     Type: None (0x0)
+ELF-NEXT:     Other: 0
+ELF-NEXT:     Section:  (0x0)
+ELF-NEXT:   }
+ELF-NEXT:   Symbol {
 ELF-NEXT:     Name: trivial.ll (1)
 ELF-NEXT:     Value: 0x0
 ELF-NEXT:     Size: 0