From 735f9edde15046cf67037449fb7c41c048c923b7 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Fri, 2 May 2014 17:45:24 +0000 Subject: MC: place .file records into the correct section .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 | 1 + test/MC/ARM/coff-file.s | 30 ++++++++++++++++++++++++++++++ test/MC/COFF/file.s | 30 ++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/lib/MC/WinCOFFObjectWriter.cpp b/lib/MC/WinCOFFObjectWriter.cpp index 7ae83134f3..58f5eccf4d 100644 --- a/lib/MC/WinCOFFObjectWriter.cpp +++ b/lib/MC/WinCOFFObjectWriter.cpp @@ -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); diff --git a/test/MC/ARM/coff-file.s b/test/MC/ARM/coff-file.s index 965b7afaf3..f0dd29a292 100644 --- a/test/MC/ARM/coff-file.s +++ b/test/MC/ARM/coff-file.s @@ -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{{$}} @@ -15,3 +18,30 @@ // 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: ] + diff --git a/test/MC/COFF/file.s b/test/MC/COFF/file.s index 4943319030..132e82b2e2 100644 --- a/test/MC/COFF/file.s +++ b/test/MC/COFF/file.s @@ -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{{$}} @@ -15,3 +18,30 @@ // 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: ] + -- cgit v1.2.3