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