OSDN Git Service

Make all temporary symbols unnamed.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 19 Jun 2015 12:16:55 +0000 (12:16 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 19 Jun 2015 12:16:55 +0000 (12:16 +0000)
What this does is make all symbols that would otherwise start with a .L
(or L on MachO) unnamed.

Some of these symbols still show up in the symbol table, but we can just
make them unnamed.

In order to make sure we produce identical results when going thought assembly,
all .L (not just the compiler produced ones), are now unnamed.

Running llc on llvm-as.opt.bc, the peak memory usage goes from 208.24MB to
205.57MB.

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

25 files changed:
include/llvm/MC/MCContext.h
lib/MC/ELFObjectWriter.cpp
lib/MC/MCContext.cpp
lib/MC/MachObjectWriter.cpp
test/CodeGen/SPARC/obj-relocs.ll
test/MC/ARM/elf-reloc-02.s
test/MC/ELF/basic-elf-32.s
test/MC/ELF/compression.s
test/MC/ELF/discriminator.s
test/MC/ELF/merge.s
test/MC/ELF/relocation-386.s
test/MC/ELF/undef-temp.s [new file with mode: 0644]
test/MC/ELF/undef.s
test/MC/ELF/undef2.s [deleted file]
test/MC/MachO/AArch64/classrefs.s
test/MC/MachO/AArch64/darwin-ARM64-reloc.s
test/MC/MachO/AArch64/ld64-workaround.s
test/MC/MachO/AArch64/mergeable.s
test/MC/MachO/AArch64/reloc-crash.s
test/MC/MachO/x86_64-mergeable.s
test/MC/MachO/x86_64-symbols.s
test/MC/Mips/cpsetup.s
test/MC/Mips/elf-relsym.s
test/MC/Mips/xgot.s
test/MC/Sparc/sparc-pic.s

index 52017fd..99b8a5c 100644 (file)
@@ -208,8 +208,7 @@ namespace llvm {
 
     MCSymbol *createSymbolImpl(const StringMapEntry<bool> *Name,
                                bool CanBeUnnamed);
-    MCSymbol *createSymbol(StringRef Name, bool AlwaysAddSuffix,
-                           bool IsTemporary);
+    MCSymbol *createSymbol(StringRef Name, bool AlwaysAddSuffix);
 
     MCSymbol *getOrCreateDirectionalLocalSymbol(unsigned LocalLabelVal,
                                                 unsigned Instance);
@@ -249,10 +248,9 @@ namespace llvm {
 
     /// Create and return a new assembler temporary symbol with a unique but
     /// unspecified name.
-    MCSymbol *createTempSymbol(bool CanBeUnnamed = true);
+    MCSymbol *createTempSymbol();
 
-    MCSymbol *createTempSymbol(const Twine &Name, bool AlwaysAddSuffix,
-                               bool CanBeUnnamed = true);
+    MCSymbol *createTempSymbol(const Twine &Name, bool AlwaysAddSuffix);
 
     /// Create the definition of a directional local symbol for numbered label
     /// (used for "1:" definitions).
index 0765937..bbf0b2b 100644 (file)
@@ -786,10 +786,15 @@ void ELFObjectWriter::computeSymbolTable(
                     Renames.count(&Symbol)))
       continue;
 
+    if (Symbol.isTemporary() && Symbol.isUndefined())
+      Ctx.reportFatalError(SMLoc(), "Undefined temporary");
+
     ELFSymbolData MSD;
     MSD.Symbol = cast<MCSymbolELF>(&Symbol);
 
     bool Local = Symbol.getBinding() == ELF::STB_LOCAL;
+    assert(Local || !Symbol.isTemporary());
+
     if (Symbol.isAbsolute()) {
       MSD.SectionIndex = ELF::SHN_ABS;
     } else if (Symbol.isCommon()) {
@@ -888,9 +893,11 @@ void ELFObjectWriter::computeSymbolTable(
   unsigned Index = FileNames.size() + 1;
 
   for (ELFSymbolData &MSD : LocalSymbolData) {
-    unsigned StringIndex = MSD.Symbol->getType() == ELF::STT_SECTION
-                               ? 0
-                               : StrTabBuilder.getOffset(MSD.Name);
+    unsigned StringIndex;
+    if (MSD.Symbol->getType() == ELF::STT_SECTION || MSD.Name.empty())
+      StringIndex = 0;
+    else
+      StringIndex = StrTabBuilder.getOffset(MSD.Name);
     MSD.Symbol->setIndex(Index++);
     writeSymbol(Writer, StringIndex, MSD, Layout);
   }
index c601c56..01074eb 100644 (file)
@@ -116,7 +116,7 @@ MCSymbol *MCContext::getOrCreateSymbol(const Twine &Name) {
 
   MCSymbol *&Sym = Symbols[NameRef];
   if (!Sym)
-    Sym = createSymbol(NameRef, false, false);
+    Sym = createSymbol(NameRef, false);
 
   return Sym;
 }
@@ -175,17 +175,16 @@ MCSymbol *MCContext::createSymbolImpl(const StringMapEntry<bool> *Name,
                                     IsTemporary);
 }
 
-MCSymbol *MCContext::createSymbol(StringRef Name, bool AlwaysAddSuffix,
-                                  bool CanBeUnnamed) {
-  if (CanBeUnnamed && !UseNamesOnTempLabels)
-    return createSymbolImpl(nullptr, true);
-
+MCSymbol *MCContext::createSymbol(StringRef Name, bool AlwaysAddSuffix) {
   // Determine whether this is an user writter assembler temporary or normal
   // label, if used.
-  bool IsTemporary = CanBeUnnamed;
-  if (AllowTemporaryLabels && !IsTemporary)
+  bool IsTemporary = false;
+  if (AllowTemporaryLabels)
     IsTemporary = Name.startswith(MAI->getPrivateGlobalPrefix());
 
+  if (IsTemporary && !UseNamesOnTempLabels)
+    return createSymbolImpl(nullptr, true);
+
   SmallString<128> NewName = Name;
   bool AddSuffix = AlwaysAddSuffix;
   unsigned &NextUniqueID = NextID[Name];
@@ -206,21 +205,20 @@ MCSymbol *MCContext::createSymbol(StringRef Name, bool AlwaysAddSuffix,
   llvm_unreachable("Infinite loop");
 }
 
-MCSymbol *MCContext::createTempSymbol(const Twine &Name, bool AlwaysAddSuffix,
-                                      bool CanBeUnnamed) {
+MCSymbol *MCContext::createTempSymbol(const Twine &Name, bool AlwaysAddSuffix) {
   SmallString<128> NameSV;
   raw_svector_ostream(NameSV) << MAI->getPrivateGlobalPrefix() << Name;
-  return createSymbol(NameSV, AlwaysAddSuffix, CanBeUnnamed);
+  return createSymbol(NameSV, AlwaysAddSuffix);
 }
 
 MCSymbol *MCContext::createLinkerPrivateTempSymbol() {
   SmallString<128> NameSV;
   raw_svector_ostream(NameSV) << MAI->getLinkerPrivateGlobalPrefix() << "tmp";
-  return createSymbol(NameSV, true, false);
+  return createSymbol(NameSV, true);
 }
 
-MCSymbol *MCContext::createTempSymbol(bool CanBeUnnamed) {
-  return createTempSymbol("tmp", true, CanBeUnnamed);
+MCSymbol *MCContext::createTempSymbol() {
+  return createTempSymbol("tmp", true);
 }
 
 unsigned MCContext::NextInstance(unsigned LocalLabelVal) {
@@ -241,7 +239,7 @@ MCSymbol *MCContext::getOrCreateDirectionalLocalSymbol(unsigned LocalLabelVal,
                                                        unsigned Instance) {
   MCSymbol *&Sym = LocalSymbols[std::make_pair(LocalLabelVal, Instance)];
   if (!Sym)
-    Sym = createTempSymbol(false);
+    Sym = createTempSymbol();
   return Sym;
 }
 
index 8ce6127..d7934ad 100644 (file)
@@ -565,7 +565,8 @@ void MachObjectWriter::computeSymbolTable(
 
     MachSymbolData MSD;
     MSD.Symbol = &Symbol;
-    MSD.StringIndex = StringTable.getOffset(Symbol.getName());
+    StringRef Name = Symbol.getName();
+    MSD.StringIndex = Name.empty() ? 0 : StringTable.getOffset(Name);
 
     if (Symbol.isAbsolute()) {
       MSD.SectionIndex = 0;
index 0e7e040..17734f6 100644 (file)
@@ -16,8 +16,8 @@
 ; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x8
 ; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0
 ; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0
-; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_GOT22 .L.mystr 0x0
-; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_GOT10 .L.mystr 0x0
+; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_GOT22 - 0x0
+; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_GOT10 - 0x0
 ; CHECK-PIC-NEXT:    0x{{[0-9,A-F]+}} R_SPARC_WPLT30 bar 0x0
 ; CHECK-PIC:      ]
 
index 24e2bb3..a616f46 100644 (file)
@@ -22,6 +22,6 @@
 
 // OBJ:      Relocations [
 // OBJ:        Section {{.*}} .rel.text {
-// OBJ-NEXT:     0x{{[0-9,A-F]+}} R_ARM_MOVW_ABS_NC .L.str
+// OBJ-NEXT:     0x{{[0-9,A-F]+}} R_ARM_MOVW_ABS_NC -
 // OBJ:        }
 // OBJ:      ]
index 1036b04..cc6b70c 100644 (file)
@@ -46,9 +46,9 @@ main:                                   # @main
 
 // CHECK: Relocations [
 // CHECK:   Section {{.*}} .rel.text {
-// CHECK:     0x6  R_386_32   .L.str1
+// CHECK:     0x6  R_386_32   -
 // CHECK:     0xB  R_386_PC32 puts
-// CHECK:     0x12 R_386_32   .L.str2
+// CHECK:     0x12 R_386_32   -
 // CHECK:     0x17 R_386_PC32 puts
 // CHECK:   }
 // CHECK: ]
index 5560ba7..12cab4b 100644 (file)
 
 // In x86 32 bit named symbols are used for temporary symbols in merge
 // sections, so make sure we handle symbols inside compressed sections
-// 386-SYMBOLS: Name: .Linfo_string0
-// 386-SYMBOLS-NOT: }
-// 386-SYMBOLS: Section: .zdebug_str
+// 386-SYMBOLS:        Symbol {
+// 386-SYMBOLS-NEXT:    Name:  (0)
+// 386-SYMBOLS-NEXT:    Value: 0x0
+// 386-SYMBOLS-NEXT:    Size: 0
+// 386-SYMBOLS-NEXT:    Binding: Local (0x0)
+// 386-SYMBOLS-NEXT:    Type: None (0x0)
+// 386-SYMBOLS-NEXT:    Other: 0
+// 386-SYMBOLS-NEXT:    Section: Undefined (0x0)
+// 386-SYMBOLS-NEXT:  }
+// 386-SYMBOLS-NEXT:  Symbol {
+// 386-SYMBOLS-NEXT:    Name:  (0)
+// 386-SYMBOLS-NEXT:    Value: 0x0
+// 386-SYMBOLS-NEXT:    Size: 0
+// 386-SYMBOLS-NEXT:    Binding: Local (0x0)
+// 386-SYMBOLS-NEXT:    Type: None (0x0)
+// 386-SYMBOLS-NEXT:    Other: 0
+// 386-SYMBOLS-NEXT:    Section: .zdebug_str (0xA)
+// 386-SYMBOLS-NEXT:  }
 
        .section        .debug_line,"",@progbits
 
index 8a695b9..75e4e86 100644 (file)
@@ -19,12 +19,12 @@ foo:
         .long   .L.debug_abbrev_begin   # Offset Into Abbrev. Section
         .byte   8                       # Address Size (in bytes)
         .byte   1                       # Abbrev [1] 0xb:0x1b DW_TAG_compile_unit
-        .long   .Linfo_string0          # DW_AT_producer
+        .long   info_string0            # DW_AT_producer
         .short  12                      # DW_AT_language
-        .long   .Linfo_string1          # DW_AT_name
+        .long   info_string1            # DW_AT_name
         .quad   0                       # DW_AT_low_pc
         .long   0                       # DW_AT_stmt_list
-        .long   .Linfo_string2          # DW_AT_comp_dir
+        .long   info_string2            # DW_AT_comp_dir
                                         # DW_AT_APPLE_optimized
         .section        .debug_abbrev,"",@progbits
 .L.debug_abbrev_begin:
index e787728..8fdb3a3 100644 (file)
@@ -22,9 +22,9 @@ foo:
 
 // CHECK:      Relocations [
 // CHECK-NEXT:   Section {{.*}} .rela.text {
-// CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_PC32    .Lfoo 0x{{[^ ]+}}
+// CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_PC32     -    0x{{[^ ]+}}
 // CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_32      .sec1 0x{{[^ ]+}}
-// CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_32      .Lfoo 0x{{[^ ]+}}
+// CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_32       -    0x{{[^ ]+}}
 // CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_PLT32    foo  0x{{[^ ]+}}
 // CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_GOTPCREL foo  0x{{[^ ]+}}
 // CHECK-NEXT:     0x{{[^ ]+}} R_X86_64_32S      zed  0x{{[^ ]+}}
index 6b7e02f..5ad1227 100644 (file)
@@ -5,7 +5,7 @@
 
 // CHECK:      Relocations [
 // CHECK-NEXT:   Section {{.*}} .rel.text {
-// CHECK-NEXT:     0x2          R_386_GOTOFF     .Lfoo 0x0
+// CHECK-NEXT:     0x2          R_386_GOTOFF     - 0x0
 // CHECK-NEXT:     0x{{[^ ]+}}  R_386_PLT32      bar2 0x0
 // CHECK-NEXT:     0x{{[^ ]+}}  R_386_GOTPC      _GLOBAL_OFFSET_TABLE_ 0x0
 // Relocation 3 (bar3@GOTOFF) is done with symbol 7 (bss)
diff --git a/test/MC/ELF/undef-temp.s b/test/MC/ELF/undef-temp.s
new file mode 100644 (file)
index 0000000..45537a9
--- /dev/null
@@ -0,0 +1,4 @@
+// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o - 2>&1 | FileCheck %s
+
+// CHECK: Undefined temporary
+        .long .Lfoo
index 9577ea2..b491ba1 100644 (file)
@@ -2,7 +2,6 @@
 
 // Test which symbols should be in the symbol table
 
-        .long  .Lsym1
 .Lsym2:
 .Lsym3:
 .Lsym4 = .Lsym2 - .Lsym3
@@ -33,7 +32,7 @@ test2_b = undef + 1
 // CHECK-NEXT:     Section: Undefined
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: .Lsym8
+// CHECK-NEXT:     Name: (0)
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:     Size: 0
 // CHECK-NEXT:     Binding: Local
@@ -42,15 +41,6 @@ test2_b = undef + 1
 // CHECK-NEXT:     Section: .rodata.str1.1
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: .Lsym1
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
 // CHECK-NEXT:     Name: sym6
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:     Size: 0
diff --git a/test/MC/ELF/undef2.s b/test/MC/ELF/undef2.s
deleted file mode 100644 (file)
index 6aa66c0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s
-
-// Test that this produces an undefined reference to .Lfoo
-
-        je     .Lfoo
-
-// CHECK:       Section {
-// CHECK:         Name: .strtab
-
-// CHECK:       Symbol {
-// CHECK:         Name: .Lfoo
-// CHECK-NEXT:    Value:
-// CHECK-NEXT:    Size:
-// CHECK-NEXT:    Binding: Global
-// CHECK-NEXT:    Type:
-// CHECK-NEXT:    Other:
-// CHECK-NEXT:    Section:
-// CHECK-NEXT:  }
index d92bbb4..e02df13 100644 (file)
@@ -10,7 +10,7 @@
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: Lbar
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index b4d0b08..1f384f9 100644 (file)
@@ -41,7 +41,7 @@ L_.str:
 ; CHECK-NEXT:       PCRel: 1
 ; CHECK-NEXT:       Length: 2
 ; CHECK-NEXT:       Type: ARM64_RELOC_PAGE21 (3)
-; CHECK-NEXT:       Symbol: L_.str
+; CHECK-NEXT:       Symbol: -
 ; CHECK-NEXT:     }
 ; CHECK-NEXT:    Relocation {
 ; CHECK-NEXT:       Offset: 0x20
index 63f9170..b619fda 100644 (file)
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: Llit16
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x10
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: Llit8
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x8
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: Llit4
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x0
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: Lcfstring
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index 4fed04c..f710344 100644 (file)
@@ -26,28 +26,28 @@ L1:
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: L1
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x10
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: L1
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x8
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: L0
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x0
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: L0
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
index f8ad4c4..946a57c 100644 (file)
@@ -10,7 +10,7 @@
 ; CHECK-NEXT:       PCRel: 0
 ; CHECK-NEXT:       Length: 3
 ; CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
-; CHECK-NEXT:       Symbol: Lbar
+; CHECK-NEXT:       Symbol: -
 ; CHECK-NEXT:     }
 ; CHECK-NEXT:   }
 ; CHECK-NEXT: ]
index b7933f9..32f4714 100644 (file)
@@ -24,7 +24,7 @@ L1:
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: L1
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x10
@@ -38,7 +38,7 @@ L1:
 // CHECK-NEXT:       PCRel: 0
 // CHECK-NEXT:       Length: 3
 // CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT:       Symbol: L0
+// CHECK-NEXT:       Symbol: -
 // CHECK-NEXT:     }
 // CHECK-NEXT:     Relocation {
 // CHECK-NEXT:       Offset: 0x0
index f40183d..7aba6b7 100644 (file)
@@ -130,7 +130,7 @@ D38:
 
 // CHECK: Symbols [
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D0 (139)
+// CHECK-NEXT:     Name: D0 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __text (0x1)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -139,7 +139,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D1 (128)
+// CHECK-NEXT:     Name: D1 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __text (0x1)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -148,7 +148,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D2 (113)
+// CHECK-NEXT:     Name: D2 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __const (0x2)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -157,7 +157,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D3 (98)
+// CHECK-NEXT:     Name: D3 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __static_const (0x3)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -166,7 +166,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: L4 (84)
+// CHECK-NEXT:     Name: (0)
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -175,7 +175,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D4 (87)
+// CHECK-NEXT:     Name: D4 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -184,7 +184,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D5 (69)
+// CHECK-NEXT:     Name: D5 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __literal4 (0x5)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -193,7 +193,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D6 (50)
+// CHECK-NEXT:     Name: D6 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __literal8 (0x6)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -202,7 +202,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D7 (31)
+// CHECK-NEXT:     Name: D7 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __literal16 (0x7)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -211,7 +211,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D8 (12)
+// CHECK-NEXT:     Name: D8 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __constructor (0x8)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -220,7 +220,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D9 (1)
+// CHECK-NEXT:     Name: D9 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __destructor (0x9)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -229,7 +229,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D12 (124)
+// CHECK-NEXT:     Name: D12 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __data (0xA)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -238,7 +238,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D13 (109)
+// CHECK-NEXT:     Name: D13 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __static_data (0xB)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -247,7 +247,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D16 (65)
+// CHECK-NEXT:     Name: D16 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __dyld (0xC)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -256,7 +256,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D17 (46)
+// CHECK-NEXT:     Name: D17 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __mod_init_func (0xD)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -265,7 +265,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D18 (27)
+// CHECK-NEXT:     Name: D18 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __mod_term_func (0xE)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -283,7 +283,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D20 (146)
+// CHECK-NEXT:     Name: D20 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __class (0x10)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -292,7 +292,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D21 (135)
+// CHECK-NEXT:     Name: D21 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __meta_class (0x11)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -301,7 +301,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D22 (120)
+// CHECK-NEXT:     Name: D22 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cat_cls_meth (0x12)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -310,7 +310,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D23 (105)
+// CHECK-NEXT:     Name: D23 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cat_inst_meth (0x13)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -319,7 +319,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D24 (94)
+// CHECK-NEXT:     Name: D24 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __protocol (0x14)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -328,7 +328,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D25 (80)
+// CHECK-NEXT:     Name: D25 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __string_object (0x15)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -337,7 +337,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D26 (61)
+// CHECK-NEXT:     Name: D26 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cls_meth (0x16)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -346,7 +346,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D27 (42)
+// CHECK-NEXT:     Name: D27 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __inst_meth (0x17)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -355,7 +355,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D28 (23)
+// CHECK-NEXT:     Name: D28 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cls_refs (0x18)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -364,7 +364,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D29 (4)
+// CHECK-NEXT:     Name: D29 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __message_refs (0x19)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -373,7 +373,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D30 (142)
+// CHECK-NEXT:     Name: D30 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __symbols (0x1A)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -382,7 +382,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D31 (131)
+// CHECK-NEXT:     Name: D31 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __category (0x1B)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -391,7 +391,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D32 (116)
+// CHECK-NEXT:     Name: D32 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __class_vars (0x1C)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -400,7 +400,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D33 (101)
+// CHECK-NEXT:     Name: D33 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __instance_vars (0x1D)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -409,7 +409,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D34 (90)
+// CHECK-NEXT:     Name: D34 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __module_info (0x1E)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -418,7 +418,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: L35 (72)
+// CHECK-NEXT:     Name: (0)
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -427,7 +427,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D35 (76)
+// CHECK-NEXT:     Name: D35 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -436,7 +436,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: L36 (53)
+// CHECK-NEXT:     Name: (0)
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -445,7 +445,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D36 (57)
+// CHECK-NEXT:     Name: D36 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -454,7 +454,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: L37 (34)
+// CHECK-NEXT:     Name: (0)
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -463,7 +463,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D37 (38)
+// CHECK-NEXT:     Name: D37 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __cstring (0x4)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -472,7 +472,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: L38 (15)
+// CHECK-NEXT:     Name: (0)
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __selector_strs (0x1F)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
@@ -481,7 +481,7 @@ D38:
 // CHECK-NEXT:     Value: 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: D38 (19)
+// CHECK-NEXT:     Name: D38 ({{.*}})
 // CHECK-NEXT:     Type: Section (0xE)
 // CHECK-NEXT:     Section: __selector_strs (0x1F)
 // CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
index a3ffae6..f792ec8 100644 (file)
@@ -79,9 +79,9 @@ t2:
 
 # NXX: move     $2, $gp
 # NXX: lui      $gp, 0
-# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16  $tmp0
+# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
 # NXX: addiu    $gp, $gp, 0
-# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16  $tmp0
+# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
 # N32: addu     $gp, $gp, $25
 # N64: daddu    $gp, $gp, $25
 # NXX: nop
@@ -108,4 +108,4 @@ t3:
 
 # For .cpsetup with local labels, we need to check if $tmp0 is in the symbol
 # table:
-# NXX: .text  00000000 $tmp0
+# NXX: .text  00000000 {{$}}
index d19065e..d0c61bc 100644 (file)
@@ -4,16 +4,16 @@
 
 // CHECK: Symbols [
 // CHECK:   Symbol {
-// CHECK:     Name: $.str
+// CHECK:     Name: (0)
 // CHECK:   }
 // CHECK:   Symbol {
-// CHECK:     Name: $.str1
+// CHECK:     Name: (0)
 // CHECK:   }
 // CHECK:   Symbol {
-// CHECK:     Name: $CPI0_0
+// CHECK:     Name: (0)
 // CHECK:   }
 // CHECK:   Symbol {
-// CHECK:     Name: $CPI0_1
+// CHECK:     Name: (0)
 // CHECK:   }
 // CHECK: ]
 
index 3380a85..d813c89 100644 (file)
@@ -10,8 +10,8 @@
 // CHECK:   0x1C R_MIPS_GOT_LO16 ext_1
 // CHECK:   0x24 R_MIPS_CALL_HI16 printf
 // CHECK:   0x30 R_MIPS_CALL_LO16 printf
-// CHECK:   0x2C R_MIPS_GOT16 $.str
-// CHECK:   0x38 R_MIPS_LO16 $.str
+// CHECK:   0x2C R_MIPS_GOT16 -
+// CHECK:   0x38 R_MIPS_LO16 -
 // CHECK: ]
 
        .text
index 5430d1f..6cf23db 100644 (file)
@@ -7,8 +7,8 @@
 ! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x8
 ! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0
 ! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0
-! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_GOT22 .LC0 0x0
-! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_GOT10 .LC0 0x0
+! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_GOT22 - 0x0
+! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_GOT10 - 0x0
 ! CHECK-NEXT:   0x{{[0-9,A-F]+}} R_SPARC_WPLT30 bar 0x0
 ! CHECK:      ]