Teach llvm-readobj to print human friendly description of reserved sections.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 24 Mar 2014 05:00:34 +0000 (05:00 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 24 Mar 2014 05:00:34 +0000 (05:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204584 91177308-0d34-0410-b5e6-96231b3b80d8

24 files changed:
test/MC/ARM/arm-elf-symver.s
test/MC/ELF/abs.s
test/MC/ELF/alias-reloc.s
test/MC/ELF/alias.s
test/MC/ELF/comdat.s
test/MC/ELF/common.s
test/MC/ELF/file-double.s
test/MC/ELF/file.s
test/MC/ELF/pic-diff.s
test/MC/ELF/pr9292.s
test/MC/ELF/set.s
test/MC/ELF/symref.s
test/MC/ELF/tls-i386.s
test/MC/ELF/tls.s
test/MC/ELF/type-propagate.s
test/MC/ELF/undef.s
test/MC/ELF/weak.s
test/MC/ELF/weakref-reloc.s
test/MC/ELF/weakref.s
test/Object/readobj-elf-versioning.test
test/Object/readobj-shared-object.test
test/Object/yaml2obj-elf-symbol-basic.yaml
test/tools/llvm-readobj/symbols.test
tools/llvm-readobj/ELFDumper.cpp

index 0d141b7fd8a78ec8d91d7325d9e95b3d30518192..f7c0288a88f0b664d25c89319e95c1ed9750606e 100644 (file)
@@ -138,7 +138,7 @@ global1:
 @ CHECK-NEXT:     Binding: Global (0x1)
 @ CHECK-NEXT:     Type: None (0x0)
 @ CHECK-NEXT:     Other: 0
-@ CHECK-NEXT:     Section:  (0x0)
+@ CHECK-NEXT:     Section: Undefined (0x0)
 @ CHECK-NEXT:   }
 @ CHECK-NEXT:   Symbol {
 @ CHECK-NEXT:     Name: bar6@zed (66)
@@ -147,6 +147,6 @@ global1:
 @ CHECK-NEXT:     Binding: Global (0x1)
 @ CHECK-NEXT:     Type: None (0x0)
 @ CHECK-NEXT:     Other: 0
-@ CHECK-NEXT:     Section:  (0x0)
+@ CHECK-NEXT:     Section: Undefined (0x0)
 @ CHECK-NEXT:   }
 @ CHECK-NEXT: ]
index 1836f4005973735fcd6e246b621166cafacb3796..4adf1cb56afd80115476d81876f7fe729cb646d4 100644 (file)
@@ -13,5 +13,5 @@
 // CHECK-NEXT:     Binding: Local
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF1)
+// CHECK-NEXT:     Section: Absolute (0xFFF1)
 // CHECK-NEXT:   }
index 0ee73e9ca24a11bbfa49b24f0916d21ae68dc6e9..74930c63aeb8c0a7f1d398af12ab51271d26824e 100644 (file)
@@ -32,7 +32,7 @@ foo2:
 // CHECK-NEXT:     Binding: Local (0x0)
 // CHECK-NEXT:     Type: None (0x0)
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section:  (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar
index c532f7c02ca5f796f33fc12b1c8ab5cad2346a9e..2e65ace6ba11df543c813760e0e67eae850bf28e 100644 (file)
@@ -28,7 +28,7 @@ bar5 = bar4
 // CHECK-NEXT:     Binding: Local (0x0)
 // CHECK-NEXT:     Type: None (0x0)
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section:  (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar
@@ -109,6 +109,6 @@ bar5 = bar4
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index 3e4a001f05addfaf2c38f8ce3d2d8ef42acb29a0..05d08e14816cea6448fc0c717cfa1edf58fe10b3 100644 (file)
@@ -74,7 +74,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 
 
index 4fc2154d850c5154bdeff4f1c71d5d0ee27031a1..9cff927ba55c10f7b577209e1696bc2a5bcb7a0a 100644 (file)
@@ -60,7 +60,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: Object
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF2)
+// CHECK-NEXT:     Section: Common (0xFFF2)
 // CHECK-NEXT:   }
 
 
@@ -82,7 +82,7 @@ foo:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: Object
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF2)
+// CHECK-NEXT:     Section: Common (0xFFF2)
 // CHECK-NEXT:   }
 
 
@@ -95,5 +95,5 @@ foo:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: Object
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF2)
+// CHECK-NEXT:     Section: Common (0xFFF2)
 // CHECK-NEXT:   }
index b0731e67ed0dcb70112bc02161351acd13e0f036..f9b91edd6feab64952dc6f962bcdb2e189e9359f 100644 (file)
@@ -17,7 +17,7 @@ bar.c:
 // CHECK-NEXT:     Binding: Local
 // CHECK-NEXT:     Type: File
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF1)
+// CHECK-NEXT:     Section: Absolute (0xFFF1)
 // CHECK-NEXT:   }
 // CHECK:          Name: bar.c (7)
 // CHECK-NEXT:     Value: 0x0
@@ -25,7 +25,7 @@ bar.c:
 // CHECK-NEXT:     Binding: Local
 // CHECK-NEXT:     Type: File
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF1)
+// CHECK-NEXT:     Section: Absolute (0xFFF1)
 // CHECK-NEXT:   }
 // CHECK:        Symbol {
 // CHECK:        Name: bar.c (7)
index 7e287f7e3fa9eee2e24a40e9caab515d9a8d65f2..6b6cb44e2b28c5553437482e572347d4607d14aa 100644 (file)
@@ -12,7 +12,7 @@ foa:
 // CHECK-NEXT:     Binding: Local
 // CHECK-NEXT:     Type: File
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF1)
+// CHECK-NEXT:     Section: Absolute (0xFFF1)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foa (5)
index cffa0dd368eb26d9358e6f0e7f10d036323c8ef4..30c92780f1332934d06a97d425e421d7762a4d02 100644 (file)
@@ -13,7 +13,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 
 .zero 4
index a6e78dc992a885448d1457cffb24d470638a6ebd..a433650bc699140571591785952ef29e43034685 100644 (file)
@@ -14,7 +14,7 @@ mov %eax,bar
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo (1)
@@ -23,5 +23,5 @@ mov %eax,bar
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
index f6965a583a9faa28ce3fc772d3144cc10f16b855..80e7e5380a726208ab1c203eb909bf677913b72f 100644 (file)
@@ -11,7 +11,7 @@
 // CHECK-NEXT:     Binding: Local
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0xFFF1)
+// CHECK-NEXT:     Section: Absolute (0xFFF1)
 // CHECK-NEXT:   }
 
 // Test that we accept .set of a symbol after it has been used in a statement.
@@ -32,5 +32,5 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
index c8015b96a3168f6cf72a472b98cefb0b46d28d1e..737683bd407aad59f4c149e084bfa835226b1c79 100644 (file)
@@ -128,7 +128,7 @@ global1:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar6@zed (57)
@@ -137,6 +137,6 @@ global1:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index 267046ef5bfb56940e03e09b7c41f277da1fe764..88e96ff66739535ac178c17b6f3a8a8ac2c89aa7 100644 (file)
@@ -24,7 +24,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo2 (6)
@@ -33,7 +33,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo3 (11)
@@ -42,7 +42,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo4 (16)
@@ -51,7 +51,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo5 (21)
@@ -60,7 +60,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo6 (26)
@@ -69,7 +69,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo7 (31)
@@ -78,7 +78,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo8 (36)
@@ -87,7 +87,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo9 (41)
@@ -96,7 +96,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: fooA (46)
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: fooB (51)
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: fooC (56)
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: fooD (61)
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: fooE (66)
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
index c71e3962bb4948d25291147a1d5fccb5f2fcf01f..6d4b703ace48b2850cc4cc16eb98ade06e53e918 100644 (file)
@@ -29,7 +29,7 @@ foobar:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo2 (6)
@@ -38,7 +38,7 @@ foobar:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo3 (11)
@@ -47,7 +47,7 @@ foobar:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo4 (16)
@@ -56,7 +56,7 @@ foobar:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo5 (21)
@@ -65,7 +65,7 @@ foobar:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo6 (26)
@@ -74,5 +74,5 @@ foobar:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: TLS
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
index feb9507a4414803aed5bdfe125efcf83569eb57a..15d05af7f2fa0eced951a268aade86fc1e2c99cf 100644 (file)
@@ -84,7 +84,7 @@ sym10:
 // CHECK-NEXT:    Binding: Local (0x0)
 // CHECK-NEXT:    Type: None (0x0)
 // CHECK-NEXT:    Other: 0
-// CHECK-NEXT:    Section:  (0xFFF1)
+// CHECK-NEXT:    Section: Absolute (0xFFF1)
 // CHECK-NEXT:  }
 // CHECK-NEXT:  Symbol {
 // CHECK-NEXT:    Name: sym07
@@ -93,7 +93,7 @@ sym10:
 // CHECK-NEXT:    Binding: Local (0x0)
 // CHECK-NEXT:    Type: None (0x0)
 // CHECK-NEXT:    Other: 0
-// CHECK-NEXT:    Section:  (0xFFF1)
+// CHECK-NEXT:    Section: Absolute (0xFFF1)
 // CHECK-NEXT:  }
 // CHECK-NEXT:  Symbol {
 // CHECK-NEXT:    Name: sym08
index 0d89fb129361234c1e1f53e551a44750e234952f..7c2a876056d266840b6f4b5d54f8c6b3b383946f 100644 (file)
@@ -34,6 +34,6 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: Object
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index 943a46d03b33a8c3de74dc6f9b7333349f24df7c..99d427333d1492f5c6b94c7b4465b50d4f5ac6bd 100644 (file)
@@ -25,6 +25,6 @@ bar:
 // CHECK-NEXT:     Binding: Weak
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:  ]
index 48bda8748fde18451cc1d38b7f8d012894912073..582c6946c609c6cfe00263f0fab552d13815ac06 100644 (file)
@@ -22,7 +22,7 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: foo (1)
@@ -31,7 +31,7 @@
 // CHECK-NEXT:     Binding: Weak
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: zed (5)
@@ -40,5 +40,5 @@
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
index 6c2d33397c85bf776e5f83a21258ac9f2744e9f4..cf2228d8f7609443e39c9154200108607d1b0340 100644 (file)
@@ -77,7 +77,7 @@ bar15:
 // CHECK-NEXT:     Binding: Local (0x0)
 // CHECK-NEXT:     Type: None (0x0)
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section:  (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar6 (21)
@@ -203,7 +203,7 @@ bar15:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar3 (6)
@@ -212,7 +212,7 @@ bar15:
 // CHECK-NEXT:     Binding: Weak
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar4 (11)
@@ -221,7 +221,7 @@ bar15:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: bar5 (16)
@@ -230,6 +230,6 @@ bar15:
 // CHECK-NEXT:     Binding: Global
 // CHECK-NEXT:     Type: None
 // CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: (0x0)
+// CHECK-NEXT:     Section: Undefined (0x0)
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index 1f09ef32a11aecc7f3005899332afe2d5160a494..40852877457d3d1ddf392f7ef2aafaff8b9baf7f 100644 (file)
@@ -33,7 +33,7 @@ ELF32:   Symbol {
 ELF32:     Name: puts@GLIBC_2.0
 ELF32:     Binding: Global
 ELF32:     Type: Function
-ELF32:     Section:  (0x0)
+ELF32:     Section: Undefined (0x0)
 ELF32:   }
 ELF32: ]
 ELF64: DynamicSymbols [
@@ -41,6 +41,6 @@ ELF64:   Symbol {
 ELF64:     Name: puts@GLIBC_2.2.5
 ELF64:     Binding: Global
 ELF64:     Type: Function
-ELF64:     Section:  (0x0)
+ELF64:     Section: Undefined (0x0)
 ELF64:   }
 ELF64: ]
index 72dbd32ea9d5fe1872142f4305f99b494350b044..516d4c699e420b421faf3e0fdd1f3065dbcbed67 100644 (file)
@@ -191,7 +191,7 @@ ELF:   Symbol {
 ELF:     Name: shared.ll
 ELF:     Binding: Local
 ELF:     Type: File
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: local_func
@@ -203,13 +203,13 @@ ELF:   Symbol {
 ELF:     Name: _GLOBAL_OFFSET_TABLE_
 ELF:     Binding: Local
 ELF:     Type: Object
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: _DYNAMIC
 ELF:     Binding: Local
 ELF:     Type: Object
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: common_sym
@@ -233,13 +233,13 @@ ELF:   Symbol {
 ELF:     Name: __bss_start
 ELF:     Binding: Global
 ELF:     Type: None
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: _end
 ELF:     Binding: Global
 ELF:     Type: None
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: global_func
@@ -251,7 +251,7 @@ ELF:   Symbol {
 ELF:     Name: _edata
 ELF:     Binding: Global
 ELF:     Type: None
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF: ]
 
@@ -278,13 +278,13 @@ ELF:   Symbol {
 ELF:     Name: __bss_start
 ELF:     Binding: Global
 ELF:     Type: None
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: _end
 ELF:     Binding: Global
 ELF:     Type: None
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF:   Symbol {
 ELF:     Name: global_func
@@ -296,7 +296,7 @@ ELF:   Symbol {
 ELF:     Name: _edata
 ELF:     Binding: Global
 ELF:     Type: None
-ELF:     Section: (0xFFF1)
+ELF:     Section: Absolute (0xFFF1)
 ELF:   }
 ELF: ]
 
index 3fb9b17655fd85f959b33aa99712c0c6d22ea92a..6d49ddd1c422a60f6d17792b15ea8c817b25af44 100644 (file)
@@ -37,4 +37,4 @@ Symbols:
 # CHECK:          Section: .text
 # CHECK:        Symbol {
 # CHECK:          Name: undefined_symbol
-# CHECK:          Section:  (0x0)
+# CHECK:          Section: Undefined (0x0)
index e427bdc8d97836fb18a7c0a04ea64acab23e4a21..26830ac46a8a8882548e0b706a2ce77fd27b6dea 100644 (file)
@@ -49,7 +49,7 @@ ELF-NEXT:     Size: 0
 ELF-NEXT:     Binding: Local (0x0)
 ELF-NEXT:     Type: None (0x0)
 ELF-NEXT:     Other: 0
-ELF-NEXT:     Section:  (0x0)
+ELF-NEXT:     Section: Undefined (0x0)
 ELF-NEXT:   }
 ELF-NEXT:   Symbol {
 ELF-NEXT:     Name: trivial.ll (1)
@@ -58,7 +58,7 @@ ELF-NEXT:     Size: 0
 ELF-NEXT:     Binding: Local (0x0)
 ELF-NEXT:     Type: File (0x4)
 ELF-NEXT:     Other: 0
-ELF-NEXT:     Section:  (0xFFF1)
+ELF-NEXT:     Section: Absolute (0xFFF1)
 ELF-NEXT:   }
 ELF-NEXT:   Symbol {
 ELF-NEXT:     Name: .L.str (39)
index e4532a5476ee1ccc98e19e2a996f6391525f6d71..94b76d00e7911cec15e20ba0a3bea785a5a7ae27 100644 (file)
@@ -625,8 +625,28 @@ void ELFDumper<ELFT>::printDynamicSymbols() {
 template <class ELFT>
 void ELFDumper<ELFT>::printSymbol(typename ELFO::Elf_Sym_Iter Symbol) {
   StringRef SymbolName = errorOrDefault(Obj->getSymbolName(Symbol));
-  const Elf_Shdr *Sec = Obj->getSection(&*Symbol);
-  StringRef SectionName = Sec ? errorOrDefault(Obj->getSectionName(Sec)) : "";
+
+  unsigned SectionIndex = Obj->getSymbolTableIndex(&*Symbol);
+  StringRef SectionName;
+  if (SectionIndex == SHN_UNDEF) {
+    SectionName = "Undefined";
+  } else if (SectionIndex >= SHN_LOPROC && SectionIndex <= SHN_HIPROC) {
+    SectionName = "Processor Specific";
+  } else if (SectionIndex >= SHN_LOOS && SectionIndex <= SHN_HIOS) {
+    SectionName = "Operating System Specific";
+  } else if (SectionIndex > SHN_HIOS && SectionIndex < SHN_ABS) {
+    SectionName = "Reserved";
+  } else if (SectionIndex == SHN_ABS) {
+    SectionName = "Absolute";
+  } else if (SectionIndex == SHN_COMMON) {
+    SectionName = "Common";
+  } else {
+    assert(SectionIndex != SHN_XINDEX &&
+           "getSymbolTableIndex should handle this");
+    const Elf_Shdr *Sec = Obj->getSection(SectionIndex);
+    SectionName = errorOrDefault(Obj->getSectionName(Sec));
+  }
+
   std::string FullSymbolName(SymbolName);
   if (Symbol.isDynamic()) {
     bool IsDefault;