mirror of
https://github.com/Relintai/osxcross.git
synced 2025-02-03 22:45:56 +01:00
update cctools to 862 and ld64 to 241.9
port changes: - misc fixes - add '-L/usr/pkg/lib' for NetBSD - update libobjc2 to r37977 - silence / fix libobjc2 warnings - remove freebsd ifdef in favor of '-isystem /usr/local' - add installhdrs target (cctools-port/issues/2) - prefer glibtoolize over libtoolize - add support for OS X and iOS as host system (cctools-port/issues/1) - add a workaround for a glibc 2.20 bug - link with -rpath to ease finding libLTO - check for __cxa_demangle in -lstdc++ - use std=c++0x instead of -std=gnu++0x - fix ld64 to compile with libstdc++ - fix automake warnings - ld64: enable all architectures This also gets rid of the automake dependency.
This commit is contained in:
parent
746a6a42dd
commit
e5d9db7ed0
@ -1,7 +1,14 @@
|
||||
/******************************* v0.9 *******************************/
|
||||
|
||||
changed:
|
||||
* updated cctools to 862
|
||||
* updated ld64 to 241.9
|
||||
|
||||
/******************************* v0.8 *******************************/
|
||||
|
||||
changed:
|
||||
* updated cctools to 855 with ld64-236.3 (Xcode 5.1)
|
||||
* updated cctools to 855
|
||||
* updated ld64 to 236.3
|
||||
* gcc 4.9.0 -> gcc 4.9.2
|
||||
|
||||
added:
|
||||
|
@ -24,8 +24,8 @@ Move your packaged SDK to the tarballs/ directory.
|
||||
|
||||
Then ensure you have the following installed on your Linux/BSD box:
|
||||
|
||||
`Clang 3.2+`, `llvm-devel`, `automake`, `autogen`, `libtool`, `patch`,
|
||||
`libxml2-devel` (<=10.5 only), `uuid-devel`, `openssl-devel` and the `bash shell`.
|
||||
`Clang 3.2+`, `llvm-devel`, `patch`, `libxml2-devel` (<=10.5 only),
|
||||
`uuid-devel`, `openssl-devel` and the `bash shell`.
|
||||
|
||||
\--
|
||||
You can run 'sudo tools/get\_dependencies.sh' to get these automatically.
|
||||
|
57
build.sh
57
build.sh
@ -77,7 +77,7 @@ if [ -z "$OSX_VERSION_MIN" ]; then
|
||||
fi
|
||||
|
||||
# Don't change this
|
||||
OSXCROSS_VERSION=0.8
|
||||
OSXCROSS_VERSION=0.9
|
||||
|
||||
TARBALL_DIR=$BASE_DIR/tarballs
|
||||
BUILD_DIR=$BASE_DIR/build
|
||||
@ -129,12 +129,6 @@ require sed
|
||||
require gunzip
|
||||
require cpio
|
||||
|
||||
if [ "$PLATFORM" != "Darwin" ]; then
|
||||
require autogen
|
||||
require automake
|
||||
require libtool
|
||||
fi
|
||||
|
||||
pushd $BUILD_DIR &>/dev/null
|
||||
|
||||
function remove_locks()
|
||||
@ -145,21 +139,29 @@ function remove_locks()
|
||||
source $BASE_DIR/tools/trap_exit.sh
|
||||
|
||||
# CCTOOLS
|
||||
if [ "$PLATFORM" != "Darwin" ]; then
|
||||
if [ "$PLATFORM" == "Darwin" ]; then
|
||||
PREVCXX=$CXX
|
||||
CXX+=" -stdlib=libc++"
|
||||
fi
|
||||
|
||||
res=`check_cxx_stdlib`
|
||||
|
||||
if [ "$PLATFORM" == "Darwin" ]; then
|
||||
CXX=$PREVCXX
|
||||
unset PREVCXX
|
||||
fi
|
||||
|
||||
if [ $res -ne 0 ]; then
|
||||
echo "Your C++ standard library is either broken or too old to build ld64-236.3"
|
||||
echo "Your C++ standard library is either broken or too old to build ld64-241.9"
|
||||
echo "Building ld64-134.9 instead"
|
||||
echo ""
|
||||
sleep 3
|
||||
LINKER_VERSION=134.9
|
||||
else
|
||||
LINKER_VERSION=236.3
|
||||
LINKER_VERSION=241.9
|
||||
fi
|
||||
|
||||
CCTOOLS="cctools-855-ld64-$LINKER_VERSION"
|
||||
CCTOOLS="cctools-862-ld64-$LINKER_VERSION"
|
||||
CCTOOLS_TARBALL=`ls $TARBALL_DIR/$CCTOOLS*.tar.* | head -n1`
|
||||
CCTOOLS_REVHASH=`echo "$CCTOOLS_TARBALL" head -n1 | tr '_' ' ' | tr '.' ' ' | awk '{print $3}'`
|
||||
|
||||
@ -172,27 +174,14 @@ extract $CCTOOLS_TARBALL 1
|
||||
|
||||
pushd cctools*/cctools &>/dev/null
|
||||
pushd .. &>/dev/null
|
||||
if [ $LINKER_VERSION != "134.9" ]; then
|
||||
# fix compiling ld64 with libc++
|
||||
patch -p0 < $PATCH_DIR/cctools-e3cbeaf.patch
|
||||
# check for __cxa_demangle in -lstdc++
|
||||
patch -p0 < $PATCH_DIR/cctools-499e470.patch
|
||||
else
|
||||
# __cxa_demangle + 3.5 build fix
|
||||
patch -p0 < $PATCH_DIR/cctools-a78597e.patch
|
||||
fi
|
||||
if [ "$PLATFORM" == "Linux" ]; then
|
||||
patch -p0 < $PATCH_DIR/cctools-old-linux.patch
|
||||
fi
|
||||
# fix LD_LIBRARY_PATH
|
||||
patch -p0 < $PATCH_DIR/cctools-f7a5930.patch
|
||||
patch -p0 < $PATCH_DIR/cctools-cdefs.patch
|
||||
./tools/fix_unistd_issue.sh 1>/dev/null
|
||||
popd &>/dev/null
|
||||
patch -p0 < $PATCH_DIR/cctools-ld64-1.patch
|
||||
patch -p0 < $PATCH_DIR/cctools-ld64-2.patch
|
||||
echo ""
|
||||
./autogen.sh
|
||||
./configure --prefix=$TARGET_DIR --target=x86_64-apple-$TARGET
|
||||
CONFFLAGS="--prefix=$TARGET_DIR --target=x86_64-apple-$TARGET"
|
||||
[ -n "$DISABLE_LTO_SUPPORT" ] && CONFFLAGS+=" --enable-lto=no"
|
||||
./configure $CONFFLAGS
|
||||
$MAKE -j$JOBS
|
||||
$MAKE install -j$JOBS
|
||||
popd &>/dev/null
|
||||
@ -210,10 +199,6 @@ for CCTOOL in ${CCTOOLS[@]}; do
|
||||
done
|
||||
popd &>/dev/null
|
||||
|
||||
fi
|
||||
else
|
||||
# Darwin
|
||||
LINKER_VERSION="`get_ld_version`"
|
||||
fi
|
||||
# CCTOOLS END
|
||||
|
||||
@ -242,7 +227,6 @@ fi
|
||||
fi
|
||||
# XAR END
|
||||
|
||||
if [ "$PLATFORM" != "Darwin" ]; then
|
||||
if [ ! -f "have_cctools_$TARGET" ]; then
|
||||
|
||||
function check_cctools()
|
||||
@ -263,7 +247,6 @@ touch "have_cctools_${CCTOOLS_REVHASH}_$TARGET"
|
||||
echo ""
|
||||
|
||||
fi # HAVE_CCTOOLS
|
||||
fi
|
||||
|
||||
set +e
|
||||
ls $TARBALL_DIR/MacOSX$SDK_VERSION* &>/dev/null
|
||||
@ -316,8 +299,10 @@ export OSXCROSS_LINKER_VERSION=$LINKER_VERSION
|
||||
|
||||
if [ "$PLATFORM" != "Darwin" ]; then
|
||||
# libLTO.so
|
||||
export OSXCROSS_LIBLTO_PATH=`cat $BUILD_DIR/cctools*/cctools/tmp/ldpath 2>/dev/null`
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$OSXCROSS_LIBLTO_PATH"
|
||||
set +e
|
||||
eval `cat $BUILD_DIR/cctools*/cctools/config.log | grep LLVM_LIB_DIR | head -n1`
|
||||
set -e
|
||||
export OSXCROSS_LIBLTO_PATH=$LLVM_LIB_DIR
|
||||
fi
|
||||
|
||||
$BASE_DIR/wrapper/build.sh 1>/dev/null
|
||||
|
@ -1,26 +0,0 @@
|
||||
commit 499e470904eaa976755de9caca2b98b92f0efcd9
|
||||
Author: Thomas Pöchtrager <t.poechtrager@gmail.com>
|
||||
Date: Fri Jun 20 10:25:39 2014 +0200
|
||||
|
||||
check for __cxa_demangle in -lstdc++
|
||||
|
||||
diff --git cctools/configure.ac cctools/configure.ac
|
||||
index 3411e34..4ac2d69 100644
|
||||
--- cctools/configure.ac
|
||||
+++ cctools/configure.ac
|
||||
@@ -254,10 +254,12 @@ AC_SUBST(UUID_LIBS)
|
||||
AC_CHECK_LIB([crypto],[MD5_Init],[CRYPT_LIBS=-lcrypto])
|
||||
AC_SUBST(CRYPT_LIBS)
|
||||
|
||||
-AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++])
|
||||
-AC_SUBST(CXXABI_LIB)
|
||||
+AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi],[
|
||||
+ AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++],[
|
||||
+ AC_CHECK_LIB([stdc++],[__cxa_demangle],[CXXABI_LIB=-lstdc++],[exit 1])
|
||||
+ ])
|
||||
+])
|
||||
|
||||
-AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi])
|
||||
AC_SUBST(CXXABI_LIB)
|
||||
|
||||
AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])],
|
@ -1,77 +0,0 @@
|
||||
commit a78597e93b6fc7332a3761771fa19c8e0d2945cf
|
||||
Author: Thomas Pöchtrager <t.poechtrager@gmail.com>
|
||||
Date: Fri Jun 20 11:01:58 2014 +0200
|
||||
|
||||
check for __cxa_demangle in -lstdc++
|
||||
clang 3.5 compile fix
|
||||
|
||||
diff --git cctools/configure.ac cctools/configure.ac
|
||||
index 0d9a4ec..2b23112 100644
|
||||
--- cctools/configure.ac
|
||||
+++ cctools/configure.ac
|
||||
@@ -239,26 +239,26 @@ CFLAGS=$ORIGCFLAGS
|
||||
AC_SUBST([WARNINGS], [$WARNINGS])
|
||||
|
||||
|
||||
-AC_CHECK_LIB([dl],[dlopen],[
|
||||
- DL_LIBS=-ldl
|
||||
- ])
|
||||
+AC_CHECK_LIB([dl],[dlopen],[DL_LIBS=-ldl])
|
||||
AC_SUBST(DL_LIBS)
|
||||
|
||||
-AC_CHECK_LIB([pthread],[pthread_create],[
|
||||
- PTHREAD_FLAGS=-pthread
|
||||
- ])
|
||||
+AC_CHECK_LIB([pthread],[pthread_create],[PTHREAD_FLAGS=-pthread])
|
||||
AC_SUBST(PTHREAD_FLAGS)
|
||||
|
||||
-AC_CHECK_LIB([uuid],[uuid_generate_random],[
|
||||
- UUID_LIBS=-luuid
|
||||
- ])
|
||||
+AC_CHECK_LIB([uuid],[uuid_generate_random],[UUID_LIBS=-luuid])
|
||||
AC_SUBST(UUID_LIBS)
|
||||
|
||||
-AC_CHECK_LIB([crypto],[MD5_Init],[
|
||||
- CRYPT_LIBS=-lcrypto
|
||||
- ])
|
||||
+AC_CHECK_LIB([crypto],[MD5_Init],[CRYPT_LIBS=-lcrypto])
|
||||
AC_SUBST(CRYPT_LIBS)
|
||||
|
||||
+AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi],[
|
||||
+ AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++],[
|
||||
+ AC_CHECK_LIB([stdc++],[__cxa_demangle],[CXXABI_LIB=-lstdc++],[exit 1])
|
||||
+ ])
|
||||
+])
|
||||
+
|
||||
+AC_SUBST(CXXABI_LIB)
|
||||
+
|
||||
AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])],
|
||||
[AC_SUBST([ENDIAN_FLAG],[-D__LITTLE_ENDIAN__=1])])
|
||||
|
||||
diff --git cctools/ld64/src/ld/code-sign-blobs/memutils.h cctools/ld64/src/ld/code-sign-blobs/memutils.h
|
||||
index 391ddc1..b0421f0 100644
|
||||
--- cctools/ld64/src/ld/code-sign-blobs/memutils.h
|
||||
+++ cctools/ld64/src/ld/code-sign-blobs/memutils.h
|
||||
@@ -33,6 +33,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <algorithm>
|
||||
|
||||
+#ifdef __GLIBCXX__
|
||||
+using namespace __gnu_cxx;
|
||||
+#endif
|
||||
|
||||
//
|
||||
// Encapsulate these very sharp tools in a separate (ugly-named) namespace
|
||||
diff --git cctools/otool/Makefile.am cctools/otool/Makefile.am
|
||||
index 3172d7e..4adb742 100644
|
||||
--- cctools/otool/Makefile.am
|
||||
+++ cctools/otool/Makefile.am
|
||||
@@ -4,7 +4,7 @@ otool_LDADD = \
|
||||
$(top_srcdir)/libobjc2/libobjc.la \
|
||||
$(DL_LIBS)
|
||||
|
||||
-otool_LDFLAGS = $(PTHREAD_FLAGS) -lsupc++ # __cxa_demangle
|
||||
+otool_LDFLAGS = $(PTHREAD_FLAGS) $(CXXABI_LIB)
|
||||
|
||||
otool_CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/foreign -I$(top_srcdir)/libstuff -I$(top_srcdir)/libobjc2 $(WARNINGS) $(LTO_DEFS) -D_DARWIN_C_SOURCE -D__DARWIN_UNIX03 $(ENDIAN_FLAG) -DOTOOL
|
||||
|
@ -1,32 +0,0 @@
|
||||
commit 7083dddbb0f106d791d313829ea7dc45db90e375
|
||||
Author: Thomas Pöchtrager <t.poechtrager@gmail.com>
|
||||
Date: Thu Sep 11 00:34:16 2014 +0200
|
||||
|
||||
add a workaround for a glibc 2.20 bug
|
||||
|
||||
diff --git cctools/include/sys/cdefs.h cctools/include/sys/cdefs.h
|
||||
new file mode 100644
|
||||
index 0000000..ca78da5
|
||||
--- /dev/null
|
||||
+++ cctools/include/sys/cdefs.h
|
||||
@@ -0,0 +1,20 @@
|
||||
+/*
|
||||
+ * Workaround for a GLIBC bug.
|
||||
+ * https://sourceware.org/bugzilla/show_bug.cgi?id=14952
|
||||
+ */
|
||||
+
|
||||
+#include_next <sys/cdefs.h>
|
||||
+
|
||||
+#ifdef __GLIBC__
|
||||
+
|
||||
+#ifndef __extern_inline
|
||||
+# define __extern_inline \
|
||||
+ extern __inline __attribute__ ((__gnu_inline__))
|
||||
+#endif
|
||||
+
|
||||
+#ifndef __extern_always_inline
|
||||
+# define __extern_always_inline \
|
||||
+ extern __always_inline __attribute__ ((__gnu_inline__))
|
||||
+#endif
|
||||
+
|
||||
+#endif /* __GLIBC__ */
|
@ -1,27 +0,0 @@
|
||||
diff --git cctools/configure.ac cctools/configure.ac
|
||||
index 8b59f6b..3411e34 100644
|
||||
--- cctools/configure.ac
|
||||
+++ cctools/configure.ac
|
||||
@@ -12,7 +12,7 @@ CXX=clang++
|
||||
|
||||
CFLAGS="$CFLAGS `cat tmp/cflags 2>/dev/null`"
|
||||
CFLAGS="$CFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3"
|
||||
-CXXFLAGS="$CXXFLAGS -std=gnu++0x `cat tmp/cxxflags 2>/dev/null`"
|
||||
+CXXFLAGS="$CXXFLAGS -std=c++0x `cat tmp/cxxflags 2>/dev/null`"
|
||||
CXXFLAGS="$CXXFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3"
|
||||
|
||||
LDFLAGS="$LDFLAGS -L/usr/local/lib `cat tmp/ldflags 2>/dev/null`"
|
||||
diff --git cctools/ld64/src/ld/code-sign-blobs/memutils.h cctools/ld64/src/ld/code-sign-blobs/memutils.h
|
||||
index 8fa48d6..4c97973 100644
|
||||
--- cctools/ld64/src/ld/code-sign-blobs/memutils.h
|
||||
+++ cctools/ld64/src/ld/code-sign-blobs/memutils.h
|
||||
@@ -33,6 +33,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <algorithm>
|
||||
|
||||
+#ifdef __GLIBCXX__
|
||||
+using namespace __gnu_cxx;
|
||||
+#endif
|
||||
|
||||
//
|
||||
// Encapsulate these very sharp tools in a separate (ugly-named) namespace
|
@ -1,34 +0,0 @@
|
||||
commit f7a5930c3f0931340516587241a841b1c6b31c86
|
||||
Author: Thomas Pöchtrager <t.poechtrager@gmail.com>
|
||||
Date: Sat Jul 5 11:07:48 2014 +0200
|
||||
|
||||
fix LD_LIBRARY_PATH
|
||||
|
||||
diff --git cctools/configure.ac cctools/configure.ac
|
||||
index 4ac2d69..c4f6c47 100644
|
||||
--- cctools/configure.ac
|
||||
+++ cctools/configure.ac
|
||||
@@ -6,9 +6,10 @@ AC_CANONICAL_TARGET
|
||||
|
||||
AC_ARG_PROGRAM
|
||||
|
||||
-#force compiler to clang
|
||||
+# force compiler to clang
|
||||
CC=clang
|
||||
CXX=clang++
|
||||
+CPP="clang -E"
|
||||
|
||||
CFLAGS="$CFLAGS `cat tmp/cflags 2>/dev/null`"
|
||||
CFLAGS="$CFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3"
|
||||
@@ -16,9 +17,9 @@ CXXFLAGS="$CXXFLAGS -std=c++0x `cat tmp/cxxflags 2>/dev/null`"
|
||||
CXXFLAGS="$CXXFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3"
|
||||
|
||||
LDFLAGS="$LDFLAGS -L/usr/local/lib `cat tmp/ldflags 2>/dev/null`"
|
||||
-export LD_LIBRARY_PATH="`cat tmp/ldpath 2>/dev/null`"
|
||||
|
||||
-CPP="clang -E"
|
||||
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`cat tmp/ldpath 2>/dev/null`"
|
||||
+export LD_LIBRARY_PATH
|
||||
|
||||
# FIXME 'subdir-objects' breaks dependency tracking
|
||||
AM_INIT_AUTOMAKE([1.10 no-define no-dist-gzip dist-bzip2 tar-ustar subdir-objects no-dependencies])
|
@ -1,13 +0,0 @@
|
||||
--- cctools/libobjc2/lock.h
|
||||
+++ cctools/libobjc2/lock.h
|
||||
@@ -36,6 +36,10 @@
|
||||
#if 1
|
||||
# define INIT_LOCK(x) init_recursive_mutex(&(x))
|
||||
|
||||
+#ifdef __linux__
|
||||
+# define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
|
||||
+#endif /* __linux__ */
|
||||
+
|
||||
static inline void init_recursive_mutex(pthread_mutex_t *x)
|
||||
{
|
||||
pthread_mutexattr_t recursiveAttributes;
|
Binary file not shown.
Binary file not shown.
BIN
tarballs/cctools-862-ld64-134.9_6b0448a.tar.xz
Normal file
BIN
tarballs/cctools-862-ld64-134.9_6b0448a.tar.xz
Normal file
Binary file not shown.
BIN
tarballs/cctools-862-ld64-241.9_2201b7b.tar.xz
Normal file
BIN
tarballs/cctools-862-ld64-241.9_2201b7b.tar.xz
Normal file
Binary file not shown.
@ -6,15 +6,14 @@
|
||||
|
||||
get_fedora_deps()
|
||||
{
|
||||
yum install clang llvm-devel automake autogen libtool \
|
||||
libxml2-devel libuuid-devel openssl-devel bash patch \
|
||||
libstdc++-static make
|
||||
yum install clang llvm-devel libxml2-devel libuuid-devel openssl-devel \
|
||||
bash patch libstdc++-static make
|
||||
}
|
||||
|
||||
get_freebsd_deps()
|
||||
{
|
||||
for pkgname in llvm-devel automake autogen libtool \
|
||||
libxml2 e2fsprogs-libuuid openssl bash gmake; do
|
||||
for pkgname in llvm-devel libxml2 e2fsprogs-libuuid \
|
||||
openssl bash gmake; do
|
||||
echo $pkgname
|
||||
pkg install $pkgname
|
||||
done
|
||||
@ -22,13 +21,12 @@ get_freebsd_deps()
|
||||
|
||||
get_netbsd_deps()
|
||||
{
|
||||
pkgin install clang automake autogen libtool \
|
||||
libxml2 libuuid openssl bash patch gmake
|
||||
pkgin install clang libxml2 libuuid openssl bash patch gmake
|
||||
}
|
||||
|
||||
get_opensuse_deps()
|
||||
{
|
||||
zypper install llvm-clang-devel llvm-clang libclang automake autogen libtool \
|
||||
zypper install llvm-clang-devel llvm-clang libclang \
|
||||
libxml2-devel libuuid-devel openssl bash patch make
|
||||
}
|
||||
|
||||
@ -36,15 +34,14 @@ get_mageia_deps()
|
||||
{
|
||||
urpmi ctags
|
||||
urpmi task-c-devel task-c++-devel clang lib64llvm-devel llvm \
|
||||
automake autogen libtool libxml2-devel libuuid-devel openssl \
|
||||
libopenssl-devel bash patch make libstdc++-devel
|
||||
libxml2-devel libuuid-devel openssl libopenssl-devel bash patch \
|
||||
make libstdc++-devel
|
||||
}
|
||||
|
||||
get_debian_deps()
|
||||
{
|
||||
apt-get install -y --force-yes clang llvm-dev automake autogen \
|
||||
libtool libxml2-dev uuid-dev libssl-dev bash patch make \
|
||||
tar xz-utils bzip2 gzip sed cpio
|
||||
apt-get install -y --force-yes clang llvm-dev libxml2-dev uuid-dev \
|
||||
libssl-dev bash patch make tar xz-utils bzip2 gzip sed cpio
|
||||
}
|
||||
|
||||
unknown()
|
||||
|
@ -89,11 +89,6 @@ function extract()
|
||||
fi
|
||||
}
|
||||
|
||||
function get_ld_version()
|
||||
{
|
||||
echo "`ld -v 2>&1 | tr "-" " " | awk '{print $3}' | head -n1`"
|
||||
}
|
||||
|
||||
function verbose_cmd()
|
||||
{
|
||||
echo "$@"
|
||||
|
Loading…
Reference in New Issue
Block a user