From bfbad7adbabb4c04e528608cf02ce5e6ab83ca94 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Fri, 17 Aug 2018 17:36:52 +0200 Subject: [PATCH 01/10] Enable lld and lldb on arm64 and mips64el --- debian/changelog | 7 +++++++ debian/control | 28 ++++++++++++++-------------- debian/rules | 2 +- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0c329353..3bcc4768 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-6.0 (1:6.0.1-6) UNRELEASED; urgency=medium + + * Enable lld on arm64, mips64el + * Enable lldb on mips64el + + -- Gianfranco Costamagna Fri, 17 Aug 2018 17:36:03 +0200 + llvm-toolchain-6.0 (1:6.0.1-5) unstable; urgency=medium * Cherry-pick a patch from 7 to fix an issue with Julia diff --git a/debian/control b/debian/control index 8dc4d06f..7c212d62 100644 --- a/debian/control +++ b/debian/control @@ -377,8 +377,8 @@ Description: Modular compiler and toolchain technologies, examples # ------------- lld ------------- Package: lld-6.0 -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel -# ia64 mips mipsel hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc ppc64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}), llvm-6.0-dev Pre-Depends: ${misc:Pre-Depends} Description: LLVM-based linker @@ -387,8 +387,8 @@ Description: LLVM-based linker Project. Package: liblld-6.0 -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel -# ia64 mips mipsel hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc ppc64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -401,8 +401,8 @@ Description: LLVM-based linker, library Package: liblld-6.0-dev Section: libdevel -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel -# ia64 mips mipsel hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc ppc64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lld-6.0 (= ${binary:Version}), liblld-6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} @@ -417,8 +417,8 @@ Description: LLVM-based linker, header files # ------------- lldb ------------- Package: lldb-6.0 -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el -# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}), llvm-6.0-dev, python-lldb-6.0 Pre-Depends: ${misc:Pre-Depends} @@ -428,8 +428,8 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-6.0 -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el -# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -444,8 +444,8 @@ Description: Next generation, high-performance debugger, library Package: python-lldb-6.0 Section: python -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el -# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, python, python-six Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y Replaces: python-lldb-x.y @@ -461,8 +461,8 @@ Description: Next generation, high-performance debugger, python lib Package: liblldb-6.0-dev Section: libdevel -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el -# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-6.0 (= ${binary:Version}) Replaces: lldb-6.0-dev (<= 1:6.0~svn215195-2) Breaks: lldb-6.0-dev (<< 1:6.0~svn215195-2) diff --git a/debian/rules b/debian/rules index d711d9e5..907070ec 100755 --- a/debian/rules +++ b/debian/rules @@ -145,7 +145,7 @@ else endif LLDB_ENABLE=yes -LLDB_DISABLE_ARCHS := hurd-i386 ia64 mips64el powerpc powerpcspe ppc64 s390x sparc64 +LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 s390x sparc64 # hurd has threading issues ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch. From 6015c27b606497fc3542c3fddec33562d3fc2224 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Fri, 17 Aug 2018 17:45:27 +0200 Subject: [PATCH 02/10] Upload to experimental --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3bcc4768..54305b91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-6.0 (1:6.0.1-6) UNRELEASED; urgency=medium +llvm-toolchain-6.0 (1:6.0.1-5exp1) experimental; urgency=medium * Enable lld on arm64, mips64el * Enable lldb on mips64el From 5ed9a0930f19f0f88cd4ad75c35552afb88e6a25 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Tue, 21 Aug 2018 23:56:58 +0200 Subject: [PATCH 03/10] Don't build with ld.gold on powerpcspe --- debian/changelog | 7 +++++++ debian/rules | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 54305b91..1dfd4b93 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-6.0 (1:6.0.1-5exp2) UNRELEASED; urgency=medium + + [ John Paul Adrian Glaubitz ] + * Don't build with ld.gold on powerpcspe + + -- John Paul Adrian Glaubitz Tue, 21 Aug 2018 23:56:27 +0200 + llvm-toolchain-6.0 (1:6.0.1-5exp1) experimental; urgency=medium * Enable lld on arm64, mips64el diff --git a/debian/rules b/debian/rules index 907070ec..d73f72db 100755 --- a/debian/rules +++ b/debian/rules @@ -84,7 +84,7 @@ else control_vars = '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev' endif -BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 powerpcspe ppc64 ppc64el sparc sparc64 x32 s390x +BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el sparc sparc64 x32 s390x ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.23.1-1~exp3 ; echo $$?),0) ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) # -fused-ld=gold enables the gold linker (but is not supported by all archs / distro) From 8de0070b2c2c2736d4c1a550144e8f0df8f03415 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Tue, 21 Aug 2018 23:57:53 +0200 Subject: [PATCH 04/10] Disable polly on powerpcspe --- debian/changelog | 1 + debian/rules | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1dfd4b93..d8909661 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ llvm-toolchain-6.0 (1:6.0.1-5exp2) UNRELEASED; urgency=medium [ John Paul Adrian Glaubitz ] * Don't build with ld.gold on powerpcspe + * Disable polly on powerpcspe -- John Paul Adrian Glaubitz Tue, 21 Aug 2018 23:56:27 +0200 diff --git a/debian/rules b/debian/rules index d73f72db..c8b5fa80 100755 --- a/debian/rules +++ b/debian/rules @@ -96,7 +96,7 @@ endif # Enable polly (or not) POLLY_ENABLE=yes -ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc s390x)) +ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc powerpcspe s390x)) POLLY_ENABLE=no endif From 1f4d69cb08aa41eeae53c5ee203d27b96f2227d5 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 22 Aug 2018 11:33:21 +0200 Subject: [PATCH 05/10] Add liblldb-6.0-dev to python-lldb runtime dependencies, needed to import it --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 7c212d62..6339ef65 100644 --- a/debian/control +++ b/debian/control @@ -446,7 +446,7 @@ Package: python-lldb-6.0 Section: python Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 # ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed -Depends: ${shlibs:Depends}, ${misc:Depends}, python, python-six +Depends: liblldb-6.0-dev, ${shlibs:Depends}, ${misc:Depends}, python, python-six Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y Replaces: python-lldb-x.y Provides: python-lldb-x.y From 32c1f7a0d8a05305c5ac7b595af2c91a50c88451 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 22 Aug 2018 11:34:11 +0200 Subject: [PATCH 06/10] Upload to unstable --- debian/changelog | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d8909661..67a2a5a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,15 @@ -llvm-toolchain-6.0 (1:6.0.1-5exp2) UNRELEASED; urgency=medium +llvm-toolchain-6.0 (1:6.0.1-6) unstable; urgency=medium [ John Paul Adrian Glaubitz ] * Don't build with ld.gold on powerpcspe * Disable polly on powerpcspe - -- John Paul Adrian Glaubitz Tue, 21 Aug 2018 23:56:27 +0200 + [ Gianfranco Costamagna ] + * Team upload + * Upload to unstable + * Add liblldb-6.0-dev to python-lldb runtime dependencies, needed to import it + + -- Gianfranco Costamagna Wed, 22 Aug 2018 11:33:44 +0200 llvm-toolchain-6.0 (1:6.0.1-5exp1) experimental; urgency=medium From 8230edeed8ee517214c72882a0481e8ee0ca2dfa Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 22 Aug 2018 11:39:04 +0200 Subject: [PATCH 07/10] Cosmetic fix --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 6339ef65..9e92174c 100644 --- a/debian/control +++ b/debian/control @@ -446,7 +446,7 @@ Package: python-lldb-6.0 Section: python Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 # ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed -Depends: liblldb-6.0-dev, ${shlibs:Depends}, ${misc:Depends}, python, python-six +Depends: ${shlibs:Depends}, ${misc:Depends}, liblldb-6.0-dev, python, python-six Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y Replaces: python-lldb-x.y Provides: python-lldb-x.y From 7b904dfc377f9b4b717b7b14ed27617210cca5e9 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 23 Aug 2018 09:22:41 +0200 Subject: [PATCH 08/10] Add ppc64el to lld architectures --- debian/control | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debian/control b/debian/control index 9e92174c..0e53dc11 100644 --- a/debian/control +++ b/debian/control @@ -377,8 +377,8 @@ Description: Modular compiler and toolchain technologies, examples # ------------- lld ------------- Package: lld-6.0 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 -# ia64 hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}), llvm-6.0-dev Pre-Depends: ${misc:Pre-Depends} Description: LLVM-based linker @@ -387,8 +387,8 @@ Description: LLVM-based linker Project. Package: liblld-6.0 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 -# ia64 hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -401,8 +401,8 @@ Description: LLVM-based linker, library Package: liblld-6.0-dev Section: libdevel -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 -# ia64 hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lld-6.0 (= ${binary:Version}), liblld-6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} From fb53ad9f53b6d99947bfbe6696b0943a57bc2726 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 23 Aug 2018 09:36:20 +0200 Subject: [PATCH 09/10] Update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 67a2a5a6..cb84e197 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ llvm-toolchain-6.0 (1:6.0.1-6) unstable; urgency=medium [ Gianfranco Costamagna ] * Team upload * Upload to unstable + * Enable lld on ppc64el * Add liblldb-6.0-dev to python-lldb runtime dependencies, needed to import it -- Gianfranco Costamagna Wed, 22 Aug 2018 11:33:44 +0200 From e9ead2b8b4fe11afff8708cb50374313502f9a8b Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 23 Aug 2018 10:26:28 +0200 Subject: [PATCH 10/10] Add rustc patch from --- debian/changelog | 1 + debian/patches/D51108.diff | 65 ++++++++++++++++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 67 insertions(+) create mode 100644 debian/patches/D51108.diff diff --git a/debian/changelog b/debian/changelog index cb84e197..15def996 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ llvm-toolchain-6.0 (1:6.0.1-6) unstable; urgency=medium [ John Paul Adrian Glaubitz ] * Don't build with ld.gold on powerpcspe * Disable polly on powerpcspe + * Cherry-pick upstream patch to make rustc build on ppc [ Gianfranco Costamagna ] * Team upload diff --git a/debian/patches/D51108.diff b/debian/patches/D51108.diff new file mode 100644 index 00000000..aa7f7196 --- /dev/null +++ b/debian/patches/D51108.diff @@ -0,0 +1,65 @@ +Index: llvm-toolchain-6.0-6.0.1/lib/Target/PowerPC/PPCISelLowering.cpp +=================================================================== +--- llvm-toolchain-6.0-6.0.1.orig/lib/Target/PowerPC/PPCISelLowering.cpp ++++ llvm-toolchain-6.0-6.0.1/lib/Target/PowerPC/PPCISelLowering.cpp +@@ -3351,9 +3351,14 @@ + // Argument stored in memory. + assert(VA.isMemLoc()); + ++ // Get the extended size of the argument type in stack + unsigned ArgSize = VA.getLocVT().getStoreSize(); +- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(), +- isImmutable); ++ // Get the actual size of the argument type ++ unsigned ObjSize = VA.getValVT().getStoreSize(); ++ unsigned ArgOffset = VA.getLocMemOffset(); ++ // Stack objects in PPC32 are right justified. ++ ArgOffset += ArgSize - ObjSize; ++ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable); + + // Create load nodes to retrieve arguments from the stack. + SDValue FIN = DAG.getFrameIndex(FI, PtrVT); +@@ -5303,10 +5308,11 @@ + Arg = PtrOff; + } + +- if (VA.isRegLoc()) { +- if (Arg.getValueType() == MVT::i1) +- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg); ++ // Ensure callee will get either 0x00000001 or 0x00000000. ++ if (Arg.getValueType() == MVT::i1) ++ Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg); + ++ if (VA.isRegLoc()) { + seenFloatArg |= VA.getLocVT().isFloatingPoint(); + // Put argument in a physical register. + RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg)); +Index: llvm-toolchain-6.0-6.0.1/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll +=================================================================== +--- /dev/null ++++ llvm-toolchain-6.0-6.0.1/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll +@@ -0,0 +1,24 @@ ++; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s ++target triple = "powerpc-unknown-linux-gnu" ++ ++define zeroext i1 @check_callee( ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext %s1 ++) { ++ call void @check_caller( ++ i1 zeroext true, i1 zeroext true, i1 zeroext true, i1 zeroext true, ++ i1 zeroext true, i1 zeroext true, i1 zeroext true, i1 zeroext true, ++ i1 zeroext %s1) ++ ret i1 true ++} ++ ++; CHECK-LABEL: @check_callee ++; CHECK: lbz {{[0-9]+}}, 27(1) ++; CHECK: stw {{[0-9]+}}, 8(1) ++ ++declare void @check_caller( ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext ++) diff --git a/debian/patches/series b/debian/patches/series index 66b6cc3b..c901e764 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -60,3 +60,4 @@ D42717-JumpThreading-backport-2.diff llvm-D49832-SCEVPred.patch llvm-rL323946-LSRTy.patch PowerPC-Make-AddrSpaceCast-noop.diff +D51108.diff