diff --git a/index.html b/index.html
index f1e03fe2..e69925f6 100644
--- a/index.html
+++ b/index.html
@@ -2458,6 +2458,10 @@ local-pkg-list: $(LOCAL_PKG_LIST)
unrtf |
unRTF |
+
+ upx |
+ UPX |
+
vamp-plugin-sdk |
Vamp Plugins SDK |
diff --git a/src/upx-1-fix-logging.patch b/src/upx-1-fix-logging.patch
new file mode 100644
index 00000000..a1d5005c
--- /dev/null
+++ b/src/upx-1-fix-logging.patch
@@ -0,0 +1,52 @@
+This file is part of MXE.
+See index.html for further information.
+
+From a9c84ba7518ea4cc92cf4b391f609c3f6ade0974 Mon Sep 17 00:00:00 2001
+From: Boris Nagaev
+Date: Sun, 30 Aug 2015 16:13:06 +0200
+Subject: [PATCH] fix logging
+
+Set logging function to simple fprintf.
+---
+ src/c_init.cpp | 3 ++-
+ src/console.h | 3 +--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/c_init.cpp b/src/c_init.cpp
+index 542b066..a1ce500 100644
+--- a/src/c_init.cpp
++++ b/src/c_init.cpp
+@@ -141,7 +141,7 @@ console_t console_init =
+ intro
+ };
+
+-
++/*
+ void __acc_cdecl_va con_fprintf(FILE *f, const char *format, ...)
+ {
+ va_list args;
+@@ -156,6 +156,7 @@ void __acc_cdecl_va con_fprintf(FILE *f, const char *format, ...)
+ assert(con != me);
+ con->print0(f,buf);
+ }
++*/
+
+ #endif /* USE_CONSOLE */
+
+diff --git a/src/console.h b/src/console.h
+index eeee36e..4a2c4c0 100644
+--- a/src/console.h
++++ b/src/console.h
+@@ -123,8 +123,7 @@ console_t;
+
+
+ #if defined(__GNUC__)
+-void __acc_cdecl_va con_fprintf(FILE *f, const char *format, ...)
+- __attribute__((__format__(printf,2,3)));
++#define con_fprintf fprintf
+ #else
+ void __acc_cdecl_va con_fprintf(FILE *f, const char *format, ...);
+ #endif
+--
+1.7.10.4
+
diff --git a/src/upx.mk b/src/upx.mk
new file mode 100644
index 00000000..4b86d427
--- /dev/null
+++ b/src/upx.mk
@@ -0,0 +1,34 @@
+# This file is part of MXE.
+# See index.html for further information.
+
+PKG := upx
+$(PKG)_IGNORE :=
+$(PKG)_VERSION := 3.91
+$(PKG)_CHECKSUM := 527ce757429841f51675352b1f9f6fc8ad97b18002080d7bf8672c466d8c6a3c
+$(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION)-src
+$(PKG)_FILE := $(PKG)-$($(PKG)_VERSION)-src.tar.bz2
+$(PKG)_URL := http://upx.sourceforge.net/download/$($(PKG)_FILE)
+$(PKG)_DEPS := gcc ucl zlib lzma
+
+define $(PKG)_UPDATE
+ $(WGET) -q -O- 'http://upx.sourceforge.net/' | \
+ $(SED) -n 's,.*upx-\([0-9][^"]*\)\-src.tar.*,\1,p' | \
+ head -1
+endef
+
+define $(PKG)_BUILD
+ $(call PREPARE_PKG_SOURCE,ucl,$(1))
+ mkdir '$(1)/lzma'
+ $(call PREPARE_PKG_SOURCE,lzma,$(1)/lzma)
+ UPX_UCLDIR='$(1)/$(ucl_SUBDIR)' \
+ UPX_LZMADIR='$(1)/lzma' \
+ UPX_LZMA_VERSION=0x$(subst .,,$(lzma_VERSION)) \
+ $(MAKE) -C '$(1)' -j '$(JOBS)' all \
+ 'CXX=$(TARGET)-g++' \
+ 'CC=$(TARGET)-gcc' \
+ 'LD=$(TARGET)-ld' \
+ 'AR=$(TARGET)-ar' \
+ 'PKG_CONFIG=$(TARGET)-pkg-config' \
+ 'exeext=.exe'
+ cp '$(1)/src/upx.exe' '$(PREFIX)/$(TARGET)/bin/'
+endef