1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-03 06:04:53 +00:00

devel/xtensa-esp32-elf: Update to 13.2.0_20240530, rename to xtensa-esp-elf

This updates the toolchain to gcc 13.2.0 as used by versions 5.2.2,
5.3.0, and 5.3.1 of the Espressif esp-idf.

The crosstool.config for xtensa-esp32-esp is invalid for this version
(and is removed in esp-14.2.0_20240906 via 6269489 -- "samples:
remove obsolete xtensa-esp32XX-elf targets") so switch to xtensa-esp-esp
and rename port to match.

This update removes the final dependency on gcc10.

PR:		278061 278062
This commit is contained in:
Craig Leres 2024-09-23 12:44:29 -07:00
parent 541eb5dc7e
commit 771e57d671
11 changed files with 2310 additions and 1736 deletions

1
MOVED
View File

@ -3484,3 +3484,4 @@ databases/ldb20||2024-09-22|Has expired: Outdated and not necessary for any supp
databases/ldb21||2024-09-22|Has expired: Outdated and not necessary for any supported version of Samba
graphics/gstreamer1-plugins-qt|x11-toolkits/gstreamer1-plugins-qt5|2024-09-22|Rename with versioned suffix and move to a more fitting category with the addition of its Qt6 counterpart
devel/rubygem-sidekiq71|devel/rubygem-sidekiq72|2024-09-23|Has expired: use devel/rubygem-sidekiq72 instead
devel/xtensa-esp32-elf|devel/xtensa-esp-elf|2024-09-23|Upstream was renamed

View File

@ -0,0 +1,116 @@
PORTNAME= xtensa-esp-elf
DISTVERSION= 13.2.0_20240530
CATEGORIES= devel
MASTER_SITES= https://github.com/espressif/crosstool-NG/releases/download/esp-${DISTVERSION}/:source1 \
GNU/gmp:source2 \
https://libisl.sourceforge.io/:source3 \
GNU/mpc:source4 \
GNU/mpfr:source5 \
https://github.com/madler/zlib/releases/download/v1.2.13/:source6 \
https://github.com/facebook/zstd/releases/download/v1.5.5/:source7
DISTNAME= crosstool-NG-esp-${DISTVERSION}-src
EXTRACT_SUFX= .tar.xz
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:source1 \
gmp-6.2.1.tar.bz2:source2 \
isl-0.26.tar.gz:source3 \
mpc-1.2.1.tar.gz:source4 \
mpfr-4.2.1.zip:source5 \
zlib-1.2.13.tar.xz:source6 \
zstd-1.5.5.tar.gz:source7
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= leres@FreeBSD.org
COMMENT= Espressif ESP toolchain
WWW= https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/
LICENSE= GPLv2 LGPL21
LICENSE_COMB= multi
BUILD_DEPENDS= bash:shells/bash \
gawk:lang/gawk \
gpatch:devel/patch \
${LOCALBASE}/bin/grep:textproc/gnugrep \
${LOCALBASE}/include/libintl.h:devel/gettext-runtime \
gsed:textproc/gsed \
help2man:misc/help2man \
makeinfo:print/texinfo
USES= autoreconf:build bison gmake libtool python
USE_GCC= yes
USE_GITHUB= nodefault
NO_MTREE= yes
GH_ACCOUNT= espressif
GH_PROJECT= binutils-gdb:github1 \
gcc:github2 \
newlib-esp32:github3
GH_TAGNAME= esp-2.41.0_${ESPDATE}:github1 \
esp-${GCCVER}_${ESPDATE}:github2 \
esp-4.3.0_${ESPDATE}:github3
BINARY_ALIAS= g++=${CXX} gcc=${CC} python=${PYTHON_VERSION}
BUILD_ENV= CT_ALLOW_BUILD_AS_ROOT_SURE=1 \
CT_FORBID_DOWNLOAD=y \
GREP=${LOCALBASE}/bin/grep \
LD_RUN_PATH=${PREFIX}/lib/${CC} \
LDFLAGS=-I${PREFIX}/lib \
${MAKE_ENV:MPATH=*}
ESPVER= ${DISTNAME:tl:S/-src$//:S/-esp-/-/}
ESPDATE= 20240305
GCCVER= 13.2.0
PLIST_SUB= PKGBASE=$(PKGBASE) GCCVER=$(GCCVER)
TARBALLS= ${BUILD_WRKSRC}/.build/tarballs
post-extract:
${MKDIR} ${TARBALLS}
.for F in $(DISTFILES:N$(EXTRACT_ONLY)\:source[0-9]*)
${LN} -s ${DISTDIR}/${F:C/:source[0-9]+$//} ${TARBALLS}
.endfor
${ECHO} CT_LOG_PROGRESS_BAR=n >> \
${BUILD_WRKSRC}/samples/${PORTNAME}/crosstool.config
# Make tar names match extract directories
${LN} -s \
${DISTDIR}/espressif-binutils-gdb-esp-2.41.0_${ESPDATE}_GH0.tar.gz \
${TARBALLS}/binutils-gdb-esp-2.41.0_${ESPDATE}.tar.gz
${LN} -s ${DISTDIR}/espressif-gcc-esp-${GCCVER}_${ESPDATE}_GH0.tar.gz \
${TARBALLS}/gcc-esp-${GCCVER}_${ESPDATE}.tar.gz
${LN} -s \
${DISTDIR}/espressif-newlib-esp32-esp-4.3.0_${ESPDATE}_GH0.tar.gz \
${TARBALLS}/newlib-esp32-esp-4.3.0_${ESPDATE}.tar.gz
# Use a new crosstool.config that lets us download a
# branch/tag tarball instead of doing "git clone"
${MV} ${WRKSRC}/samples/xtensa-esp-elf/crosstool.config \
${WRKSRC}/samples/xtensa-esp-elf/crosstool.config-
${CP} ${FILESDIR}/crosstool.config ${WRKSRC}/samples/xtensa-esp-elf
do-configure:
cd ${BUILD_WRKSRC} && ./bootstrap
${PRINTF} "#!/bin/sh\necho '${ESPVER}'\n" > \
${BUILD_WRKSRC}/version.sh
${CHMOD} -w+x ${BUILD_WRKSRC}/version.sh
cd ${BUILD_WRKSRC} && \
${SETENV} ${BUILD_ENV} LIBS=-lintl \
./configure --prefix=${WRKDIR}/ct-ng --exec-prefix=${WRKDIR}/ct-ng
cd ${BUILD_WRKSRC} && \
${SETENV} -uMAKELEVEL -uMAKEFLAGS -u.MAKE.LEVEL.ENV ${BUILD_ENV} \
${MAKE_CMD} install && ${SETENV} ${BUILD_ENV} ./ct-ng xtensa-esp-elf
do-build:
cd ${BUILD_WRKSRC} && ${SETENV} ${BUILD_ENV} ./ct-ng build
cd ${BUILD_WRKSRC}/builds/${PORTNAME} && \
${CHMOD} +w . lib && \
${RM} build.log.bz2 lib/charset.alias && \
${CHMOD} -w . lib
do-install:
cd ${BUILD_WRKSRC}/builds/${PORTNAME} && \
${COPYTREE_BIN} . ${STAGEDIR}${PREFIX}/${PKGBASE}
${FIND} ${STAGEDIR}${PREFIX}/${PKGBASE} -type f | \
${XARGS} ${CHMOD} -wx
${FIND} ${STAGEDIR}${PREFIX}/${PKGBASE}/bin \
${STAGEDIR}${PREFIX}/${PKGBASE}/libexec/gcc/${PORTNAME}/${GCCVER} \
${STAGEDIR}${PREFIX}/${PKGBASE}/${PORTNAME}/bin -type f | \
${XARGS} ${CHMOD} +x
.include <bsd.port.mk>

View File

@ -0,0 +1,21 @@
TIMESTAMP = 1727046054
SHA256 (crosstool-NG-esp-13.2.0_20240530-src.tar.xz) = 6e439b150bfd7cc3446b39c285e1eeebfb71c6e6a0132f5cf1082e5552e5b9d1
SIZE (crosstool-NG-esp-13.2.0_20240530-src.tar.xz) = 1123972
SHA256 (gmp-6.2.1.tar.bz2) = eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
SIZE (gmp-6.2.1.tar.bz2) = 2493916
SHA256 (isl-0.26.tar.gz) = b10473024cbf17d7db85323121eff0e50f03de14342a03738b4d384b587ce212
SIZE (isl-0.26.tar.gz) = 2902641
SHA256 (mpc-1.2.1.tar.gz) = 17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459
SIZE (mpc-1.2.1.tar.gz) = 838731
SHA256 (mpfr-4.2.1.zip) = 0c2e85bef65070897bd4fd9647e4dcfc850619b6bacefe769ce5592f21f42f0b
SIZE (mpfr-4.2.1.zip) = 2722866
SHA256 (zlib-1.2.13.tar.xz) = d14c38e313afc35a9a8760dadf26042f51ea0f5d154b0630a31da0540107fb98
SIZE (zlib-1.2.13.tar.xz) = 1296496
SHA256 (zstd-1.5.5.tar.gz) = 9c4396cc829cfae319a6e2615202e82aad41372073482fce286fac78646d3ee4
SIZE (zstd-1.5.5.tar.gz) = 2368543
SHA256 (espressif-binutils-gdb-esp-2.41.0_20240305_GH0.tar.gz) = 75cc712f35b0a2f95e53d9bf54629bd66759f7225dc222392f210ca4ac5facb6
SIZE (espressif-binutils-gdb-esp-2.41.0_20240305_GH0.tar.gz) = 65669754
SHA256 (espressif-gcc-esp-13.2.0_20240305_GH0.tar.gz) = 2dfa982c84d22e90974eff546311d2b97bc92d8da50eccd625b1e44a9766fc1b
SIZE (espressif-gcc-esp-13.2.0_20240305_GH0.tar.gz) = 137893692
SHA256 (espressif-newlib-esp32-esp-4.3.0_20240305_GH0.tar.gz) = d1ed55a0e7d56e33100ddb4bf78ca5e9b14757d2b0815e65594fd401cc2b091d
SIZE (espressif-newlib-esp32-esp-4.3.0_20240305_GH0.tar.gz) = 12030406

View File

@ -0,0 +1,57 @@
CT_CONFIG_VERSION="4"
CT_EXPERIMENTAL=y
CT_PREFIX_DIR="${CT_TOP_DIR}/builds/${CT_TARGET}"
CT_ARCH_XTENSA=y
CT_ARCH="xtensa"
CT_TARGET_CFLAGS="-mlongcalls"
CT_MULTILIB=y
CT_TARGET_VENDOR="esp"
CT_XTENSA_DYNCONFIG=y
CT_XTENSA_DYNCONFIG_LOCATION="${CT_TOP_DIR}/xtensa-dynconfig"
CT_XTENSA_DYNCONFIG_CONF_DIR="${CT_TOP_DIR}/overlays"
CT_CC_GCC_ENABLE_CXX_FLAGS="-ffunction-sections"
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-threads=posix"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio --enable-libstdcxx-time=yes"
# CT_CC_CXA_ATEXIT is not set
# CT_CC_GCC_STATIC_LIBSTDCXX is not set
# CT_CC_GCC_LDBL_128 is not set
CT_CC_LANG_CXX=y
# NOTE:lways want this
CT_LOG_PROGRESS_BAR=n
crosstool-ng doesn't apply bundled patches in the case of using git repo
CT_NEWLIB_V_4_3=y
CT_NEWLIB_VERSION="4.3.0"
CT_NEWLIB_SRC_CUSTOM=y
CT_NEWLIB_CUSTOM_LOCATION=".build/tarballs/newlib-esp32-esp-4.3.0_20240305.tar.gz"
CT_LIBC_NEWLIB_TARGET_CFLAGS=""
CT_LIBC_NEWLIB_EXTRA_CONFIG_ARRAY="--enable-newlib-iconv --enable-newlib-reent-binary-compat"
CT_LIBC_NEWLIB_NANO_MALLOC=y
CT_LIBC_NEWLIB_RETARGETABLE_LOCKING=y
CT_LIBC_NEWLIB_GLOBAL_ATEXIT=y
CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS=y
CT_LIBC_NEWLIB_REENT_SMALL=y
CT_LIBC_NEWLIB_IO_C99FMT=y
CT_LIBC_NEWLIB_IO_LL=y
CT_LIBC_NEWLIB_IO_FLOAT=y
CT_LIBC_NEWLIB_IO_POS_ARGS=y
CT_LIBC_NEWLIB_WIDE_ORIENT=n
CT_LIBC_NEWLIB_AUX_BUILD=y
CT_LIBC_NEWLIB_AUX_BUILD_NAME="nano"
CT_LIBC_NEWLIB_AUX_BUILD_EXTRA_CONFIG_ARRAY="--with-newlib --enable-multilib --disable-newlib-io-c99-formats --disable-newlib-supplied-syscalls --enable-newlib-nano-formatted-io --enable-newlib-reent-small --enable-target-optspace --enable-newlib-nano-malloc --enable-newlib-retargetable-locking --disable-newlib_wide_orient --enable-newlib-iconv --enable-newlib-reent-binary-compat"
CT_LIBC_NEWLIB_AUX_BUILD_TARGET_CFLAGS=""
CT_GCC_V_13=y
CT_GCC_VERSION="13.2.0"
CT_GCC_SRC_CUSTOM=y
CT_GCC_CUSTOM_LOCATION=".build/tarballs/gcc-esp-13.2.0_20240305.tar.gz"
CT_BINUTILS_V_2_41=y
CT_BINUTILS_VERSION="2.41.0"
CT_BINUTILS_SRC_CUSTOM=y
CT_BINUTILS_CUSTOM_LOCATION=".build/tarballs/binutils-gdb-esp-2.41.0_20240305.tar.gz"

View File

@ -0,0 +1,4 @@
The Espressif ESP toolchain to support Arduino and FreeRTOS projects.
This version produces a gcc 13.2.0 based toolchain for use with
versions 5.2.2, 5.3.0, and 5.3.1 of the esp-idf.

File diff suppressed because it is too large Load Diff

View File

@ -1,108 +0,0 @@
PORTNAME= xtensa-esp32-elf
DISTVERSION= 1.22.0.g20200907
PORTREVISION= 3
CATEGORIES= devel
MASTER_SITES= SOURCEWARE/binutils/releases/binutils:source1 \
GNU/binutils:source1 \
https://github.com/libexpat/libexpat/releases/download/R_2_1_0/:source2 \
SF/expat/expat/2.1.0:source2 \
GCC/releases/gcc-${GCCVER}:source3 \
GNU/gdb:source4 \
GNU/gmp:source5 \
http://isl.gforge.inria.fr/:source6 \
GNU/mpc:source7 \
http://www.mpfr.org/mpfr-3.1.3/:source8 \
GNU/mpfr:source8 \
ftp://ftp.invisible-island.net/ncurses/:source9 \
GNU/ncurses:source9 \
SOURCEWARE/newlib:source10
DISTFILES= binutils-2.25.1.tar.bz2:source1 \
expat-2.1.0.tar.gz:source2 \
gcc-${GCCVER}.tar.bz2:source3 \
gdb-7.10.tar.xz:source4 \
gmp-6.0.0a.tar.xz:source5 \
isl-0.14.tar.xz:source6 \
mpc-1.0.3.tar.gz:source7 \
mpfr-3.1.3.tar.xz:source8 \
ncurses-6.0.tar.gz:source9 \
newlib-2.2.0.tar.gz:source10
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= leres@FreeBSD.org
COMMENT= Espressif ESP32 toolchain
WWW= https://dl.espressif.com/doc/esp-idf/latest/get-started/index.html #setup-toolchain
LICENSE= GPLv2 LGPL21
LICENSE_COMB= multi
BUILD_DEPENDS= bash:shells/bash \
gawk:lang/gawk \
gpatch:devel/patch \
${LOCALBASE}/bin/grep:textproc/gnugrep \
gperf:devel/gperf \
gsed:textproc/gsed \
help2man:misc/help2man \
makeinfo:print/texinfo \
wget:ftp/wget
USES= autoreconf:build bison gmake libtool python
USE_GCC= 10
USE_GITHUB= yes
NO_MTREE= yes
SUBDIR= crosstool-NG
TAGNAME= 1.22.0-97-gc752ad5
GH_TUPLE= espressif:${SUBDIR}:${TAGNAME}
BINARY_ALIAS= g++=${CXX} gcc=${CC} python=${PYTHON_VERSION}
BUILD_ENV= CT_ALLOW_BUILD_AS_ROOT_SURE=1 \
CT_FORBID_DOWNLOAD=y \
GREP=${LOCALBASE}/bin/grep \
LD_RUN_PATH=${PREFIX}/lib/${CC} \
LDFLAGS=-I/usr/local/lib \
${MAKE_ENV:MPATH=*}
ESPVER= crosstool-ng-$(TAGNAME)
GCCVER= 5.2.0
PLIST_SUB= PKGBASE=$(PKGBASE) GCCVER=$(GCCVER)
TARBALLS= ${BUILD_WRKSRC}/.build/tarballs
post-extract:
${MKDIR} ${TARBALLS}
.for F in $(DISTFILES:N$(EXTRACT_ONLY))
${LN} -s ${DISTDIR}/${F:C/:source[0-9]+$//} ${TARBALLS}
.endfor
${MKDIR} ${WRKSRC}/local-patches/gdb/7.10
${CP} ${FILESDIR}/0001-gdb-7.12.1.patch ${WRKSRC}/local-patches/gdb/7.10
echo CT_LOG_PROGRESS_BAR=n >> \
${BUILD_WRKSRC}/samples/${PORTNAME}/crosstool.config
do-configure:
cd ${BUILD_WRKSRC} && ./bootstrap
${PRINTF} "#!/bin/sh\necho '${ESPVER}'\n" > \
${BUILD_WRKSRC}/version.sh
${CHMOD} -w+x ${BUILD_WRKSRC}/version.sh
cd ${BUILD_WRKSRC} && \
${SETENV} ${BUILD_ENV} \
./configure --enable-local --prefix=${WRKDIR}/ct-ng --exec-prefix=${WRKDIR}/ct-ng
cd ${BUILD_WRKSRC} && \
${SETENV} -uMAKELEVEL -uMAKEFLAGS -u.MAKE.LEVEL.ENV ${BUILD_ENV} \
${MAKE_CMD} install && ${SETENV} ${BUILD_ENV} ./ct-ng ${PORTNAME}
do-build:
cd ${BUILD_WRKSRC} && ${SETENV} ${BUILD_ENV} ./ct-ng build
cd ${BUILD_WRKSRC}/builds/${PORTNAME} && \
${CHMOD} +w . lib && \
${RM} build.log.bz2 lib/charset.alias && \
${CHMOD} -w . lib
do-install:
cd ${BUILD_WRKSRC}/builds/${PORTNAME} && \
${COPYTREE_BIN} . ${STAGEDIR}${PREFIX}/${PKGBASE}
${FIND} ${STAGEDIR}${PREFIX}/${PKGBASE} -type f | \
${XARGS} ${CHMOD} -wx
${FIND} ${STAGEDIR}${PREFIX}/${PKGBASE}/bin \
${STAGEDIR}${PREFIX}/${PKGBASE}/libexec/gcc/${PORTNAME}/${GCCVER} \
${STAGEDIR}${PREFIX}/${PKGBASE}/${PORTNAME}/bin -type f | \
${XARGS} ${CHMOD} +x
.include <bsd.port.mk>

View File

@ -1,23 +0,0 @@
TIMESTAMP = 1604959694
SHA256 (binutils-2.25.1.tar.bz2) = b5b14added7d78a8d1ca70b5cb75fef57ce2197264f4f5835326b0df22ac9f22
SIZE (binutils-2.25.1.tar.bz2) = 24163561
SHA256 (expat-2.1.0.tar.gz) = 823705472f816df21c8f6aa026dd162b280806838bb55b3432b0fb1fcca7eb86
SIZE (expat-2.1.0.tar.gz) = 562616
SHA256 (gcc-5.2.0.tar.bz2) = 5f835b04b5f7dd4f4d2dc96190ec1621b8d89f2dc6f638f9f8bc1b1014ba8cad
SIZE (gcc-5.2.0.tar.bz2) = 95221552
SHA256 (gdb-7.10.tar.xz) = 7ebdaa44f9786ce0c142da4e36797d2020c55fa091905ac5af1846b5756208a8
SIZE (gdb-7.10.tar.xz) = 18540820
SHA256 (gmp-6.0.0a.tar.xz) = 9156d32edac6955bc53b0218f5f3763facb890b73a835d5e1b901dcf8eb8b764
SIZE (gmp-6.0.0a.tar.xz) = 1904112
SHA256 (isl-0.14.tar.xz) = b1044f02819da0708fc7071fa2a558ce5d3c29d6676c8cb113caaedd5903ff03
SIZE (isl-0.14.tar.xz) = 1247052
SHA256 (mpc-1.0.3.tar.gz) = 617decc6ea09889fb08ede330917a00b16809b8db88c29c31bfbb49cbf88ecc3
SIZE (mpc-1.0.3.tar.gz) = 669925
SHA256 (mpfr-3.1.3.tar.xz) = 6835a08bd992c8257641791e9a6a2b35b02336c8de26d0a8577953747e514a16
SIZE (mpfr-3.1.3.tar.xz) = 1112096
SHA256 (ncurses-6.0.tar.gz) = f551c24b30ce8bfb6e96d9f59b42fbea30fa3a6123384172f9e7284bcf647260
SIZE (ncurses-6.0.tar.gz) = 3131891
SHA256 (newlib-2.2.0.tar.gz) = f8add263b0737591aff451b12a00c262c2efac4fa87d741fa1c318fc3bb335be
SIZE (newlib-2.2.0.tar.gz) = 16521910
SHA256 (espressif-crosstool-NG-1.22.0.g20200907-1.22.0-97-gc752ad5_GH0.tar.gz) = 6219346b4adef881820c4f90094c530c861a2b02a54831eef02ad03ef69ca251
SIZE (espressif-crosstool-NG-1.22.0.g20200907-1.22.0-97-gc752ad5_GH0.tar.gz) = 2669631

View File

@ -1,46 +0,0 @@
Derived from:
https://github.com/crosstool-ng/crosstool-ng/issues/1206
_PyImport_FixupBuiltin Solution patch #1206
--- a/gdb/python/python.c.orig 2019-06-14 11:41:02.944671520 +0800
+++ b/gdb/python/python.c 2019-06-14 11:55:32.000000000 +0800
@@ -1624,6 +1624,17 @@ finalize_python (void *ignore)
}
#endif
+#ifdef IS_PY3K
+/* This is called via the PyImport_AppendInittab mechanism called
+ during initialization, to make the built-in _gdb module known to
+ Python. */
+PyMODINIT_FUNC
+init__gdb_module (void)
+{
+ return PyModule_Create (&python_GdbModuleDef);
+}
+#endif
+
/* Provide a prototype to silence -Wmissing-prototypes. */
extern initialize_file_ftype _initialize_python;
@@ -1743,6 +1754,9 @@ message == an error message without a st
remain alive for the duration of the program's execution, so
it is not freed after this call. */
Py_SetProgramName (progname_copy);
+
+ /* Define _gdb as a built-in module. */
+ PyImport_AppendInittab ("_gdb", init__gdb_module);
#else
Py_SetProgramName (progname);
#endif
@@ -1752,9 +1766,7 @@ message == an error message without a st
PyEval_InitThreads ();
#ifdef IS_PY3K
- gdb_module = PyModule_Create (&python_GdbModuleDef);
- /* Add _gdb module to the list of known built-in modules. */
- _PyImport_FixupBuiltin (gdb_module, "_gdb");
+ gdb_module = PyImport_ImportModule ("_gdb");
#else
gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
#endif

View File

@ -1,4 +0,0 @@
The Espressif ESP32 toolchain to support Arduino and FreeRTOS projects.
This version produces a gcc 5.2.0 based toolchain for use with v3.3
of the esp-idf.

File diff suppressed because it is too large Load Diff