summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Path.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2013-10-15 22:45:38 +0000
committerRui Ueyama <ruiu@google.com>2013-10-15 22:45:38 +0000
commitfc149a69cf43009c8f174ef80af1cb396ffcca37 (patch)
tree43e129880c13c9ec2e453e3e5b68ec972436d68a /llvm/lib/Support/Path.cpp
parentce451cc300307cba02963da455e354123637819f (diff)
downloadbcm5719-llvm-fc149a69cf43009c8f174ef80af1cb396ffcca37.tar.gz
bcm5719-llvm-fc149a69cf43009c8f174ef80af1cb396ffcca37.zip
Path: Recognize Windows compiled resource file.
Some background: One can pass compiled resource files (.res files) directly to the linker on Windows. If a resource file is given, the linker will run "cvtres" command in background to convert the resource file to a COFF file to link it. What I'm trying to do with this patch is to make the linker to recognize the resource file by file magic, so that it can run cvtres command. Differential Revision: http://llvm-reviews.chandlerc.com/D1943 llvm-svn: 192742
Diffstat (limited to 'llvm/lib/Support/Path.cpp')
-rw-r--r--llvm/lib/Support/Path.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Support/Path.cpp b/llvm/lib/Support/Path.cpp
index 8d707aedded..390614b9a5b 100644
--- a/llvm/lib/Support/Path.cpp
+++ b/llvm/lib/Support/Path.cpp
@@ -847,6 +847,14 @@ error_code has_magic(const Twine &path, const Twine &magic, bool &result) {
if (Magic.size() < 4)
return file_magic::unknown;
switch ((unsigned char)Magic[0]) {
+ case 0x00: {
+ // Windows resource file
+ const char Expected[] = "\0\0\0\0\x20\0\0\0\xff";
+ if (Magic.size() >= sizeof(Expected) &&
+ memcmp(Magic.data(), Expected, sizeof(Expected)) == 0)
+ return file_magic::windows_resource;
+ break;
+ }
case 0xDE: // 0x0B17C0DE = BC wraper
if (Magic[1] == (char)0xC0 && Magic[2] == (char)0x17 &&
Magic[3] == (char)0x0B)
OpenPOWER on IntegriCloud