Add support for 64-bit object files to Path.

llvm-svn: 129975
This commit is contained in:
Eric Christopher 2011-04-22 03:50:19 +00:00
parent f030d7f487
commit 2c662fa29e

View File

@ -92,15 +92,21 @@ sys::IdentifyFileType(const char *magic, unsigned length) {
} }
break; break;
// The two magic numbers for mach-o are:
// 0xfeedface - 32-bit mach-o
// 0xfeedfacf - 64-bit mach-o
case 0xFE: case 0xFE:
case 0xCE: { case 0xCE:
case 0xCF: {
uint16_t type = 0; uint16_t type = 0;
if (magic[0] == char(0xFE) && magic[1] == char(0xED) && if (magic[0] == char(0xFE) && magic[1] == char(0xED) &&
magic[2] == char(0xFA) && magic[3] == char(0xCE)) { magic[2] == char(0xFA) &&
(magic[3] == char(0xCE) || magic[3] == char(0xCF))) {
/* Native endian */ /* Native endian */
if (length >= 16) type = magic[14] << 8 | magic[15]; if (length >= 16) type = magic[14] << 8 | magic[15];
} else if (magic[0] == char(0xCE) && magic[1] == char(0xFA) && } else if ((magic[0] == char(0xCE) || magic[0] == char(0xCF)) &&
magic[2] == char(0xED) && magic[3] == char(0xFE)) { magic[1] == char(0xFA) && magic[2] == char(0xED) &&
magic[3] == char(0xFE)) {
/* Reverse endian */ /* Reverse endian */
if (length >= 14) type = magic[13] << 8 | magic[12]; if (length >= 14) type = magic[13] << 8 | magic[12];
} }