winegcc: Also check magic number to detect shared libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
010d44a2ac
commit
21c832da63
|
@ -212,6 +212,7 @@ file_type get_file_type(const char* filename)
|
||||||
{
|
{
|
||||||
/* see tools/winebuild/res32.c: check_header for details */
|
/* see tools/winebuild/res32.c: check_header for details */
|
||||||
static const char res_sig[] = { 0,0,0,0, 32,0,0,0, 0xff,0xff, 0,0, 0xff,0xff, 0,0, 0,0,0,0, 0,0, 0,0, 0,0,0,0, 0,0,0,0 };
|
static const char res_sig[] = { 0,0,0,0, 32,0,0,0, 0xff,0xff, 0,0, 0xff,0xff, 0,0, 0,0,0,0, 0,0, 0,0, 0,0,0,0, 0,0,0,0 };
|
||||||
|
static const char elf_sig[4] = "\177ELF";
|
||||||
char buf[sizeof(res_sig)];
|
char buf[sizeof(res_sig)];
|
||||||
int fd, cnt;
|
int fd, cnt;
|
||||||
|
|
||||||
|
@ -230,6 +231,11 @@ file_type get_file_type(const char* filename)
|
||||||
if (strendswith(filename, ".def")) return file_def;
|
if (strendswith(filename, ".def")) return file_def;
|
||||||
if (strendswith(filename, ".spec")) return file_spec;
|
if (strendswith(filename, ".spec")) return file_spec;
|
||||||
if (strendswith(filename, ".rc")) return file_rc;
|
if (strendswith(filename, ".rc")) return file_rc;
|
||||||
|
if (cnt >= sizeof(elf_sig) && !memcmp(buf, elf_sig, sizeof(elf_sig))) return file_so; /* ELF lib */
|
||||||
|
if (cnt >= sizeof(unsigned int) &&
|
||||||
|
(*(unsigned int *)buf == 0xfeedface || *(unsigned int *)buf == 0xcefaedfe ||
|
||||||
|
*(unsigned int *)buf == 0xfeedfacf || *(unsigned int *)buf == 0xcffaedfe))
|
||||||
|
return file_so; /* Mach-O lib */
|
||||||
|
|
||||||
return file_other;
|
return file_other;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue