MC: place .file records into the correct section
authorSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 2 May 2014 17:45:24 +0000 (17:45 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 2 May 2014 17:45:24 +0000 (17:45 +0000)
.file records are supposed to have a section identifier of 65534
(IMAGE_SCN_DEBUG) rather than 0.  This is spelt out clearly within the PE/COFF
specification.  Fix this minor oversight with the implementation for support for
.file records.

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

lib/MC/WinCOFFObjectWriter.cpp
test/MC/ARM/coff-file.s
test/MC/COFF/file.s

index 7ae83134f3c5acfc901d56014c9a18fa32987f70..58f5eccf4d2d641bfca4cd778ea947ee37229182 100644 (file)
@@ -649,6 +649,7 @@ void WinCOFFObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm,
     unsigned Count = (FI->size() + COFF::SymbolSize - 1) / COFF::SymbolSize;
 
     COFFSymbol *file = createSymbol(".file");
+    file->Data.SectionNumber = COFF::IMAGE_SYM_DEBUG;
     file->Data.StorageClass = COFF::IMAGE_SYM_CLASS_FILE;
     file->Aux.resize(Count);
 
index 965b7afaf33dc1d258b0471991dde98ca01a1e68..f0dd29a2925604e1b983a5c9803684ed19d8f4bb 100644 (file)
@@ -1,6 +1,9 @@
 // RUN: llvm-mc -triple thumbv7-windows -filetype obj %s -o - | llvm-objdump -t - \
 // RUN:   | FileCheck %s
 
+// RUN: llvm-mc -triple thumbv7-windows -filetype obj %s -o - \
+// RUN:          | llvm-readobj -symbols | FileCheck %s -check-prefix CHECK-SCN
+
        .file "null-padded.asm"
 // CHECK: (nx 1) {{0x[0-9]+}} .file
 // CHECK-NEXT: AUX null-padded.asm{{$}}
 // CHECK: (nx 2) {{0x[0-9]+}} .file
 // CHECK-NEXT: AUX multiple-auxiliary-entries.asm{{$}}
 
+// CHECK-SCN: Symbols [
+// CHECK-SCN:   Symbol {
+// CHECK-SCN:     Name: .file
+// CHECK-SCN:     Section: (65534)
+// CHECK-SCN:     StorageClass: File
+// CHECK-SCN:     AuxFileRecord {
+// CHECK-SCN:       FileName: null-padded.asm
+// CHECK-SCN:     }
+// CHECK-SCN:   }
+// CHECK-SCN:   Symbol {
+// CHECK-SCN:     Name: .file
+// CHECK-SCN:     Section: (65534)
+// CHECK-SCN:     StorageClass: File
+// CHECK-SCN:     AuxFileRecord {
+// CHECK-SCN:       FileName: eighteen-chars.asm
+// CHECK-SCN:     }
+// CHECK-SCN:   }
+// CHECK-SCN:   Symbol {
+// CHECK-SCN:     Name: .file
+// CHECK-SCN:     Section: (65534)
+// CHECK-SCN:     StorageClass: File
+// CHECK-SCN:     AuxFileRecord {
+// CHECK-SCN:       FileName: multiple-auxiliary-entries.asm
+// CHECK-SCN:     }
+// CHECK-SCN:   }
+// CHECK-SCN: ]
+
index 4943319030a8d5a193849353df13de8748d9dbb8..132e82b2e25d6c1435014eb7d3e28cbd8d8649ed 100644 (file)
@@ -1,6 +1,9 @@
 // RUN: llvm-mc -triple i686-windows -filetype obj %s -o - | llvm-objdump -t - \
 // RUN:   | FileCheck %s
 
+// RUN: llvm-mc -triple i686-windows -filetype obj %s -o - \
+// RUN:          | llvm-readobj -symbols | FileCheck %s -check-prefix CHECK-SCN
+
        .file "null-padded.asm"
 // CHECK: (nx 1) {{0x[0-9]+}} .file
 // CHECK-NEXT: AUX null-padded.asm{{$}}
 // CHECK: (nx 2) {{0x[0-9]+}} .file
 // CHECK-NEXT: AUX multiple-auxiliary-entries.asm{{$}}
 
+// CHECK-SCN: Symbols [
+// CHECK-SCN:   Symbol {
+// CHECK-SCN:     Name: .file
+// CHECK-SCN:     Section: (65534)
+// CHECK-SCN:     StorageClass: File
+// CHECK-SCN:     AuxFileRecord {
+// CHECK-SCN:       FileName: null-padded.asm
+// CHECK-SCN:     }
+// CHECK-SCN:   }
+// CHECK-SCN:   Symbol {
+// CHECK-SCN:     Name: .file
+// CHECK-SCN:     Section: (65534)
+// CHECK-SCN:     StorageClass: File
+// CHECK-SCN:     AuxFileRecord {
+// CHECK-SCN:       FileName: eighteen-chars.asm
+// CHECK-SCN:     }
+// CHECK-SCN:   }
+// CHECK-SCN:   Symbol {
+// CHECK-SCN:     Name: .file
+// CHECK-SCN:     Section: (65534)
+// CHECK-SCN:     StorageClass: File
+// CHECK-SCN:     AuxFileRecord {
+// CHECK-SCN:       FileName: multiple-auxiliary-entries.asm
+// CHECK-SCN:     }
+// CHECK-SCN:   }
+// CHECK-SCN: ]
+