Commit 74cfa7ac authored by Tom Stellard's avatar Tom Stellard
Browse files

Merging r356982:

------------------------------------------------------------------------
r356982 | mstorsjo | 2019-03-26 02:02:44 -0700 (Tue, 26 Mar 2019) | 12 lines

[llvm-dlltool] Set a proper machine type for weak symbol object files

This makes GNU binutils not reject the libraries outright.

GNU ld handles weak externals slightly differently though, so it
can't use them for aliases in import libraries, but this makes GNU
ld able to use the rest of the import libraries.

LLD accepted object files with machine type 0 aka
IMAGE_FILE_MACHINE_UNKNOWN.

Differential Revision: https://reviews.llvm.org/D59742
------------------------------------------------------------------------

llvm-svn: 360750
parent 0203f70b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -496,7 +496,7 @@ NewArchiveMember ObjectFactory::createWeakExternal(StringRef Sym,

  // COFF Header
  coff_file_header Header{
      u16(0),
      u16(Machine),
      u16(NumberOfSections),
      u32(0),
      u32(sizeof(Header) + (NumberOfSections * sizeof(coff_section))),
+3 −0
Original line number Diff line number Diff line
; RUN: llvm-dlltool -m i386:x86-64 --input-def %s --output-lib %t.a
; RUN: llvm-nm %t.a | FileCheck %s
; RUN: llvm-readobj %t.a | FileCheck -check-prefix=ARCH %s

LIBRARY test.dll
EXPORTS
@@ -26,3 +27,5 @@ ImpLibName3 = kernel32.Sleep
; CHECK-NEXT: W __imp_ImpLibName2
; CHECK:      T ImpLibName3
; CHECK-NEXT: T __imp_ImpLibName3

; ARCH-NOT: unknown arch