diff --git a/src/compress_ucl.cpp b/src/compress_ucl.cpp index fadba7fd..33671814 100644 --- a/src/compress_ucl.cpp +++ b/src/compress_ucl.cpp @@ -34,7 +34,7 @@ int compress_ucl_dummy = 0; #else #if 1 && !(UCL_USE_ASM) && (ACC_ARCH_I386) -# if (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_MSC || ACC_CC_WATCOMC) +# if (ACC_CC_CLANG || ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_MSC || ACC_CC_WATCOMC) # define UCL_USE_ASM 1 # endif #endif diff --git a/src/conf.h b/src/conf.h index 963576db..cf0d1ab7 100644 --- a/src/conf.h +++ b/src/conf.h @@ -326,7 +326,7 @@ #if (ACC_CC_INTELC && (__INTEL_COMPILER < 800)) #elif (0 && (ACC_ARCH_AMD64 || ACC_ARCH_I386)) -#elif (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE) +#elif (ACC_CC_CLANG || ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE) # define __packed_struct(s) struct s { # define __packed_struct_end() } __attribute__((__packed__,__aligned__(1))); #elif (ACC_CC_WATCOMC) @@ -752,7 +752,7 @@ typedef ElfLinker Linker; // main.cpp extern const char *progname; bool set_ec(int ec); -#if (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE) +#if (ACC_CC_CLANG || ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE) void e_exit(int ec) __attribute__((__noreturn__)); #else void e_exit(int ec); @@ -764,7 +764,7 @@ void printSetNl(int need_nl); void printClearLine(FILE *f = NULL); void printErr(const char *iname, const Throwable *e); void printUnhandledException(const char *iname, const std::exception *e); -#if (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE) +#if (ACC_CC_CLANG || ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE) void __acc_cdecl_va printErr(const char *iname, const char *format, ...) __attribute__((__format__(__printf__,2,3))); void __acc_cdecl_va printWarn(const char *iname, const char *format, ...) @@ -774,7 +774,7 @@ void __acc_cdecl_va printErr(const char *iname, const char *format, ...); void __acc_cdecl_va printWarn(const char *iname, const char *format, ...); #endif -#if (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE) +#if (ACC_CC_CLANG || ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE) void __acc_cdecl_va infoWarning(const char *format, ...) __attribute__((__format__(__printf__,1,2))); void __acc_cdecl_va infoHeader(const char *format, ...) diff --git a/src/linker.h b/src/linker.h index ca67b3d8..344178b7 100644 --- a/src/linker.h +++ b/src/linker.h @@ -84,7 +84,7 @@ public: //virtual void setLoaderAlignOffset(int phase); virtual int addLoader(const char *sname); void addLoader(const char *s, va_list ap); -#if 1 && (ACC_CC_GNUC >= 0x040100) +#if 1 && (ACC_CC_CLANG || (ACC_CC_GNUC >= 0x040100)) void __acc_cdecl_va addLoaderVA(const char *s, ...) __attribute__((__sentinel__)); #else void __acc_cdecl_va addLoaderVA(const char *s, ...); diff --git a/src/main.cpp b/src/main.cpp index e232e4ba..e256032d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1358,15 +1358,18 @@ void upx_sanity_check(void) assert(memcmp(UPX_VERSION_DATE + strlen(UPX_VERSION_DATE) - 4, UPX_VERSION_YEAR, 4) == 0); #if 1 +#if (ACC_CC_CLANG && ACC_ARCH_AMD64) // clang-2.8 bug +#else assert(TestBELE::test()); assert(TestBELE::test()); assert(TestBELE::test()); assert(TestBELE::test()); assert(TestBELE::test()); assert(TestBELE::test()); +#endif { static const unsigned char dd[32] -#if 1 && (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE) && defined(__ELF__) +#if 1 && (ACC_CC_CLANG || ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE) && defined(__ELF__) __attribute__((__aligned__(16))) #endif = { 0, 0, 0, 0, 0, 0, 0, diff --git a/src/packer.h b/src/packer.h index b0a03ab9..c6248576 100644 --- a/src/packer.h +++ b/src/packer.h @@ -235,7 +235,7 @@ protected: void addLoader(C,C,C,C,C,C,C,C); void addLoader(C,C,C,C,C,C,C,C,C); void addLoader(C,C,C,C,C,C,C,C,C,C); #undef C -#if 1 && (ACC_CC_GNUC >= 0x040100) +#if 1 && (ACC_CC_CLANG || (ACC_CC_GNUC >= 0x040100)) void __acc_cdecl_va addLoaderVA(const char *s, ...) __attribute__((__sentinel__)); #else void __acc_cdecl_va addLoaderVA(const char *s, ...);