Add patches for llvm-dlltool
This commit is contained in:
1 parent
4de5f192a6
commit
ffff621129
3 files changed
+1578
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,96 @@
|
||||
From 3de4f391131ab56e03622bf3bbb152c29bdc293e Mon Sep 17 00:00:00 2001
|
||||
From: Martell Malone <martellmalone@gmail.com>
|
||||
Date: Tue, 16 Aug 2016 13:05:23 -0700
|
||||
Subject: [PATCH 5/6] COFF: Fix short import lib import name type bitshift
|
||||
|
||||
llvm-readobj: Support short import objects from within an archive
|
||||
The import magic was previous just checked against the archive as a whole
|
||||
|
||||
As per the PE COFF spec (section 8.3, Import Name Type)
|
||||
Offset: 18 Size 2 bits Name: Type
|
||||
Offset: 20 Size 3 bits Name: Name Type
|
||||
|
||||
Offset: 20 added based on 18+2
|
||||
---
|
||||
include/llvm/Support/COFF.h | 2 +-
|
||||
.../llvm-readobj/Inputs/imports.mangle.coff-x86_64 | Bin 0 -> 2108 bytes
|
||||
test/tools/llvm-readobj/imports-mangle.test | 17 +++++++++++++++++
|
||||
tools/llvm-readobj/llvm-readobj.cpp | 2 ++
|
||||
4 files changed, 20 insertions(+), 1 deletion(-)
|
||||
create mode 100644 test/tools/llvm-readobj/Inputs/imports.mangle.coff-x86_64
|
||||
create mode 100644 test/tools/llvm-readobj/imports-mangle.test
|
||||
|
||||
diff --git a/include/llvm/Support/COFF.h b/include/llvm/Support/COFF.h
|
||||
index 7dad3e8..1ca781b9 100644
|
||||
--- a/include/llvm/Support/COFF.h
|
||||
+++ b/include/llvm/Support/COFF.h
|
||||
@@ -657,7 +657,7 @@ namespace COFF {
|
||||
}
|
||||
|
||||
ImportNameType getNameType() const {
|
||||
- return static_cast<ImportNameType>((TypeInfo & 0x1C) >> 3);
|
||||
+ return static_cast<ImportNameType>((TypeInfo & 0x1C) >> 2);
|
||||
}
|
||||
};
|
||||
|
||||
diff --git a/test/tools/llvm-readobj/Inputs/imports.mangle.coff-x86_64 b/test/tools/llvm-readobj/Inputs/imports.mangle.coff-x86_64
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..af6e583a31b953d1c9451266b09bee50093b8d54
|
||||
GIT binary patch
|
||||
literal 2108
|
||||
zcmb_d&2JJ>5dX1!Db|LlF)`5wn<nZ7VRs80{8+RmU@2`V9Q3k9)>@hpnzkM|G&UYM
|
||||
z`7e0zkMPE!S8sYU9@>AzL!H_8-m)OpZqrTX&6^Kq-uu0o;qIg6PHW>y;$dp^%bG^c
|
||||
zDC9Dk{HQ)7MLna--C6>`6+oK-A_XA23B(U19TR7o6%-o)v4L%umsXZ*b$j8(>hoH8
|
||||
zrM_IV*SlTVcC}Hd{B6VsvI<+h)Tl1n3&nboyxW~^d$-rg!d*OBXIYnab}%5;r?fXM
|
||||
z>s7H-vR+I3s4g%H*&zyXf?-Aj3K3v43LKE)m}r)05OX0y93g15#t=bNu3?OxAuu}P
|
||||
z;^RRW99vv|2$T;aVIv0@K7BIAgnQcA+VWueUsafSRW54@rys`8kDnXi5O9gG;V<pH
|
||||
zee?d^+^Ud($F%vR1j#KVpQYPQbFVq4E7J|yd?PxNiZF2tnM3K9lWI55Z=WCQEu;?V
|
||||
zSul;uEFvy1br08*{AS->EigrVzjtk^-P-BycGve(_iGPQm2!1a+D8~W^C6h1?A=|G
|
||||
zR(f~R$qcYs-Oe_haldzjlM}x;xlti7sjFImd&~``aW5ruNFS4Z=tuB;=7$>A-{wVr
|
||||
z937aK5;F}iX$@Rn6Pqs)v@&!v=gkYJuep`+)jbp+ZE|He!sM;K$}p6YE8~k2B<ISw
|
||||
z@E1SJTi&4q{Bwu}Ml4_OAtrk17bOr6I~lQ4ddaH<?nUk;|7XEcy<{pq`~6UY<m`8$
|
||||
z$esn&Ta<ia5e7xnRKq&O|5@CSPM;^#P4{+FV{=$FanLM=DW7dD%QR&P(S#C%_uSEq
|
||||
b$<eP;bd3g)JJ40|z+Gyb8Xe+~)r<ZIjQx$i
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/test/tools/llvm-readobj/imports-mangle.test b/test/tools/llvm-readobj/imports-mangle.test
|
||||
new file mode 100644
|
||||
index 0000000..211fc57
|
||||
--- /dev/null
|
||||
+++ b/test/tools/llvm-readobj/imports-mangle.test
|
||||
@@ -0,0 +1,17 @@
|
||||
+RUN: llvm-readobj --coff-imports %p/Inputs/imports.mangle.coff-x86_64 | FileCheck -check-prefix=X64 %s
|
||||
+
|
||||
+X64: Name type: undecorate
|
||||
+X64-NEXT: Symbol: __imp_?sym4@@YAHH@Z
|
||||
+X64-NEXT: Symbol: ?sym4@@YAHH@Z
|
||||
+
|
||||
+X64: Name type: noprefix
|
||||
+X64-NEXT: Symbol: __imp__sym3
|
||||
+X64-NEXT: Symbol: _sym3
|
||||
+
|
||||
+X64: Name type: name
|
||||
+X64-NEXT: Symbol: __imp_sym1
|
||||
+X64-NEXT: Symbol: sym1
|
||||
+
|
||||
+X64: Name type: ordinal
|
||||
+X64-NEXT: Symbol: __imp_sym2
|
||||
+X64-NEXT: Symbol: sym2
|
||||
diff --git a/tools/llvm-readobj/llvm-readobj.cpp b/tools/llvm-readobj/llvm-readobj.cpp
|
||||
index c293919..bb5ad37 100644
|
||||
--- a/tools/llvm-readobj/llvm-readobj.cpp
|
||||
+++ b/tools/llvm-readobj/llvm-readobj.cpp
|
||||
@@ -450,6 +450,8 @@ static void dumpArchive(const Archive *Arc) {
|
||||
}
|
||||
if (ObjectFile *Obj = dyn_cast<ObjectFile>(&*ChildOrErr.get()))
|
||||
dumpObject(Obj);
|
||||
+ else if (COFFImportFile *Import = dyn_cast<COFFImportFile>(&*ChildOrErr.get()))
|
||||
+ dumpCOFFImportFile(Import);
|
||||
else
|
||||
reportError(Arc->getFileName(), readobj_error::unrecognized_file_format);
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From 2743b4757dcb3ef66dc9e7b64034b0f8b94ff66a Mon Sep 17 00:00:00 2001
|
||||
From: Martell Malone <martellmalone@gmail.com>
|
||||
Date: Tue, 16 Aug 2016 12:55:01 -0700
|
||||
Subject: [PATCH 6/6] mingw-w64: use MSVC style ByteAlignment
|
||||
|
||||
We can do alignment without -aligncomm derectives in PE COFF
|
||||
Until we support GNU style in lld we should use this
|
||||
---
|
||||
lib/MC/WinCOFFStreamer.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/MC/WinCOFFStreamer.cpp b/lib/MC/WinCOFFStreamer.cpp
|
||||
index 5c6407e..f86cbc5 100644
|
||||
--- a/lib/MC/WinCOFFStreamer.cpp
|
||||
+++ b/lib/MC/WinCOFFStreamer.cpp
|
||||
@@ -208,7 +208,7 @@ void MCWinCOFFStreamer::EmitCommonSymbol(MCSymbol *S, uint64_t Size,
|
||||
auto *Symbol = cast<MCSymbolCOFF>(S);
|
||||
|
||||
const Triple &T = getContext().getObjectFileInfo()->getTargetTriple();
|
||||
- if (T.isKnownWindowsMSVCEnvironment()) {
|
||||
+ if (T.getEnvironment() != Triple::Cygnus) {
|
||||
if (ByteAlignment > 32)
|
||||
report_fatal_error("alignment is limited to 32-bytes");
|
||||
|
||||
@@ -220,7 +220,7 @@ void MCWinCOFFStreamer::EmitCommonSymbol(MCSymbol *S, uint64_t Size,
|
||||
Symbol->setExternal(true);
|
||||
Symbol->setCommon(Size, ByteAlignment);
|
||||
|
||||
- if (!T.isKnownWindowsMSVCEnvironment() && ByteAlignment > 1) {
|
||||
+ if (T.getEnvironment() == Triple::Cygnus && ByteAlignment > 1) {
|
||||
SmallString<128> Directive;
|
||||
raw_svector_ostream OS(Directive);
|
||||
const MCObjectFileInfo *MFI = getContext().getObjectFileInfo();
|
||||
--
|
||||
2.7.4
|
||||
|
||||
Reference in new issue
Block a user