[llvm-commits] [llvm] r98456 - in /llvm/trunk: lib/MC/MCAssembler.cpp test/MC/MachO/symbols-1.s test/Scripts/macho-dump

Daniel Dunbar daniel at zuster.org
Sat Mar 13 14:49:35 PST 2010


Author: ddunbar
Date: Sat Mar 13 16:49:35 2010
New Revision: 98456

URL: http://llvm.org/viewvc/llvm-project?rev=98456&view=rev
Log:
MC/X86_64: Symbol support.

Modified:
    llvm/trunk/lib/MC/MCAssembler.cpp
    llvm/trunk/test/MC/MachO/symbols-1.s
    llvm/trunk/test/Scripts/macho-dump

Modified: llvm/trunk/lib/MC/MCAssembler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAssembler.cpp?rev=98456&r1=98455&r2=98456&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAssembler.cpp (original)
+++ llvm/trunk/lib/MC/MCAssembler.cpp Sat Mar 13 16:49:35 2010
@@ -400,7 +400,7 @@
     assert(OS.tell() - Start == DysymtabLoadCommandSize);
   }
 
-  void WriteNlist32(MachSymbolData &MSD) {
+  void WriteNlist(MachSymbolData &MSD) {
     MCSymbolData &Data = *MSD.SymbolData;
     const MCSymbol &Symbol = Data.getSymbol();
     uint8_t Type = 0;
@@ -459,7 +459,10 @@
     // The Mach-O streamer uses the lowest 16-bits of the flags for the 'desc'
     // value.
     Write16(Flags);
-    Write32(Address);
+    if (Is64Bit)
+      Write64(Address);
+    else
+      Write32(Address);
   }
 
   struct MachRelocationEntry {
@@ -874,7 +877,8 @@
 
       // The string table is written after symbol table.
       uint64_t StringTableOffset =
-        SymbolTableOffset + NumSymTabSymbols * Nlist32Size;
+        SymbolTableOffset + NumSymTabSymbols * (Is64Bit ? Nlist64Size :
+                                                Nlist32Size);
       WriteSymtabLoadCommand(SymbolTableOffset, NumSymTabSymbols,
                              StringTableOffset, StringTable.size());
 
@@ -928,11 +932,11 @@
 
       // Write the symbol table entries.
       for (unsigned i = 0, e = LocalSymbolData.size(); i != e; ++i)
-        WriteNlist32(LocalSymbolData[i]);
+        WriteNlist(LocalSymbolData[i]);
       for (unsigned i = 0, e = ExternalSymbolData.size(); i != e; ++i)
-        WriteNlist32(ExternalSymbolData[i]);
+        WriteNlist(ExternalSymbolData[i]);
       for (unsigned i = 0, e = UndefinedSymbolData.size(); i != e; ++i)
-        WriteNlist32(UndefinedSymbolData[i]);
+        WriteNlist(UndefinedSymbolData[i]);
 
       // Write the string table.
       OS << StringTable.str();

Modified: llvm/trunk/test/MC/MachO/symbols-1.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/symbols-1.s?rev=98456&r1=98455&r2=98456&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/symbols-1.s (original)
+++ llvm/trunk/test/MC/MachO/symbols-1.s Sat Mar 13 16:49:35 2010
@@ -1,4 +1,5 @@
-// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s
+// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck -check-prefix CHECK-X86_32 %s
+// RUN: llvm-mc -triple x86_64-apple-darwin10 %s -filetype=obj -o - | macho-dump | FileCheck -check-prefix CHECK-X86_64 %s
 
 sym_local_B:
 .globl sym_globl_def_B
@@ -16,146 +17,294 @@
 Lsym_asm_temp:
         .long 0
         
-// CHECK: ('cputype', 7)
-// CHECK: ('cpusubtype', 3)
-// CHECK: ('filetype', 1)
-// CHECK: ('num_load_commands', 1)
-// CHECK: ('load_commands_size', 228)
-// CHECK: ('flag', 0)
-// CHECK: ('load_commands', [
-// CHECK:   # Load Command 0
-// CHECK:  (('command', 1)
-// CHECK:   ('size', 124)
-// CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
-// CHECK:   ('vm_addr', 0)
-// CHECK:   ('vm_size', 4)
-// CHECK:   ('file_offset', 256)
-// CHECK:   ('file_size', 4)
-// CHECK:   ('maxprot', 7)
-// CHECK:   ('initprot', 7)
-// CHECK:   ('num_sections', 1)
-// CHECK:   ('flags', 0)
-// CHECK:   ('sections', [
-// CHECK:     # Section 0
-// CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
-// CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
-// CHECK:     ('address', 0)
-// CHECK:     ('size', 4)
-// CHECK:     ('offset', 256)
-// CHECK:     ('alignment', 0)
-// CHECK:     ('reloc_offset', 0)
-// CHECK:     ('num_reloc', 0)
-// CHECK:     ('flags', 0x80000000)
-// CHECK:     ('reserved1', 0)
-// CHECK:     ('reserved2', 0)
-// CHECK:    ),
-// CHECK:   ])
-// CHECK:  ),
-// CHECK:   # Load Command 1
-// CHECK:  (('command', 2)
-// CHECK:   ('size', 24)
-// CHECK:   ('symoff', 260)
-// CHECK:   ('nsyms', 9)
-// CHECK:   ('stroff', 368)
-// CHECK:   ('strsize', 140)
-// CHECK:   ('_string_data', '\x00sym_globl_def_B\x00sym_globl_undef_B\x00sym_globl_def_A\x00sym_globl_undef_A\x00sym_globl_def_C\x00sym_globl_undef_C\x00sym_local_B\x00sym_local_A\x00sym_local_C\x00\x00')
-// CHECK:   ('_symbols', [
-// CHECK:     # Symbol 0
-// CHECK:    (('n_strx', 103)
-// CHECK:     ('n_type', 0xe)
-// CHECK:     ('n_sect', 1)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_local_B')
-// CHECK:    ),
-// CHECK:     # Symbol 1
-// CHECK:    (('n_strx', 115)
-// CHECK:     ('n_type', 0xe)
-// CHECK:     ('n_sect', 1)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_local_A')
-// CHECK:    ),
-// CHECK:     # Symbol 2
-// CHECK:    (('n_strx', 127)
-// CHECK:     ('n_type', 0xe)
-// CHECK:     ('n_sect', 1)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_local_C')
-// CHECK:    ),
-// CHECK:     # Symbol 3
-// CHECK:    (('n_strx', 35)
-// CHECK:     ('n_type', 0xf)
-// CHECK:     ('n_sect', 1)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_globl_def_A')
-// CHECK:    ),
-// CHECK:     # Symbol 4
-// CHECK:    (('n_strx', 1)
-// CHECK:     ('n_type', 0xf)
-// CHECK:     ('n_sect', 1)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_globl_def_B')
-// CHECK:    ),
-// CHECK:     # Symbol 5
-// CHECK:    (('n_strx', 69)
-// CHECK:     ('n_type', 0xf)
-// CHECK:     ('n_sect', 1)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_globl_def_C')
-// CHECK:    ),
-// CHECK:     # Symbol 6
-// CHECK:    (('n_strx', 51)
-// CHECK:     ('n_type', 0x1)
-// CHECK:     ('n_sect', 0)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_globl_undef_A')
-// CHECK:    ),
-// CHECK:     # Symbol 7
-// CHECK:    (('n_strx', 17)
-// CHECK:     ('n_type', 0x1)
-// CHECK:     ('n_sect', 0)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_globl_undef_B')
-// CHECK:    ),
-// CHECK:     # Symbol 8
-// CHECK:    (('n_strx', 85)
-// CHECK:     ('n_type', 0x1)
-// CHECK:     ('n_sect', 0)
-// CHECK:     ('n_desc', 0)
-// CHECK:     ('n_value', 0)
-// CHECK:     ('_string', 'sym_globl_undef_C')
-// CHECK:    ),
-// CHECK:   ])
-// CHECK:  ),
-// CHECK:   # Load Command 2
-// CHECK:  (('command', 11)
-// CHECK:   ('size', 80)
-// CHECK:   ('ilocalsym', 0)
-// CHECK:   ('nlocalsym', 3)
-// CHECK:   ('iextdefsym', 3)
-// CHECK:   ('nextdefsym', 3)
-// CHECK:   ('iundefsym', 6)
-// CHECK:   ('nundefsym', 3)
-// CHECK:   ('tocoff', 0)
-// CHECK:   ('ntoc', 0)
-// CHECK:   ('modtaboff', 0)
-// CHECK:   ('nmodtab', 0)
-// CHECK:   ('extrefsymoff', 0)
-// CHECK:   ('nextrefsyms', 0)
-// CHECK:   ('indirectsymoff', 0)
-// CHECK:   ('nindirectsyms', 0)
-// CHECK:   ('extreloff', 0)
-// CHECK:   ('nextrel', 0)
-// CHECK:   ('locreloff', 0)
-// CHECK:   ('nlocrel', 0)
-// CHECK:   ('_indirect_symbols', [
-// CHECK:   ])
-// CHECK:  ),
-// CHECK: ])
+// CHECK-X86_32: ('cputype', 7)
+// CHECK-X86_32: ('cpusubtype', 3)
+// CHECK-X86_32: ('filetype', 1)
+// CHECK-X86_32: ('num_load_commands', 1)
+// CHECK-X86_32: ('load_commands_size', 228)
+// CHECK-X86_32: ('flag', 0)
+// CHECK-X86_32: ('load_commands', [
+// CHECK-X86_32:   # Load Command 0
+// CHECK-X86_32:  (('command', 1)
+// CHECK-X86_32:   ('size', 124)
+// CHECK-X86_32:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK-X86_32:   ('vm_addr', 0)
+// CHECK-X86_32:   ('vm_size', 4)
+// CHECK-X86_32:   ('file_offset', 256)
+// CHECK-X86_32:   ('file_size', 4)
+// CHECK-X86_32:   ('maxprot', 7)
+// CHECK-X86_32:   ('initprot', 7)
+// CHECK-X86_32:   ('num_sections', 1)
+// CHECK-X86_32:   ('flags', 0)
+// CHECK-X86_32:   ('sections', [
+// CHECK-X86_32:     # Section 0
+// CHECK-X86_32:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK-X86_32:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK-X86_32:     ('address', 0)
+// CHECK-X86_32:     ('size', 4)
+// CHECK-X86_32:     ('offset', 256)
+// CHECK-X86_32:     ('alignment', 0)
+// CHECK-X86_32:     ('reloc_offset', 0)
+// CHECK-X86_32:     ('num_reloc', 0)
+// CHECK-X86_32:     ('flags', 0x80000000)
+// CHECK-X86_32:     ('reserved1', 0)
+// CHECK-X86_32:     ('reserved2', 0)
+// CHECK-X86_32:    ),
+// CHECK-X86_32:   ])
+// CHECK-X86_32:  ),
+// CHECK-X86_32:   # Load Command 1
+// CHECK-X86_32:  (('command', 2)
+// CHECK-X86_32:   ('size', 24)
+// CHECK-X86_32:   ('symoff', 260)
+// CHECK-X86_32:   ('nsyms', 9)
+// CHECK-X86_32:   ('stroff', 368)
+// CHECK-X86_32:   ('strsize', 140)
+// CHECK-X86_32:   ('_string_data', '\x00sym_globl_def_B\x00sym_globl_undef_B\x00sym_globl_def_A\x00sym_globl_undef_A\x00sym_globl_def_C\x00sym_globl_undef_C\x00sym_local_B\x00sym_local_A\x00sym_local_C\x00\x00')
+// CHECK-X86_32:   ('_symbols', [
+// CHECK-X86_32:     # Symbol 0
+// CHECK-X86_32:    (('n_strx', 103)
+// CHECK-X86_32:     ('n_type', 0xe)
+// CHECK-X86_32:     ('n_sect', 1)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_local_B')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 1
+// CHECK-X86_32:    (('n_strx', 115)
+// CHECK-X86_32:     ('n_type', 0xe)
+// CHECK-X86_32:     ('n_sect', 1)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_local_A')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 2
+// CHECK-X86_32:    (('n_strx', 127)
+// CHECK-X86_32:     ('n_type', 0xe)
+// CHECK-X86_32:     ('n_sect', 1)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_local_C')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 3
+// CHECK-X86_32:    (('n_strx', 35)
+// CHECK-X86_32:     ('n_type', 0xf)
+// CHECK-X86_32:     ('n_sect', 1)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_globl_def_A')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 4
+// CHECK-X86_32:    (('n_strx', 1)
+// CHECK-X86_32:     ('n_type', 0xf)
+// CHECK-X86_32:     ('n_sect', 1)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_globl_def_B')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 5
+// CHECK-X86_32:    (('n_strx', 69)
+// CHECK-X86_32:     ('n_type', 0xf)
+// CHECK-X86_32:     ('n_sect', 1)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_globl_def_C')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 6
+// CHECK-X86_32:    (('n_strx', 51)
+// CHECK-X86_32:     ('n_type', 0x1)
+// CHECK-X86_32:     ('n_sect', 0)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_globl_undef_A')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 7
+// CHECK-X86_32:    (('n_strx', 17)
+// CHECK-X86_32:     ('n_type', 0x1)
+// CHECK-X86_32:     ('n_sect', 0)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_globl_undef_B')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:     # Symbol 8
+// CHECK-X86_32:    (('n_strx', 85)
+// CHECK-X86_32:     ('n_type', 0x1)
+// CHECK-X86_32:     ('n_sect', 0)
+// CHECK-X86_32:     ('n_desc', 0)
+// CHECK-X86_32:     ('n_value', 0)
+// CHECK-X86_32:     ('_string', 'sym_globl_undef_C')
+// CHECK-X86_32:    ),
+// CHECK-X86_32:   ])
+// CHECK-X86_32:  ),
+// CHECK-X86_32:   # Load Command 2
+// CHECK-X86_32:  (('command', 11)
+// CHECK-X86_32:   ('size', 80)
+// CHECK-X86_32:   ('ilocalsym', 0)
+// CHECK-X86_32:   ('nlocalsym', 3)
+// CHECK-X86_32:   ('iextdefsym', 3)
+// CHECK-X86_32:   ('nextdefsym', 3)
+// CHECK-X86_32:   ('iundefsym', 6)
+// CHECK-X86_32:   ('nundefsym', 3)
+// CHECK-X86_32:   ('tocoff', 0)
+// CHECK-X86_32:   ('ntoc', 0)
+// CHECK-X86_32:   ('modtaboff', 0)
+// CHECK-X86_32:   ('nmodtab', 0)
+// CHECK-X86_32:   ('extrefsymoff', 0)
+// CHECK-X86_32:   ('nextrefsyms', 0)
+// CHECK-X86_32:   ('indirectsymoff', 0)
+// CHECK-X86_32:   ('nindirectsyms', 0)
+// CHECK-X86_32:   ('extreloff', 0)
+// CHECK-X86_32:   ('nextrel', 0)
+// CHECK-X86_32:   ('locreloff', 0)
+// CHECK-X86_32:   ('nlocrel', 0)
+// CHECK-X86_32:   ('_indirect_symbols', [
+// CHECK-X86_32:   ])
+// CHECK-X86_32:  ),
+// CHECK-X86_32: ])
+
+// CHECK-X86_64: ('cputype', 16777223)
+// CHECK-X86_64: ('cpusubtype', 3)
+// CHECK-X86_64: ('filetype', 1)
+// CHECK-X86_64: ('num_load_commands', 1)
+// CHECK-X86_64: ('load_commands_size', 256)
+// CHECK-X86_64: ('flag', 0)
+// CHECK-X86_64: ('reserved', 0)
+// CHECK-X86_64: ('load_commands', [
+// CHECK-X86_64:   # Load Command 0
+// CHECK-X86_64:  (('command', 25)
+// CHECK-X86_64:   ('size', 152)
+// CHECK-X86_64:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK-X86_64:   ('vm_addr', 0)
+// CHECK-X86_64:   ('vm_size', 4)
+// CHECK-X86_64:   ('file_offset', 288)
+// CHECK-X86_64:   ('file_size', 4)
+// CHECK-X86_64:   ('maxprot', 7)
+// CHECK-X86_64:   ('initprot', 7)
+// CHECK-X86_64:   ('num_sections', 1)
+// CHECK-X86_64:   ('flags', 0)
+// CHECK-X86_64:   ('sections', [
+// CHECK-X86_64:     # Section 0
+// CHECK-X86_64:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK-X86_64:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK-X86_64:     ('address', 0)
+// CHECK-X86_64:     ('size', 4)
+// CHECK-X86_64:     ('offset', 288)
+// CHECK-X86_64:     ('alignment', 0)
+// CHECK-X86_64:     ('reloc_offset', 0)
+// CHECK-X86_64:     ('num_reloc', 0)
+// CHECK-X86_64:     ('flags', 0x80000000)
+// CHECK-X86_64:     ('reserved1', 0)
+// CHECK-X86_64:     ('reserved2', 0)
+// CHECK-X86_64:     ('reserved3', 0)
+// CHECK-X86_64:    ),
+// CHECK-X86_64:   ('_relocations', [
+// CHECK-X86_64:   ])
+// CHECK-X86_64:   ])
+// CHECK-X86_64:  ),
+// CHECK-X86_64:   # Load Command 1
+// CHECK-X86_64:  (('command', 2)
+// CHECK-X86_64:   ('size', 24)
+// CHECK-X86_64:   ('symoff', 292)
+// CHECK-X86_64:   ('nsyms', 9)
+// CHECK-X86_64:   ('stroff', 436)
+// CHECK-X86_64:   ('strsize', 140)
+// CHECK-X86_64:   ('_string_data', '\x00sym_globl_def_B\x00sym_globl_undef_B\x00sym_globl_def_A\x00sym_globl_undef_A\x00sym_globl_def_C\x00sym_globl_undef_C\x00sym_local_B\x00sym_local_A\x00sym_local_C\x00\x00')
+// CHECK-X86_64:   ('_symbols', [
+// CHECK-X86_64:     # Symbol 0
+// CHECK-X86_64:    (('n_strx', 103)
+// CHECK-X86_64:     ('n_type', 0xe)
+// CHECK-X86_64:     ('n_sect', 1)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_local_B')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 1
+// CHECK-X86_64:    (('n_strx', 115)
+// CHECK-X86_64:     ('n_type', 0xe)
+// CHECK-X86_64:     ('n_sect', 1)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_local_A')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 2
+// CHECK-X86_64:    (('n_strx', 127)
+// CHECK-X86_64:     ('n_type', 0xe)
+// CHECK-X86_64:     ('n_sect', 1)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_local_C')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 3
+// CHECK-X86_64:    (('n_strx', 35)
+// CHECK-X86_64:     ('n_type', 0xf)
+// CHECK-X86_64:     ('n_sect', 1)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_globl_def_A')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 4
+// CHECK-X86_64:    (('n_strx', 1)
+// CHECK-X86_64:     ('n_type', 0xf)
+// CHECK-X86_64:     ('n_sect', 1)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_globl_def_B')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 5
+// CHECK-X86_64:    (('n_strx', 69)
+// CHECK-X86_64:     ('n_type', 0xf)
+// CHECK-X86_64:     ('n_sect', 1)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_globl_def_C')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 6
+// CHECK-X86_64:    (('n_strx', 51)
+// CHECK-X86_64:     ('n_type', 0x1)
+// CHECK-X86_64:     ('n_sect', 0)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_globl_undef_A')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 7
+// CHECK-X86_64:    (('n_strx', 17)
+// CHECK-X86_64:     ('n_type', 0x1)
+// CHECK-X86_64:     ('n_sect', 0)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_globl_undef_B')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:     # Symbol 8
+// CHECK-X86_64:    (('n_strx', 85)
+// CHECK-X86_64:     ('n_type', 0x1)
+// CHECK-X86_64:     ('n_sect', 0)
+// CHECK-X86_64:     ('n_desc', 0)
+// CHECK-X86_64:     ('n_value', 0)
+// CHECK-X86_64:     ('_string', 'sym_globl_undef_C')
+// CHECK-X86_64:    ),
+// CHECK-X86_64:   ])
+// CHECK-X86_64:  ),
+// CHECK-X86_64:   # Load Command 2
+// CHECK-X86_64:  (('command', 11)
+// CHECK-X86_64:   ('size', 80)
+// CHECK-X86_64:   ('ilocalsym', 0)
+// CHECK-X86_64:   ('nlocalsym', 3)
+// CHECK-X86_64:   ('iextdefsym', 3)
+// CHECK-X86_64:   ('nextdefsym', 3)
+// CHECK-X86_64:   ('iundefsym', 6)
+// CHECK-X86_64:   ('nundefsym', 3)
+// CHECK-X86_64:   ('tocoff', 0)
+// CHECK-X86_64:   ('ntoc', 0)
+// CHECK-X86_64:   ('modtaboff', 0)
+// CHECK-X86_64:   ('nmodtab', 0)
+// CHECK-X86_64:   ('extrefsymoff', 0)
+// CHECK-X86_64:   ('nextrefsyms', 0)
+// CHECK-X86_64:   ('indirectsymoff', 0)
+// CHECK-X86_64:   ('nindirectsyms', 0)
+// CHECK-X86_64:   ('extreloff', 0)
+// CHECK-X86_64:   ('nextrel', 0)
+// CHECK-X86_64:   ('locreloff', 0)
+// CHECK-X86_64:   ('nlocrel', 0)
+// CHECK-X86_64:   ('_indirect_symbols', [
+// CHECK-X86_64:   ])
+// CHECK-X86_64:  ),
+// CHECK-X86_64: ])

Modified: llvm/trunk/test/Scripts/macho-dump
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Scripts/macho-dump?rev=98456&r1=98455&r2=98456&view=diff
==============================================================================
--- llvm/trunk/test/Scripts/macho-dump (original)
+++ llvm/trunk/test/Scripts/macho-dump Sat Mar 13 16:49:35 2010
@@ -187,8 +187,12 @@
    print "    ('n_sect', %r)" % n_sect
    n_desc = f.read16()
    print "    ('n_desc', %r)" % n_desc
-   n_value = f.read32()
-   print "    ('n_value', %r)" % n_value
+   if f.is64Bit:
+      n_value = f.read64()
+      print "    ('n_value', %r)" % n_value
+   else:
+      n_value = f.read32()
+      print "    ('n_value', %r)" % n_value
    print "    ('_string', %r)" % f.getString(n_strx)
    print "   ),"
 





More information about the llvm-commits mailing list