Re: UPDATE: LLVM - Fix building on arm
On 11/3/2020 3:37 PM, Jeremie Courreges-Anglas wrote: On Tue, Nov 03 2020, Brad Smith wrote: The following diff fixes building the LLVM port on arm. http://build-failures.rhaalovely.net/arm/2020-06-03/devel/llvm,,-main.log Is it supposed to fix this error? What was the problem? Yes, to resolve that issue. revision 1.133 date: 2017/02/16 15:07:16; author: jca; state: Exp; lines: +8 -3; commitid: ZCMIOK4N5VLJOUXb; Use -mlong-calls on arm and powerpc to work around relocations overflow On those architectures the .text section of the executables is too big for the 32M immediate branch offset. ld --relax is supposed to fix things on powerpc, but it is actually ineffective here. cc -mlong-calls creates branches instructions using a full 32 bits register; FreeBSD uses the same workaround. A fix for lib/csu is still needed to avoid an overflow between .init and .fini sections. powerpc hasn't been tested, but we know that devel/llvm is already broken there anyway. ok Brad (maintainer) But I don't remember ever seeing any arm packages and that was before switching to Clang and then lld as defaults. The PowerPC part was eventually removed as it did not work. revision 1.203 date: 2019/01/04 00:14:57; author: jca; state: Exp; lines: +2 -4; commitid: Xwd6ogyWHrLM99NH; Stop using -mlongcall on powerpc Using long calls means slower code. It is not useful right now because the size of the llvm executables has been reduced, as shown by tests by Charlene Wendling. And it breaks compilation with gcc 6, as pointed out by a report from George Koehler.
UPDATE: LLVM - Fix building on arm
The following diff fixes building the LLVM port on arm. pickles$ make install ===> Verifying specs: c++ c++abi pthread c edit m pthread z ===> found c++.5.0 c++abi.3.0 pthread.26.1 c.96.0 edit.5.2 m.10.1 z.5.0 ===> Installing llvm-10.0.1p3 from /usr/ports/packages/arm/all/ llvm-10.0.1p3: ok New and changed readme(s): /usr/local/share/doc/pkg-readmes/llvm pickles$ /usr/local/bin/clang --version clang version 10.0.1 Target: arm-unknown-openbsd6.8 Thread model: posix InstalledDir: /usr/local/bin Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.263 diff -u -p -u -p -r1.263 Makefile --- Makefile4 Sep 2020 09:55:35 - 1.263 +++ Makefile3 Nov 2020 17:48:10 - @@ -109,10 +109,7 @@ CXXFLAGS +=-fno-ret-protector CXXFLAGS +=-mno-retpoline .endif -.if ${MACHINE_ARCH} == "arm" -CFLAGS += -mlong-calls -CXXFLAGS +=-mlong-calls -.elif ${MACHINE_ARCH} == "powerpc" +.if ${MACHINE_ARCH} == "powerpc" CONFIGURE_ARGS += -DCMAKE_EXE_LINKER_FLAGS="-Wl,-relax" CONFIGURE_ARGS += -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-relax" .endif
Re: UPDATE: LLVM - Fix building on arm
On Tue, Nov 03 2020, Brad Smith wrote: > On 11/3/2020 3:37 PM, Jeremie Courreges-Anglas wrote: >> On Tue, Nov 03 2020, Brad Smith wrote: >>> The following diff fixes building the LLVM port on arm. >> http://build-failures.rhaalovely.net/arm/2020-06-03/devel/llvm,,-main.log >> >> Is it supposed to fix this error? What was the problem? > > > Yes, to resolve that issue. So what was the problem in the cmake error log? What helped you understand and solve this issue? Thanks for the diff, I'm going to commit it anyway since it looks like removing -mlongcall fixed powerpc too but... oh well. > > revision 1.133 > date: 2017/02/16 15:07:16; author: jca; state: Exp; lines: +8 -3; > commitid: ZCMIOK4N5VLJOUXb; > Use -mlong-calls on arm and powerpc to work around relocations overflow > > On those architectures the .text section of the executables is too big > for the 32M immediate branch offset. ld --relax is supposed to fix > things on powerpc, but it is actually ineffective here. cc -mlong-calls > creates branches instructions using a full 32 bits register; FreeBSD > uses the same workaround. > > A fix for lib/csu is still needed to avoid an overflow between .init > and .fini sections. powerpc hasn't been tested, but we know that > devel/llvm is already broken there anyway. > > ok Brad (maintainer) > > > But I don't remember ever seeing any arm packages Well I highly suspect I actually tested that fix on the cubox machine I had around at that time. Looking at the arm bulk build reports, bulk build on armv7-0.ports.openbsd.org started on Thu Feb 2 13:04:20 MST 2017 finished at Sat Feb 11 01:55:20 MST 2017 lasted 09D05h51m done with kern.version=OpenBSD 6.0-current (GENERIC) #36: Tue Jan 31 00:42:23 MST 2017 llvm fails bulk build on armv7-0.ports.openbsd.org started on Wed Mar 1 15:05:08 MST 2017 finished at Sat Mar 11 07:33:24 MST 2017 lasted 10D09h28m done with kern.version=OpenBSD 6.0-current (GENERIC) #53: Tue Feb 28 05:50:54 MST 2017 no llvm failure > and that was before > switching to Clang and then lld as defaults. Granted. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: UPDATE: LLVM - Fix building on arm
On Tue, Nov 03 2020, Brad Smith wrote: > The following diff fixes building the LLVM port on arm. http://build-failures.rhaalovely.net/arm/2020-06-03/devel/llvm,,-main.log Is it supposed to fix this error? What was the problem? > pickles$ make install > ===> Verifying specs: c++ c++abi pthread c edit m pthread z > ===> found c++.5.0 c++abi.3.0 pthread.26.1 c.96.0 edit.5.2 m.10.1 z.5.0 > ===> Installing llvm-10.0.1p3 from /usr/ports/packages/arm/all/ > llvm-10.0.1p3: ok > New and changed readme(s): > /usr/local/share/doc/pkg-readmes/llvm > pickles$ /usr/local/bin/clang --version > clang version 10.0.1 > Target: arm-unknown-openbsd6.8 > Thread model: posix > InstalledDir: /usr/local/bin > > > Index: Makefile > === > RCS file: /home/cvs/ports/devel/llvm/Makefile,v > retrieving revision 1.263 > diff -u -p -u -p -r1.263 Makefile > --- Makefile 4 Sep 2020 09:55:35 - 1.263 > +++ Makefile 3 Nov 2020 17:48:10 - > @@ -109,10 +109,7 @@ CXXFLAGS += -fno-ret-protector > CXXFLAGS += -mno-retpoline > .endif > > -.if ${MACHINE_ARCH} == "arm" > -CFLAGS +=-mlong-calls > -CXXFLAGS += -mlong-calls > -.elif ${MACHINE_ARCH} == "powerpc" > +.if ${MACHINE_ARCH} == "powerpc" > CONFIGURE_ARGS +=-DCMAKE_EXE_LINKER_FLAGS="-Wl,-relax" > CONFIGURE_ARGS +=-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-relax" > .endif > -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: UPDATE: LLVM - mips64
ping. On 9/28/2019 4:45 PM, Brad Smith wrote: mips64 has switched over to Clang by default. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.234 diff -u -p -u -p -r1.234 Makefile --- Makefile9 Sep 2019 21:15:16 - 1.234 +++ Makefile18 Sep 2019 23:40:55 - @@ -18,7 +18,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main =llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb =lldb-${LLVM_V} -REVISION-main =0 +REVISION-main =1 CATEGORIES = devel Index: patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp,v retrieving revision 1.10 diff -u -p -u -p -r1.10 patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp --- patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 8 Jul 2019 07:56:53 - 1.10 +++ patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 27 Sep 2019 21:18:54 - @@ -42,7 +42,7 @@ Index: tools/clang/lib/Driver/ToolChains } if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { -@@ -255,16 +266,70 @@ OpenBSD::OpenBSD(const Driver , const llvm::Triple & +@@ -255,16 +266,71 @@ OpenBSD::OpenBSD(const Driver , const llvm::Triple & getFilePaths().push_back(getDriver().SysRoot + "/usr/lib"); } @@ -76,6 +76,7 @@ Index: tools/clang/lib/Driver/ToolChains + case llvm::Triple::aarch64: + case llvm::Triple::x86: + case llvm::Triple::x86_64: ++ case llvm::Triple::mips64: +return ToolChain::CST_Libcxx; +break; + default:
UPDATE: LLVM - mips64
mips64 has switched over to Clang by default. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.234 diff -u -p -u -p -r1.234 Makefile --- Makefile9 Sep 2019 21:15:16 - 1.234 +++ Makefile18 Sep 2019 23:40:55 - @@ -18,7 +18,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =0 +REVISION-main =1 CATEGORIES = devel Index: patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp,v retrieving revision 1.10 diff -u -p -u -p -r1.10 patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp --- patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 8 Jul 2019 07:56:53 - 1.10 +++ patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 27 Sep 2019 21:18:54 - @@ -42,7 +42,7 @@ Index: tools/clang/lib/Driver/ToolChains } if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { -@@ -255,16 +266,70 @@ OpenBSD::OpenBSD(const Driver , const llvm::Triple & +@@ -255,16 +266,71 @@ OpenBSD::OpenBSD(const Driver , const llvm::Triple & getFilePaths().push_back(getDriver().SysRoot + "/usr/lib"); } @@ -76,6 +76,7 @@ Index: tools/clang/lib/Driver/ToolChains + case llvm::Triple::aarch64: + case llvm::Triple::x86: + case llvm::Triple::x86_64: ++ case llvm::Triple::mips64: +return ToolChain::CST_Libcxx; +break; + default:
Re: UPDATE: LLVM 8.0.1
On Mon, Sep 02 2019, Brad Smith wrote: > Here is an update to LLVM 8.0.1. I'm testing a similar diff on amd64 and sparc64, thanks. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
UPDATE: LLVM 8.0.1
Here is an update to LLVM 8.0.1. Index: lang/clang/clang.port.mk === RCS file: /home/cvs/ports/lang/clang/clang.port.mk,v retrieving revision 1.33 diff -u -p -u -p -r1.33 clang.port.mk --- lang/clang/clang.port.mk6 Jul 2019 15:06:37 - 1.33 +++ lang/clang/clang.port.mk22 Jul 2019 00:16:36 - @@ -1,6 +1,6 @@ # $OpenBSD: clang.port.mk,v 1.33 2019/07/06 15:06:37 jca Exp $ -MODCLANG_VERSION= 8.0.0 +MODCLANG_VERSION= 8.0.1 MODCLANG_ARCHS ?= ${LLVM_ARCHS} MODCLANG_LANGS ?= Index: devel/llvm/Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.232 diff -u -p -u -p -r1.232 Makefile --- devel/llvm/Makefile 10 Aug 2019 19:41:07 - 1.232 +++ devel/llvm/Makefile 2 Sep 2019 21:42:02 - @@ -11,15 +11,13 @@ COMMENT-python =Python bindings for Cla # XXX: Remember to bump MODCLANG_VERSION in lang/clang/clang.port.mk when # updating this port. -LLVM_V = 8.0.0 +LLVM_V = 8.0.1 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} PKGSPEC-main = llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION = 1 -REVISION-main =3 CATEGORIES = devel @@ -36,7 +34,7 @@ MAINTAINER= Jeremie Courreges-Anglas https://releases.llvm.org/${LLVM_V}/ +MASTER_SITES = https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_V}/ EXTRACT_SUFX = .tar.xz DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: devel/llvm/distinfo === RCS file: /home/cvs/ports/devel/llvm/distinfo,v retrieving revision 1.33 diff -u -p -u -p -r1.33 distinfo --- devel/llvm/distinfo 6 Jul 2019 15:06:36 - 1.33 +++ devel/llvm/distinfo 21 Jul 2019 23:05:50 - @@ -1,8 +1,8 @@ -SHA256 (cfe-8.0.0.src.tar.xz) = CEwRWqsAhOY7I+7owjOrtnOcOZ4plm6uzPxuCI4Lc2s= -SHA256 (lld-8.0.0.src.tar.xz) = nK7I7JIuMv+hMPD7COTFokLX5oznV2MeQl6eui4abjc= -SHA256 (lldb-8.0.0.src.tar.xz) = SZGLnwmBZVSiCsRMX4WjLcCnoAdZsyWeeAZNZ06sA3M= -SHA256 (llvm-8.0.0.src.tar.xz) = iHK+GxLGFFDKzIKz0VPqsCviVG7zT6NYDtFBN7smIkw= -SIZE (cfe-8.0.0.src.tar.xz) = 12868468 -SIZE (lld-8.0.0.src.tar.xz) = 999864 -SIZE (lldb-8.0.0.src.tar.xz) = 19602332 -SIZE (llvm-8.0.0.src.tar.xz) = 30503732 +SHA256 (cfe-8.0.1.src.tar.xz) = cO/9afeoqySfZrCmirqLCK9Sqiq3EN+4oPuhAmhbFkY= +SHA256 (lld-8.0.1.src.tar.xz) = n7oelCSb15E+imw6rcswi3bIw9g8XONsmcPzTXOHPYg= +SHA256 (lldb-8.0.1.src.tar.xz) = 6Kebqm0R3QZQq0obR59pnfrYKvYny7zUn6by3BThMdc= +SHA256 (llvm-8.0.1.src.tar.xz) = RHh6bQL3FA8UXiJQ1WyfhJM04R+a43mCdRDtcvErdec= +SIZE (cfe-8.0.1.src.tar.xz) = 12810056 +SIZE (lld-8.0.1.src.tar.xz) = 996440 +SIZE (lldb-8.0.1.src.tar.xz) = 19586288 +SIZE (llvm-8.0.1.src.tar.xz) = 30477608 Index: devel/llvm/patches/patch-lib_Target_Mips_MCTargetDesc_MipsTargetStreamer_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_Target_Mips_MCTargetDesc_MipsTargetStreamer_cpp,v retrieving revision 1.1 diff -u -p -u -p -r1.1 patch-lib_Target_Mips_MCTargetDesc_MipsTargetStreamer_cpp --- devel/llvm/patches/patch-lib_Target_Mips_MCTargetDesc_MipsTargetStreamer_cpp 9 Jul 2019 13:21:37 - 1.1 +++ devel/llvm/patches/patch-lib_Target_Mips_MCTargetDesc_MipsTargetStreamer_cpp 10 Jul 2019 00:21:49 - @@ -23,7 +23,7 @@ Index: lib/Target/Mips/MCTargetDesc/Mips } /// Emit a store instruction with an immediate offset. -@@ -1133,7 +1133,7 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsign +@@ -1136,7 +1136,7 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsign MCInst TmpInst; TmpInst.setOpcode(Mips::LUi); @@ -32,7 +32,7 @@ Index: lib/Target/Mips/MCTargetDesc/Mips const MCExpr *HiSym = MipsMCExpr::create( MipsMCExpr::MEK_HI, MCSymbolRefExpr::create("_gp_disp", MCSymbolRefExpr::VK_None, -@@ -1145,8 +1145,8 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsign +@@ -1148,8 +1148,8 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsign TmpInst.clear(); TmpInst.setOpcode(Mips::ADDiu); @@ -43,7 +43,7 @@ Index: lib/Target/Mips/MCTargetDesc/Mips const MCExpr *LoSym = MipsMCExpr::create( MipsMCExpr::MEK_LO, MCSymbolRefExpr::create("_gp_disp", MCSymbolRefExpr::VK_None, -@@ -1158,8 +1158,8 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsign +@@ -1161,8 +1161,8 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsign TmpInst.clear(); TmpInst.setOpcode(Mips::ADDu); @@ -54,7 +54,7 @@ Index: lib/Target/Mips/MCTargetDesc/Mips TmpInst.addOperand(MCOperand::createReg(RegNo)); getStreamer().EmitInstruction(TmpInst, STI); -@@ -1182,7 +1182,7 @@ bool MipsTargetELFStreamer::emitDirectiveCpRestore( +@@ -1185,7 +1185,7
Re: UPDATE: LLVM
On Mon, Apr 29 2019, Jeremie Courreges-Anglas wrote: > On Sat, Apr 27 2019, Brad Smith wrote: >> Now that the GCC compiler has been updated and we now have a C++11 compliant >> libstdc++ the workaround for lldb can be removed. > > Please state what you have tested and what you haven't tested, on which > architectures. > > Here's an updated diff after the recent commits in this port. Less bogus diff that builds on amd64, sparc64 bulk build ongoing. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.221 diff -u -p -r1.221 Makefile --- Makefile29 Apr 2019 12:37:52 - 1.221 +++ Makefile29 Apr 2019 14:48:36 - @@ -48,10 +48,9 @@ DISTFILES = llvm-${LLVM_V}.src${EXTRACT_ clang-tools-extra-${LLVM_V}.src${EXTRACT_SUFX} MULTI_PACKAGES = -main -python -lldb -extras -PSEUDO_FLAVORS = no_lldb no_extras +PSEUDO_FLAVORS = no_extras # XXX enabling -extras changes the content of the -main subpackage FLAVOR ?= no_extras -NOT_FOR_ARCHS-lldb = ${GCC4_ARCHS} COMPILER = base-clang ports-gcc MODULES = devel/cmake \ @@ -140,9 +139,6 @@ post-extract: pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp -@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python -.if !${BUILD_PACKAGES:M-lldb} - rm -r ${WRKSRC}/tools/lldb -.endif .if !${BUILD_PACKAGES:M-extras} rm -r ${WRKSRC}/tools/clang/tools/extra .endif @@ -165,9 +161,7 @@ post-install: # lit and FileCheck are not installed @rm ${PREFIX}/man/man1/lit.1 @rm ${PREFIX}/man/man1/FileCheck.1 -.if ${BUILD_PACKAGES:M-lldb} ln -fs ${TRUEPREFIX}/lib/liblldb.so.${LIBlldb_VERSION} \ ${PREFIX}/lib/python${MODPY_VERSION}/site-packages/lldb/_lldb.so -.endif .include -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: UPDATE: LLVM
On Sat, Apr 27 2019, Brad Smith wrote: > Now that the GCC compiler has been updated and we now have a C++11 compliant > libstdc++ the workaround for lldb can be removed. Please state what you have tested and what you haven't tested, on which architectures. Here's an updated diff after the recent commits in this port. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.221 diff -u -p -r1.221 Makefile --- Makefile29 Apr 2019 12:37:52 - 1.221 +++ Makefile29 Apr 2019 12:41:53 - @@ -48,10 +48,9 @@ DISTFILES = llvm-${LLVM_V}.src${EXTRACT_ clang-tools-extra-${LLVM_V}.src${EXTRACT_SUFX} MULTI_PACKAGES = -main -python -lldb -extras -PSEUDO_FLAVORS = no_lldb no_extras +PSEUDO_FLAVORS = no_extras # XXX enabling -extras changes the content of the -main subpackage FLAVOR ?= no_extras -NOT_FOR_ARCHS-lldb = ${GCC4_ARCHS} COMPILER = base-clang ports-gcc MODULES = devel/cmake \ @@ -140,9 +139,6 @@ post-extract: pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp -@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python -.if !${BUILD_PACKAGES:M-lldb} - rm -r ${WRKSRC}/tools/lldb -.endif .if !${BUILD_PACKAGES:M-extras} rm -r ${WRKSRC}/tools/clang/tools/extra .endif @@ -165,9 +161,5 @@ post-install: # lit and FileCheck are not installed @rm ${PREFIX}/man/man1/lit.1 @rm ${PREFIX}/man/man1/FileCheck.1 -.if ${BUILD_PACKAGES:M-lldb} - ln -fs ${TRUEPREFIX}/lib/liblldb.so.${LIBlldb_VERSION} \ - ${PREFIX}/lib/python${MODPY_VERSION}/site-packages/lldb/_lldb.so -.endif .include -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
UPDATE: LLVM
Now that the GCC compiler has been updated and we now have a C++11 compliant libstdc++ the workaround for lldb can be removed. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.217 diff -u -p -u -p -r1.217 Makefile --- Makefile27 Apr 2019 21:26:34 - 1.217 +++ Makefile27 Apr 2019 22:01:36 - @@ -45,10 +45,6 @@ PERMIT_PACKAGE_CDROM = Yes WANTLIB = ${COMPILER_LIBCXX} c curses edit form m panel pthread \ ${MODPY_WANTLIB} z -PSEUDO_FLAVORS = no_lldb -FLAVOR ?= -NOT_FOR_ARCHS-lldb = ${GCC4_ARCHS} - MODULES = devel/cmake \ lang/python @@ -131,9 +127,6 @@ post-extract: pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp -@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python -.if !${BUILD_PACKAGES:M-lldb} - rm -r ${WRKSRC}/tools/lldb -.endif post-build: cd ${WRKSRC}/docs && make -f Makefile.sphinx man @@ -153,9 +146,7 @@ post-install: # lit and FileCheck are not installed @rm ${PREFIX}/man/man1/lit.1 @rm ${PREFIX}/man/man1/FileCheck.1 -.if ${BUILD_PACKAGES:M-lldb} ln -fs ${TRUEPREFIX}/lib/liblldb.so.${LIBlldb_VERSION} \ ${PREFIX}/lib/python${MODPY_VERSION}/site-packages/lldb/_lldb.so -.endif .include
Re: UPDATE: LLVM
On Sat, 16 Mar 2019 18:35:30 -0400 Brad Smith wrote: > Bring in some patches from upstream.. > > Make sure PowerPC backend is in sync with the frontend and enable Secure PLT > support their too. Hours ago, my PowerPC machine finished a build of devel/llvm. I tried to test your diff and my local changes at the same time, but I might have removed your patch to lib/Target/PowerPC/PPCSubtarget.cpp when I added my patch to the same file. If your diff gets into CVS, I will do another build of devel/llvm. A build takes about 29 hours. My patches for PowerPC try to fix compatibility with GCC when returning a small struct (40736) and enable -fomit-frame-pointer by default (41094), but I need more time to test them. - https://bugs.llvm.org/show_bug.cgi?id=40736 - https://bugs.llvm.org/show_bug.cgi?id=41094 > Index: Makefile > === > RCS file: /home/cvs/ports/devel/llvm/Makefile,v > retrieving revision 1.216 > diff -u -p -u -p -r1.216 Makefile > --- Makefile 9 Mar 2019 06:18:11 - 1.216 > +++ Makefile 10 Mar 2019 21:39:41 - > @@ -20,7 +20,7 @@ PKGSPEC-main = llvm-=${LLVM_V} > PKGNAME-main = llvm-${LLVM_V} > PKGNAME-python = py-llvm-${LLVM_V} > PKGNAME-lldb = lldb-${LLVM_V} > -REVISION-main = 9 > +REVISION-main = 10 > REVISION-lldb = 0 > CATEGORIES = devel > DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \ > Index: patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp > === > RCS file: patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp > diff -N patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp > --- /dev/null 1 Jan 1970 00:00:00 - > +++ patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp 10 Mar 2019 22:12:43 > - > @@ -0,0 +1,18 @@ > +$OpenBSD$ > + > +Default to Secure PLT on PPC for NetBSD and OpenBSD. > +This matches the default settings of clang. > + > +Index: lib/Target/PowerPC/PPCSubtarget.cpp > +--- lib/Target/PowerPC/PPCSubtarget.cpp.orig > lib/Target/PowerPC/PPCSubtarget.cpp > +@@ -138,6 +138,9 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU > + if (isDarwin()) > + HasLazyResolverStubs = true; > + > ++ if (TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD()) > ++SecurePlt = true; > ++ > + if (HasSPE && IsPPC64) > + report_fatal_error( "SPE is only supported for 32-bit targets.\n", > false); > + if (HasSPE && (HasAltivec || HasQPX || HasVSX || HasFPU)) > Index: patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp > === > RCS file: patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp > diff -N patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp > --- /dev/null 1 Jan 1970 00:00:00 - > +++ patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp 10 Mar > 2019 21:47:14 - > @@ -0,0 +1,16 @@ > +$OpenBSD$ > + > +Use Secure PLT as default on NetBSD/PowerPC. > + > +Index: tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp > +--- tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp.orig > tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp > +@@ -116,7 +116,7 @@ ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Dr > + const ArgList ) { > + if (Args.getLastArg(options::OPT_msecure_plt)) > + return ppc::ReadGOTPtrMode::SecurePlt; > +- if (Triple.isOSOpenBSD()) > ++ if (Triple.isOSNetBSD() || Triple.isOSOpenBSD()) > + return ppc::ReadGOTPtrMode::SecurePlt; > + else > + return ppc::ReadGOTPtrMode::Bss; > -- George Koehler
UPDATE: LLVM
Bring in some patches from upstream.. Make sure PowerPC backend is in sync with the frontend and enable Secure PLT support their too. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.216 diff -u -p -u -p -r1.216 Makefile --- Makefile9 Mar 2019 06:18:11 - 1.216 +++ Makefile10 Mar 2019 21:39:41 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =9 +REVISION-main =10 REVISION-lldb =0 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp === RCS file: patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp diff -N patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp 10 Mar 2019 22:12:43 - @@ -0,0 +1,18 @@ +$OpenBSD$ + +Default to Secure PLT on PPC for NetBSD and OpenBSD. +This matches the default settings of clang. + +Index: lib/Target/PowerPC/PPCSubtarget.cpp +--- lib/Target/PowerPC/PPCSubtarget.cpp.orig lib/Target/PowerPC/PPCSubtarget.cpp +@@ -138,6 +138,9 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU + if (isDarwin()) + HasLazyResolverStubs = true; + ++ if (TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD()) ++SecurePlt = true; ++ + if (HasSPE && IsPPC64) + report_fatal_error( "SPE is only supported for 32-bit targets.\n", false); + if (HasSPE && (HasAltivec || HasQPX || HasVSX || HasFPU)) Index: patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp === RCS file: patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp diff -N patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp10 Mar 2019 21:47:14 - @@ -0,0 +1,16 @@ +$OpenBSD$ + +Use Secure PLT as default on NetBSD/PowerPC. + +Index: tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp +--- tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp.orig tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp +@@ -116,7 +116,7 @@ ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Dr + const ArgList ) { + if (Args.getLastArg(options::OPT_msecure_plt)) + return ppc::ReadGOTPtrMode::SecurePlt; +- if (Triple.isOSOpenBSD()) ++ if (Triple.isOSNetBSD() || Triple.isOSOpenBSD()) + return ppc::ReadGOTPtrMode::SecurePlt; + else + return ppc::ReadGOTPtrMode::Bss;
Re: UPDATE: LLVM
On Fri, Feb 22 2019, Brad Smith wrote: > Merge in a diff from base: > > Improve the X86FixupGadgets pass I have committed this part. Thanks. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: UPDATE: LLVM
On Fri, Feb 22 2019, Brad Smith wrote: > Merge in a diff from base: > > Improve the X86FixupGadgets pass > > Merge in a bug fix from upstream: > > [MC] Make symbol version errors non-fatal Regarding this part, should the fix go into base llvm/clang too? > Index: Makefile > === > RCS file: /home/cvs/ports/devel/llvm/Makefile,v > retrieving revision 1.213 > diff -u -p -u -p -r1.213 Makefile > --- Makefile 20 Feb 2019 00:24:11 - 1.213 > +++ Makefile 22 Feb 2019 14:33:44 - > @@ -20,7 +20,7 @@ PKGSPEC-main = llvm-=${LLVM_V} > PKGNAME-main = llvm-${LLVM_V} > PKGNAME-python = py-llvm-${LLVM_V} > PKGNAME-lldb = lldb-${LLVM_V} > -REVISION-main = 6 > +REVISION-main = 7 > REVISION-lldb = 0 > CATEGORIES = devel > DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \ > Index: patches/patch-lib_MC_ELFObjectWriter_cpp > === > RCS file: patches/patch-lib_MC_ELFObjectWriter_cpp > diff -N patches/patch-lib_MC_ELFObjectWriter_cpp > --- /dev/null 1 Jan 1970 00:00:00 - > +++ patches/patch-lib_MC_ELFObjectWriter_cpp 22 Feb 2019 14:36:33 - > @@ -0,0 +1,34 @@ > +$OpenBSD$ > + > +[MC] Make symbol version errors non-fatal > + > +Index: lib/MC/ELFObjectWriter.cpp > +--- lib/MC/ELFObjectWriter.cpp.orig > lib/MC/ELFObjectWriter.cpp > +@@ -1258,14 +1258,20 @@ void > ELFObjectWriter::executePostLayoutBinding(MCAssem > + if (!Symbol.isUndefined() && !Rest.startswith("@@@")) > + continue; > + > +-// FIXME: produce a better error message. > ++// FIXME: Get source locations for these errors or diagnose them > earlier. > + if (Symbol.isUndefined() && Rest.startswith("@@") && > +-!Rest.startswith("@@@")) > +- report_fatal_error("A @@ version cannot be undefined"); > ++!Rest.startswith("@@@")) { > ++ Asm.getContext().reportError(SMLoc(), "versioned symbol " + AliasName > + > ++" must be defined"); > ++ continue; > ++} > + > +-if (Renames.count() && Renames[] != Alias) > +- report_fatal_error(llvm::Twine("Multiple symbol versions defined for > ") + > +- Symbol.getName()); > ++if (Renames.count() && Renames[] != Alias) { > ++ Asm.getContext().reportError( > ++ SMLoc(), llvm::Twine("multiple symbol versions defined for ") + > ++ Symbol.getName()); > ++ continue; > ++} > + > + Renames.insert(std::make_pair(, Alias)); > + } -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
UPDATE: LLVM
Merge in a diff from base: Improve the X86FixupGadgets pass Merge in a bug fix from upstream: [MC] Make symbol version errors non-fatal Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.213 diff -u -p -u -p -r1.213 Makefile --- Makefile20 Feb 2019 00:24:11 - 1.213 +++ Makefile22 Feb 2019 14:33:44 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =6 +REVISION-main =7 REVISION-lldb =0 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-lib_MC_ELFObjectWriter_cpp === RCS file: patches/patch-lib_MC_ELFObjectWriter_cpp diff -N patches/patch-lib_MC_ELFObjectWriter_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_MC_ELFObjectWriter_cpp22 Feb 2019 14:36:33 - @@ -0,0 +1,34 @@ +$OpenBSD$ + +[MC] Make symbol version errors non-fatal + +Index: lib/MC/ELFObjectWriter.cpp +--- lib/MC/ELFObjectWriter.cpp.orig lib/MC/ELFObjectWriter.cpp +@@ -1258,14 +1258,20 @@ void ELFObjectWriter::executePostLayoutBinding(MCAssem + if (!Symbol.isUndefined() && !Rest.startswith("@@@")) + continue; + +-// FIXME: produce a better error message. ++// FIXME: Get source locations for these errors or diagnose them earlier. + if (Symbol.isUndefined() && Rest.startswith("@@") && +-!Rest.startswith("@@@")) +- report_fatal_error("A @@ version cannot be undefined"); ++!Rest.startswith("@@@")) { ++ Asm.getContext().reportError(SMLoc(), "versioned symbol " + AliasName + ++" must be defined"); ++ continue; ++} + +-if (Renames.count() && Renames[] != Alias) +- report_fatal_error(llvm::Twine("Multiple symbol versions defined for ") + +- Symbol.getName()); ++if (Renames.count() && Renames[] != Alias) { ++ Asm.getContext().reportError( ++ SMLoc(), llvm::Twine("multiple symbol versions defined for ") + ++ Symbol.getName()); ++ continue; ++} + + Renames.insert(std::make_pair(, Alias)); + } Index: patches/patch-lib_Target_X86_X86FixupGadgets_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_Target_X86_X86FixupGadgets_cpp,v retrieving revision 1.2 diff -u -p -u -p -r1.2 patch-lib_Target_X86_X86FixupGadgets_cpp --- patches/patch-lib_Target_X86_X86FixupGadgets_cpp28 Jan 2019 06:27:28 - 1.2 +++ patches/patch-lib_Target_X86_X86FixupGadgets_cpp22 Feb 2019 19:20:40 - @@ -1,15 +1,16 @@ $OpenBSD: patch-lib_Target_X86_X86FixupGadgets_cpp,v 1.2 2019/01/28 06:27:28 jca Exp $ -Add a clang pass that identifies potential ROP gadgets and replaces ROP -friendly instructions with safe alternatives. This initial commit fixes -3 instruction forms that will lower to include a c3 (return) byte. -Additional problematic instructions can be fixed incrementally using -this framework. +- Add a clang pass that identifies potential ROP gadgets and replaces ROP + friendly instructions with safe alternatives. This initial commit fixes + 3 instruction forms that will lower to include a c3 (return) byte. + Additional problematic instructions can be fixed incrementally using + this framework. +- Improve the X86FixupGadgets pass Index: lib/Target/X86/X86FixupGadgets.cpp --- lib/Target/X86/X86FixupGadgets.cpp.orig +++ lib/Target/X86/X86FixupGadgets.cpp -@@ -0,0 +1,273 @@ +@@ -0,0 +1,720 @@ +//===-- X86FixupGadgets.cpp - Fixup Instructions that make ROP Gadgets ===// +// +// The LLVM Compiler Infrastructure @@ -47,10 +48,10 @@ Index: lib/Target/X86/X86FixupGadgets.cp + +#define DEBUG_TYPE FIXUPGADGETS_NAME + -+// Toggle with cc1 option: -backend-option -x86-fixup-gadgets= ++// Toggle with cc1 option: -mllvm -x86-fixup-gadgets= +static cl::opt FixupGadgets( -+"x86-fixup-gadgets", -+cl::desc("Replace ROP friendly instructions with alternatives"), ++"x86-fixup-gadgets", cl::Hidden, ++cl::desc("Replace ROP friendly instructions with safe alternatives"), +cl::init(true)); + +namespace { @@ -78,24 +79,33 @@ Index: lib/Target/X86/X86FixupGadgets.cp + const X86InstrInfo *TII; + const X86RegisterInfo *TRI; + bool Is64Bit; -+ enum InstrType { -+NoType = 0, -+OneGPRegC3, -+TwoGPRegC3, -+ThreeGPRegC3, -+ }; + -+ /// If an Instr has a ROP friendly construct, return it -+ InstrType isROPFriendly(MachineInstr ) const; ++ struct FixupInfo { ++unsigned op1; ++unsigned op2; ++bool fixup; ++bool align; ++ }; + -+ /// Helper functions for various kinds of instructions -+ bool
Re: UPDATE: LLVM
On Mon, Feb 18 2019, Brad Smith wrote: > Merge in bits from base.. > > - Merge LLVM commits r340844, r353818 and r353819 from the 8.0 branch > to fix a regression in floating point operations. > - When generating code for OpenBSD/powerpc, avoid unaligned floating-point > load and store instructions. > - Skip retguard instructions in prologue detection. > - When bsd.lib.mk builds shared libraries it builds with -DPIC which > causes problems in the following files which use PIC as a variable name. Committed, thanks. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
UPDATE: LLVM
Merge in bits from base.. - Merge LLVM commits r340844, r353818 and r353819 from the 8.0 branch to fix a regression in floating point operations. - When generating code for OpenBSD/powerpc, avoid unaligned floating-point load and store instructions. - Skip retguard instructions in prologue detection. - When bsd.lib.mk builds shared libraries it builds with -DPIC which causes problems in the following files which use PIC as a variable name. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.212 diff -u -p -u -p -r1.212 Makefile --- Makefile11 Feb 2019 05:33:57 - 1.212 +++ Makefile18 Feb 2019 19:33:06 - @@ -20,7 +20,8 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =5 +REVISION-main =6 +REVISION-lldb =0 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-include_llvm_Config_llvm-config_h_cmake === RCS file: patches/patch-include_llvm_Config_llvm-config_h_cmake diff -N patches/patch-include_llvm_Config_llvm-config_h_cmake --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-include_llvm_Config_llvm-config_h_cmake 18 Feb 2019 19:19:28 - @@ -0,0 +1,28 @@ +$OpenBSD$ + +When bsd.lib.mk builds shared libraries it builds with -DPIC which +causes problems in the following files which use PIC as a variable name. +Undefine PIC in llvm-config.h to minimise the diff to upstream LLVM. + +Index: include/llvm/Config/llvm-config.h.cmake +--- include/llvm/Config/llvm-config.h.cmake.orig include/llvm/Config/llvm-config.h.cmake +@@ -14,6 +14,18 @@ + #ifndef LLVM_CONFIG_H + #define LLVM_CONFIG_H + ++/* ++ * When bsd.lib.mk builds shared libraries it builds with -DPIC which ++ * causes problems in the following files which use PIC as a variable name. ++ * undefine PIC here to minimise the diff to upstream LLVM ++ * ++ * include/llvm/MC/MCObjectFileInfo.h ++ * lib/MC/MCObjectFileInfo.cpp ++ * lib/Transforms/Scalar/LICM.cpp ++ * lib/Transforms/Utils/PredicateInfo.cpp ++ */ ++#undef PIC ++ + /* Define if LLVM_ENABLE_DUMP is enabled */ + #cmakedefine LLVM_ENABLE_DUMP + Index: patches/patch-lib_Target_PowerPC_PPCISelLowering_cpp === RCS file: patches/patch-lib_Target_PowerPC_PPCISelLowering_cpp diff -N patches/patch-lib_Target_PowerPC_PPCISelLowering_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_PowerPC_PPCISelLowering_cpp18 Feb 2019 19:47:58 - @@ -0,0 +1,27 @@ +$OpenBSD$ + +When generating code for OpenBSD/powerpc, avoid unaligned floating-point +load and store instructions. The vast majority of PowerPC CPUs that +OpenBSD runs on don't implement those and will generate an alignment +exceptions. While we do emulate lfd and stfd (to work around GCC bugs), +we don't emulate lfs and stfs. It is way more efficient to have the +compiler generate code that only uses aligned load and store instructions. + +Index: lib/Target/PowerPC/PPCISelLowering.cpp +--- lib/Target/PowerPC/PPCISelLowering.cpp.orig lib/Target/PowerPC/PPCISelLowering.cpp +@@ -13921,6 +13921,14 @@ bool PPCTargetLowering::allowsMisalignedMemoryAccesses + if (VT == MVT::ppcf128) + return false; + ++ if (Subtarget.isTargetOpenBSD()) { ++// Traditional PowerPC does not support unaligned memory access ++// for floating-point and the OpenBSD kernel does not emulate ++// all possible floating-point load-store instructions. ++if (VT == MVT::f32 || VT == MVT::f64) ++ return false; ++ } ++ + if (Fast) + *Fast = true; + Index: patches/patch-lib_Target_PowerPC_PPCSubtarget_h === RCS file: patches/patch-lib_Target_PowerPC_PPCSubtarget_h diff -N patches/patch-lib_Target_PowerPC_PPCSubtarget_h --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_PowerPC_PPCSubtarget_h 18 Feb 2019 19:48:14 - @@ -0,0 +1,20 @@ +$OpenBSD$ + +When generating code for OpenBSD/powerpc, avoid unaligned floating-point +load and store instructions. The vast majority of PowerPC CPUs that +OpenBSD runs on don't implement those and will generate an alignment +exceptions. While we do emulate lfd and stfd (to work around GCC bugs), +we don't emulate lfs and stfs. It is way more efficient to have the +compiler generate code that only uses aligned load and store instructions. + +Index: lib/Target/PowerPC/PPCSubtarget.h +--- lib/Target/PowerPC/PPCSubtarget.h.orig lib/Target/PowerPC/PPCSubtarget.h +@@ -305,6 +305,7 @@ class PPCSubtarget : public PPCGenSubtargetInfo { (pub + bool isTargetELF() const { return
Re: UPDATE: LLVM
On 2/11/2019 7:44 PM, Jeremie Courreges-Anglas wrote: cc'ing Alexander who reported the bug in base and Patrick who commented on upstream's bugzilla... On Mon, Feb 11 2019, Brad Smith wrote: Pull in 3 patches for the X86 backend.. - [X86] Add FPSW as a Def on some FP instructions that were missing it. - [X86] Connect the default fpsr and dirflag clobbers in inline assembly to the registers we have defined for them. - [X86] Add FPCW as a register and start using it as an implicit use on floating point instructions. Resolves miscompilation of libm mentioned here.. https://marc.info/?l=openbsd-bugs=154896725914212=2 Thanks. Just to be clear, the bc testcase still fails with base from kern.version=OpenBSD 6.4-current (GENERIC.MP) #703: Sun Feb 10 20:20:49 MST 2019 but rebuilding libm and the testcase with the patched ports-clang fixes the issue. (I haven't done further tests.) https://bugs.llvm.org/show_bug.cgi?id=40206 says Craig Topper 2019-02-08 15:31:09 PST Fixed in r353489 So I don't know whether one of three commits are needed. Three, I guess? Anyway, this feels like it should go in base first. Alexander, Patrick, any opinion? https://marc.info/?l=freebsd-commits-all=154965032814190=2 I brought over the same bits FreeBSD did when backporting from trunk to 7. --78<-- Pull in 3 patches for the X86 backend.. - [X86] Add FPSW as a Def on some FP instructions that were missing it. - [X86] Connect the default fpsr and dirflag clobbers in inline assembly to the registers we have defined for them. - [X86] Add FPCW as a register and start using it as an implicit use on floating point instructions. Resolves miscompilation of libm mentioned here.. https://marc.info/?l=openbsd-bugs=154896725914212=2
Re: UPDATE: LLVM
cc'ing Alexander who reported the bug in base and Patrick who commented on upstream's bugzilla... On Mon, Feb 11 2019, Brad Smith wrote: > Pull in 3 patches for the X86 backend.. > > - [X86] Add FPSW as a Def on some FP instructions that were missing it. > - [X86] Connect the default fpsr and dirflag clobbers in inline > assembly to the registers we have defined for them. > - [X86] Add FPCW as a register and start using it as an implicit use on > floating point instructions. > > Resolves miscompilation of libm mentioned here.. > https://marc.info/?l=openbsd-bugs=154896725914212=2 Thanks. Just to be clear, the bc testcase still fails with base from kern.version=OpenBSD 6.4-current (GENERIC.MP) #703: Sun Feb 10 20:20:49 MST 2019 but rebuilding libm and the testcase with the patched ports-clang fixes the issue. (I haven't done further tests.) https://bugs.llvm.org/show_bug.cgi?id=40206 says Craig Topper 2019-02-08 15:31:09 PST Fixed in r353489 So I don't know whether one of three commits are needed. Three, I guess? Anyway, this feels like it should go in base first. Alexander, Patrick, any opinion? --8<-- Pull in 3 patches for the X86 backend.. - [X86] Add FPSW as a Def on some FP instructions that were missing it. - [X86] Connect the default fpsr and dirflag clobbers in inline assembly to the registers we have defined for them. - [X86] Add FPCW as a register and start using it as an implicit use on floating point instructions. Resolves miscompilation of libm mentioned here.. https://marc.info/?l=openbsd-bugs=154896725914212=2 Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.212 diff -u -p -u -p -r1.212 Makefile --- Makefile11 Feb 2019 05:33:57 - 1.212 +++ Makefile11 Feb 2019 06:42:57 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =5 +REVISION-main =6 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-lib_Target_X86_X86ISelLowering_cpp === RCS file: patches/patch-lib_Target_X86_X86ISelLowering_cpp diff -N patches/patch-lib_Target_X86_X86ISelLowering_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_X86_X86ISelLowering_cpp11 Feb 2019 06:19:24 - @@ -0,0 +1,29 @@ +$OpenBSD$ + +[X86] Connect the default fpsr and dirflag clobbers in inline +assembly to the registers we have defined for them. + +Index: lib/Target/X86/X86ISelLowering.cpp +--- lib/Target/X86/X86ISelLowering.cpp.orig lib/Target/X86/X86ISelLowering.cpp +@@ -40619,6 +40619,20 @@ X86TargetLowering::getRegForInlineAsmConstraint(const + return Res; + } + ++// dirflag -> DF ++if (StringRef("{dirflag}").equals_lower(Constraint)) { ++ Res.first = X86::DF; ++ Res.second = ::DFCCRRegClass; ++ return Res; ++} ++ ++// fpsr -> FPSW ++if (StringRef("{fpsr}").equals_lower(Constraint)) { ++ Res.first = X86::FPSW; ++ Res.second = ::FPCCRRegClass; ++ return Res; ++} ++ + // 'A' means [ER]AX + [ER]DX. + if (Constraint == "A") { + if (Subtarget.is64Bit()) { Index: patches/patch-lib_Target_X86_X86InstrFPStack_td === RCS file: patches/patch-lib_Target_X86_X86InstrFPStack_td diff -N patches/patch-lib_Target_X86_X86InstrFPStack_td --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_X86_X86InstrFPStack_td 11 Feb 2019 06:38:04 - @@ -0,0 +1,186 @@ +$OpenBSD$ + +- [X86] Add FPSW as a Def on some FP instructions that were missing it. +- [X86] Add FPCW as a register and start using it as an implicit use on floating + point instructions. + +Index: lib/Target/X86/X86InstrFPStack.td +--- lib/Target/X86/X86InstrFPStack.td.orig lib/Target/X86/X86InstrFPStack.td +@@ -230,7 +230,7 @@ def _FI32m : FPI<0xDA, fp, (outs), (ins i32mem:$src), + } // mayLoad = 1, hasSideEffects = 1 + } + +-let Defs = [FPSW] in { ++let Defs = [FPSW], Uses = [FPCW] in { + // FPBinary_rr just defines pseudo-instructions, no need to set a scheduling + // resources. + let hasNoSchedulingInfo = 1 in { +@@ -267,7 +267,7 @@ class FPrST0PInst + // NOTE: GAS and apparently all other AT style assemblers have a broken notion + // of some of the 'reverse' forms of the fsub and fdiv instructions. As such, + // we have to put some 'r's in and take them out of weird places. +-let SchedRW = [WriteFAdd] in { ++let SchedRW = [WriteFAdd], Defs = [FPSW], Uses = [FPCW] in { + def ADD_FST0r : FPST0rInst ; + def ADD_FrST0 : FPrST0Inst ; + def ADD_FPrST0 : FPrST0PInst; +@@ -278,16 +278,16 @@ def SUB_FST0r : FPST0rInst ; + def SUBR_FrST0 : FPrST0Inst
UPDATE: LLVM
Pull in 3 patches for the X86 backend.. - [X86] Add FPSW as a Def on some FP instructions that were missing it. - [X86] Connect the default fpsr and dirflag clobbers in inline assembly to the registers we have defined for them. - [X86] Add FPCW as a register and start using it as an implicit use on floating point instructions. Resolves miscompilation of libm mentioned here.. https://marc.info/?l=openbsd-bugs=154896725914212=2 Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.212 diff -u -p -u -p -r1.212 Makefile --- Makefile11 Feb 2019 05:33:57 - 1.212 +++ Makefile11 Feb 2019 06:42:57 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =5 +REVISION-main =6 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-lib_Target_X86_X86ISelLowering_cpp === RCS file: patches/patch-lib_Target_X86_X86ISelLowering_cpp diff -N patches/patch-lib_Target_X86_X86ISelLowering_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_X86_X86ISelLowering_cpp11 Feb 2019 06:19:24 - @@ -0,0 +1,29 @@ +$OpenBSD$ + +[X86] Connect the default fpsr and dirflag clobbers in inline +assembly to the registers we have defined for them. + +Index: lib/Target/X86/X86ISelLowering.cpp +--- lib/Target/X86/X86ISelLowering.cpp.orig lib/Target/X86/X86ISelLowering.cpp +@@ -40619,6 +40619,20 @@ X86TargetLowering::getRegForInlineAsmConstraint(const + return Res; + } + ++// dirflag -> DF ++if (StringRef("{dirflag}").equals_lower(Constraint)) { ++ Res.first = X86::DF; ++ Res.second = ::DFCCRRegClass; ++ return Res; ++} ++ ++// fpsr -> FPSW ++if (StringRef("{fpsr}").equals_lower(Constraint)) { ++ Res.first = X86::FPSW; ++ Res.second = ::FPCCRRegClass; ++ return Res; ++} ++ + // 'A' means [ER]AX + [ER]DX. + if (Constraint == "A") { + if (Subtarget.is64Bit()) { Index: patches/patch-lib_Target_X86_X86InstrFPStack_td === RCS file: patches/patch-lib_Target_X86_X86InstrFPStack_td diff -N patches/patch-lib_Target_X86_X86InstrFPStack_td --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_X86_X86InstrFPStack_td 11 Feb 2019 06:38:04 - @@ -0,0 +1,186 @@ +$OpenBSD$ + +- [X86] Add FPSW as a Def on some FP instructions that were missing it. +- [X86] Add FPCW as a register and start using it as an implicit use on floating + point instructions. + +Index: lib/Target/X86/X86InstrFPStack.td +--- lib/Target/X86/X86InstrFPStack.td.orig lib/Target/X86/X86InstrFPStack.td +@@ -230,7 +230,7 @@ def _FI32m : FPI<0xDA, fp, (outs), (ins i32mem:$src), + } // mayLoad = 1, hasSideEffects = 1 + } + +-let Defs = [FPSW] in { ++let Defs = [FPSW], Uses = [FPCW] in { + // FPBinary_rr just defines pseudo-instructions, no need to set a scheduling + // resources. + let hasNoSchedulingInfo = 1 in { +@@ -267,7 +267,7 @@ class FPrST0PInst + // NOTE: GAS and apparently all other AT style assemblers have a broken notion + // of some of the 'reverse' forms of the fsub and fdiv instructions. As such, + // we have to put some 'r's in and take them out of weird places. +-let SchedRW = [WriteFAdd] in { ++let SchedRW = [WriteFAdd], Defs = [FPSW], Uses = [FPCW] in { + def ADD_FST0r : FPST0rInst ; + def ADD_FrST0 : FPrST0Inst ; + def ADD_FPrST0 : FPrST0PInst; +@@ -278,16 +278,16 @@ def SUB_FST0r : FPST0rInst ; + def SUBR_FrST0 : FPrST0Inst ; + def SUBR_FPrST0 : FPrST0PInst; + } // SchedRW +-let SchedRW = [WriteFCom] in { ++let SchedRW = [WriteFCom], Defs = [FPSW], Uses = [FPCW] in { + def COM_FST0r : FPST0rInst ; + def COMP_FST0r : FPST0rInst ; + } // SchedRW +-let SchedRW = [WriteFMul] in { ++let SchedRW = [WriteFMul], Defs = [FPSW], Uses = [FPCW] in { + def MUL_FST0r : FPST0rInst ; + def MUL_FrST0 : FPrST0Inst ; + def MUL_FPrST0 : FPrST0PInst; + } // SchedRW +-let SchedRW = [WriteFDiv] in { ++let SchedRW = [WriteFDiv], Defs = [FPSW], Uses = [FPCW] in { + def DIVR_FST0r : FPST0rInst ; + def DIV_FrST0 : FPrST0Inst ; + def DIV_FPrST0 : FPrST0PInst; +@@ -307,7 +307,7 @@ def _Fp80 : FpI_<(outs RFP80:$dst), (ins RFP80:$src), + def _F : FPI<0xD9, fp, (outs), (ins), asmstring>; + } + +-let Defs = [FPSW] in { ++let Defs = [FPSW], Uses = [FPCW] in { + + let SchedRW = [WriteFSign] in { + defm CHS : FPUnary; +@@ -335,7 +335,7 @@ def TST_F : FPI<0xD9, MRM_E4, (outs), (ins), "ftst">; + + // Versions of FP instructions that take a single memory operand. Added for the + // disassembler; remove as they are included with patterns elsewhere. +-let SchedRW =
Re: UPDATE: LLVM
On Fri, Feb 08, 2019 at 06:31:41PM -0500, Brad Smith wrote: > On Mon, Feb 04, 2019 at 08:04:02PM -0500, Brad Smith wrote: > > Re-merge the -msave-args diff plus fix and add a diff to make use > > of pthread_get_name_np. > > Comment tweak with the pthread_get_name_np patch being commited upstream. And merge in the PowerPC long double fix from George now that it has been commited upstream. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.210 diff -u -p -u -p -r1.210 Makefile --- Makefile3 Feb 2019 18:29:48 - 1.210 +++ Makefile4 Feb 2019 22:22:21 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =3 +REVISION-main =4 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-include_llvm_BinaryFormat_Dwarf_def === RCS file: patches/patch-include_llvm_BinaryFormat_Dwarf_def diff -N patches/patch-include_llvm_BinaryFormat_Dwarf_def --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-include_llvm_BinaryFormat_Dwarf_def 5 Feb 2019 00:34:58 - @@ -0,0 +1,16 @@ +$OpenBSD: patch-include_llvm_BinaryFormat_Dwarf_def,v 1.1 2019/01/31 13:40:22 jca Exp $ + +implement -msave-args in clang/llvm, like the sun did for gcc + +Index: include/llvm/BinaryFormat/Dwarf.def +--- include/llvm/BinaryFormat/Dwarf.def.orig include/llvm/BinaryFormat/Dwarf.def +@@ -355,6 +355,8 @@ HANDLE_DW_AT(0x2133, GNU_addr_base, 0, GNU) + HANDLE_DW_AT(0x2134, GNU_pubnames, 0, GNU) + HANDLE_DW_AT(0x2135, GNU_pubtypes, 0, GNU) + HANDLE_DW_AT(0x2136, GNU_discriminator, 0, GNU) ++// Sun Extension ++HANDLE_DW_AT(0x2224, SUN_amd64_parmdump, 0, GNU) + // Borland extensions. + HANDLE_DW_AT(0x3b11, BORLAND_property_read, 0, BORLAND) + HANDLE_DW_AT(0x3b12, BORLAND_property_write, 0, BORLAND) Index: patches/patch-lib_Support_Unix_Threading_inc === RCS file: patches/patch-lib_Support_Unix_Threading_inc diff -N patches/patch-lib_Support_Unix_Threading_inc --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Support_Unix_Threading_inc7 Feb 2019 02:06:21 - @@ -0,0 +1,20 @@ +$OpenBSD$ + +Add OpenBSD support to be able to get the thread name + +Index: lib/Support/Unix/Threading.inc +--- lib/Support/Unix/Threading.inc.orig lib/Support/Unix/Threading.inc +@@ -203,6 +203,12 @@ void llvm::get_thread_name(SmallVectorImpl + ::pthread_getname_np(::pthread_self(), buf, len); + + Name.append(buf, buf + strlen(buf)); ++#elif defined(__OpenBSD__) ++ constexpr uint32_t len = get_max_thread_name_length_impl(); ++ char buf[len]; ++ ::pthread_get_name_np(::pthread_self(), buf, len); ++ ++ Name.append(buf, buf + strlen(buf)); + #elif defined(__linux__) + #if HAVE_PTHREAD_GETNAME_NP + constexpr uint32_t len = get_max_thread_name_length_impl(); Index: patches/patch-lib_Target_X86_X86FrameLowering_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_Target_X86_X86FrameLowering_cpp,v retrieving revision 1.5 diff -u -p -u -p -r1.5 patch-lib_Target_X86_X86FrameLowering_cpp --- patches/patch-lib_Target_X86_X86FrameLowering_cpp 3 Feb 2019 18:29:48 - 1.5 +++ patches/patch-lib_Target_X86_X86FrameLowering_cpp 5 Feb 2019 03:05:20 - @@ -1,4 +1,4 @@ -$OpenBSD: patch-lib_Target_X86_X86FrameLowering_cpp,v 1.5 2019/02/03 18:29:48 jca Exp $ +$OpenBSD: patch-lib_Target_X86_X86FrameLowering_cpp,v 1.4 2019/01/31 13:40:22 jca Exp $ - Add RETGUARD to clang for amd64. This security mechanism uses per-function random cookies to protect access to function return instructions, with the @@ -18,6 +18,7 @@ $OpenBSD: patch-lib_Target_X86_X86FrameL jumping into the instruction stream partway through other instructions. Work to remove these gadgets will continue through other mechanisms. - Refactor retguard to make adding additional arches easier. +- implement -msave-args in clang/llvm, like the sun did for gcc Index: lib/Target/X86/X86FrameLowering.cpp --- lib/Target/X86/X86FrameLowering.cpp.orig @@ -39,7 +40,153 @@ Index: lib/Target/X86/X86FrameLowering.c // Cache a bunch of frame-related predicates for this subtarget. SlotSize = TRI->getSlotSize(); Is64Bit = STI.is64Bit(); -@@ -3153,4 +3154,8 @@ void X86FrameLowering::processFunctionBeforeFrameFinal +@@ -47,6 +48,7 @@ X86FrameLowering::X86FrameLowering(const X86Subtarget + // standard x86_64 and NaCl use 64-bit frame/stack pointers, x32 - 32-bit. + Uses64BitFramePtr = STI.isTarget64BitLP64() || STI.isTargetNaCl64(); + StackPtr = TRI->getStackRegister(); ++ SaveArgs = Is64Bit ?
Re: UPDATE: LLVM
On Mon, Feb 04, 2019 at 08:04:02PM -0500, Brad Smith wrote: > Re-merge the -msave-args diff plus fix and add a diff to make use > of pthread_get_name_np. Comment tweak with the pthread_get_name_np patch being commited upstream. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.210 diff -u -p -u -p -r1.210 Makefile --- Makefile3 Feb 2019 18:29:48 - 1.210 +++ Makefile4 Feb 2019 22:22:21 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =3 +REVISION-main =4 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-include_llvm_BinaryFormat_Dwarf_def === RCS file: patches/patch-include_llvm_BinaryFormat_Dwarf_def diff -N patches/patch-include_llvm_BinaryFormat_Dwarf_def --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-include_llvm_BinaryFormat_Dwarf_def 5 Feb 2019 00:34:58 - @@ -0,0 +1,16 @@ +$OpenBSD: patch-include_llvm_BinaryFormat_Dwarf_def,v 1.1 2019/01/31 13:40:22 jca Exp $ + +implement -msave-args in clang/llvm, like the sun did for gcc + +Index: include/llvm/BinaryFormat/Dwarf.def +--- include/llvm/BinaryFormat/Dwarf.def.orig include/llvm/BinaryFormat/Dwarf.def +@@ -355,6 +355,8 @@ HANDLE_DW_AT(0x2133, GNU_addr_base, 0, GNU) + HANDLE_DW_AT(0x2134, GNU_pubnames, 0, GNU) + HANDLE_DW_AT(0x2135, GNU_pubtypes, 0, GNU) + HANDLE_DW_AT(0x2136, GNU_discriminator, 0, GNU) ++// Sun Extension ++HANDLE_DW_AT(0x2224, SUN_amd64_parmdump, 0, GNU) + // Borland extensions. + HANDLE_DW_AT(0x3b11, BORLAND_property_read, 0, BORLAND) + HANDLE_DW_AT(0x3b12, BORLAND_property_write, 0, BORLAND) Index: patches/patch-lib_Support_Unix_Threading_inc === RCS file: patches/patch-lib_Support_Unix_Threading_inc diff -N patches/patch-lib_Support_Unix_Threading_inc --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Support_Unix_Threading_inc7 Feb 2019 02:06:21 - @@ -0,0 +1,20 @@ +$OpenBSD$ + +Add OpenBSD support to be able to get the thread name + +Index: lib/Support/Unix/Threading.inc +--- lib/Support/Unix/Threading.inc.orig lib/Support/Unix/Threading.inc +@@ -203,6 +203,12 @@ void llvm::get_thread_name(SmallVectorImpl + ::pthread_getname_np(::pthread_self(), buf, len); + + Name.append(buf, buf + strlen(buf)); ++#elif defined(__OpenBSD__) ++ constexpr uint32_t len = get_max_thread_name_length_impl(); ++ char buf[len]; ++ ::pthread_get_name_np(::pthread_self(), buf, len); ++ ++ Name.append(buf, buf + strlen(buf)); + #elif defined(__linux__) + #if HAVE_PTHREAD_GETNAME_NP + constexpr uint32_t len = get_max_thread_name_length_impl(); Index: patches/patch-lib_Target_X86_X86FrameLowering_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_Target_X86_X86FrameLowering_cpp,v retrieving revision 1.5 diff -u -p -u -p -r1.5 patch-lib_Target_X86_X86FrameLowering_cpp --- patches/patch-lib_Target_X86_X86FrameLowering_cpp 3 Feb 2019 18:29:48 - 1.5 +++ patches/patch-lib_Target_X86_X86FrameLowering_cpp 5 Feb 2019 03:05:20 - @@ -1,4 +1,4 @@ -$OpenBSD: patch-lib_Target_X86_X86FrameLowering_cpp,v 1.5 2019/02/03 18:29:48 jca Exp $ +$OpenBSD: patch-lib_Target_X86_X86FrameLowering_cpp,v 1.4 2019/01/31 13:40:22 jca Exp $ - Add RETGUARD to clang for amd64. This security mechanism uses per-function random cookies to protect access to function return instructions, with the @@ -18,6 +18,7 @@ $OpenBSD: patch-lib_Target_X86_X86FrameL jumping into the instruction stream partway through other instructions. Work to remove these gadgets will continue through other mechanisms. - Refactor retguard to make adding additional arches easier. +- implement -msave-args in clang/llvm, like the sun did for gcc Index: lib/Target/X86/X86FrameLowering.cpp --- lib/Target/X86/X86FrameLowering.cpp.orig @@ -39,7 +40,153 @@ Index: lib/Target/X86/X86FrameLowering.c // Cache a bunch of frame-related predicates for this subtarget. SlotSize = TRI->getSlotSize(); Is64Bit = STI.is64Bit(); -@@ -3153,4 +3154,8 @@ void X86FrameLowering::processFunctionBeforeFrameFinal +@@ -47,6 +48,7 @@ X86FrameLowering::X86FrameLowering(const X86Subtarget + // standard x86_64 and NaCl use 64-bit frame/stack pointers, x32 - 32-bit. + Uses64BitFramePtr = STI.isTarget64BitLP64() || STI.isTargetNaCl64(); + StackPtr = TRI->getStackRegister(); ++ SaveArgs = Is64Bit ? STI.getSaveArgs() : 0; + } + + bool X86FrameLowering::hasReservedCallFrame(const MachineFunction ) const { +@@ -90,7 +92,8 @@ bool X86FrameLowering::hasFP(const
UPDATE: LLVM
Re-merge the -msave-args diff plus fix and add a diff to make use of pthread_get_name_np. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.210 diff -u -p -u -p -r1.210 Makefile --- Makefile3 Feb 2019 18:29:48 - 1.210 +++ Makefile4 Feb 2019 22:22:21 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =3 +REVISION-main =4 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-include_llvm_BinaryFormat_Dwarf_def === RCS file: patches/patch-include_llvm_BinaryFormat_Dwarf_def diff -N patches/patch-include_llvm_BinaryFormat_Dwarf_def --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-include_llvm_BinaryFormat_Dwarf_def 5 Feb 2019 00:34:58 - @@ -0,0 +1,16 @@ +$OpenBSD: patch-include_llvm_BinaryFormat_Dwarf_def,v 1.1 2019/01/31 13:40:22 jca Exp $ + +implement -msave-args in clang/llvm, like the sun did for gcc + +Index: include/llvm/BinaryFormat/Dwarf.def +--- include/llvm/BinaryFormat/Dwarf.def.orig include/llvm/BinaryFormat/Dwarf.def +@@ -355,6 +355,8 @@ HANDLE_DW_AT(0x2133, GNU_addr_base, 0, GNU) + HANDLE_DW_AT(0x2134, GNU_pubnames, 0, GNU) + HANDLE_DW_AT(0x2135, GNU_pubtypes, 0, GNU) + HANDLE_DW_AT(0x2136, GNU_discriminator, 0, GNU) ++// Sun Extension ++HANDLE_DW_AT(0x2224, SUN_amd64_parmdump, 0, GNU) + // Borland extensions. + HANDLE_DW_AT(0x3b11, BORLAND_property_read, 0, BORLAND) + HANDLE_DW_AT(0x3b12, BORLAND_property_write, 0, BORLAND) Index: patches/patch-lib_Support_Unix_Threading_inc === RCS file: patches/patch-lib_Support_Unix_Threading_inc diff -N patches/patch-lib_Support_Unix_Threading_inc --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Support_Unix_Threading_inc4 Feb 2019 22:28:22 - @@ -0,0 +1,20 @@ +$OpenBSD$ + +Make use of pthread_get_name_np() to retrieve the thread name. + +Index: lib/Support/Unix/Threading.inc +--- lib/Support/Unix/Threading.inc.orig lib/Support/Unix/Threading.inc +@@ -203,6 +203,12 @@ void llvm::get_thread_name(SmallVectorImpl + ::pthread_getname_np(::pthread_self(), buf, len); + + Name.append(buf, buf + strlen(buf)); ++#elif defined(__OpenBSD__) ++ constexpr uint32_t len = get_max_thread_name_length_impl(); ++ char buf[len]; ++ ::pthread_get_name_np(::pthread_self(), buf, len); ++ ++ Name.append(buf, buf + strlen(buf)); + #elif defined(__linux__) + #if HAVE_PTHREAD_GETNAME_NP + constexpr uint32_t len = get_max_thread_name_length_impl(); Index: patches/patch-lib_Target_X86_X86FrameLowering_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_Target_X86_X86FrameLowering_cpp,v retrieving revision 1.5 diff -u -p -u -p -r1.5 patch-lib_Target_X86_X86FrameLowering_cpp --- patches/patch-lib_Target_X86_X86FrameLowering_cpp 3 Feb 2019 18:29:48 - 1.5 +++ patches/patch-lib_Target_X86_X86FrameLowering_cpp 5 Feb 2019 00:34:58 - @@ -1,4 +1,4 @@ -$OpenBSD: patch-lib_Target_X86_X86FrameLowering_cpp,v 1.5 2019/02/03 18:29:48 jca Exp $ +$OpenBSD: patch-lib_Target_X86_X86FrameLowering_cpp,v 1.4 2019/01/31 13:40:22 jca Exp $ - Add RETGUARD to clang for amd64. This security mechanism uses per-function random cookies to protect access to function return instructions, with the @@ -18,6 +18,7 @@ $OpenBSD: patch-lib_Target_X86_X86FrameL jumping into the instruction stream partway through other instructions. Work to remove these gadgets will continue through other mechanisms. - Refactor retguard to make adding additional arches easier. +- implement -msave-args in clang/llvm, like the sun did for gcc Index: lib/Target/X86/X86FrameLowering.cpp --- lib/Target/X86/X86FrameLowering.cpp.orig @@ -39,7 +40,153 @@ Index: lib/Target/X86/X86FrameLowering.c // Cache a bunch of frame-related predicates for this subtarget. SlotSize = TRI->getSlotSize(); Is64Bit = STI.is64Bit(); -@@ -3153,4 +3154,8 @@ void X86FrameLowering::processFunctionBeforeFrameFinal +@@ -47,6 +48,7 @@ X86FrameLowering::X86FrameLowering(const X86Subtarget + // standard x86_64 and NaCl use 64-bit frame/stack pointers, x32 - 32-bit. + Uses64BitFramePtr = STI.isTarget64BitLP64() || STI.isTargetNaCl64(); + StackPtr = TRI->getStackRegister(); ++ SaveArgs = Is64Bit ? STI.getSaveArgs() : 0; + } + + bool X86FrameLowering::hasReservedCallFrame(const MachineFunction ) const { +@@ -90,7 +92,8 @@ bool X86FrameLowering::hasFP(const MachineFunction + MF.getInfo()->getForceFramePointer() || + MF.callsUnwindInit() || MF.hasEHFunclets() ||
Re: UPDATE: LLVM # -msave-args # lang/rust broken
On Sun, Feb 03 2019, Sebastien Marie wrote: > On Wed, Jan 30, 2019 at 05:29:53PM -0500, Brad Smith wrote: >> Pull in the save-args patch from base. > > with this llvm change, lang/rust is broken. it is not able to recompile > itself (`cd /usr/ports/lang/rust && make' fail). > > if I backout the change on devel/llvm, it build again. > (I am Cc dlg@ as the diff comes from base) > > error occurs at end of the build (in first steps, it uses bootstrapper > to build compiler, and later it will use the rustc binary it just > compiled, using llvm libs). > > example of errors: > - signal: 11, SIGSEGV: invalid memory reference > - rustc(71476) in free(): bogus pointer (double free?) 0x3c24548b44d88941 > - signal: 10, SIGBUS: access to undefined memory > - signal: 6, SIGABRT: process abort signal > > A build log is available at > https://exopi.bsdfrog.org/logs/latest/packages/rust-1.32.0p1.log > > it affects only amd64 and not i386 (for aarch64 I dunno). Sorry for the trouble, I have backed out the -msave-args addition in devel/llvm. Note to self: lang/rust is a very good testsuite for devel/llvm! -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: UPDATE: LLVM # -msave-args # lang/rust broken
On Wed, Jan 30, 2019 at 05:29:53PM -0500, Brad Smith wrote: > Pull in the save-args patch from base. with this llvm change, lang/rust is broken. it is not able to recompile itself (`cd /usr/ports/lang/rust && make' fail). if I backout the change on devel/llvm, it build again. (I am Cc dlg@ as the diff comes from base) error occurs at end of the build (in first steps, it uses bootstrapper to build compiler, and later it will use the rustc binary it just compiled, using llvm libs). example of errors: - signal: 11, SIGSEGV: invalid memory reference - rustc(71476) in free(): bogus pointer (double free?) 0x3c24548b44d88941 - signal: 10, SIGBUS: access to undefined memory - signal: 6, SIGABRT: process abort signal A build log is available at https://exopi.bsdfrog.org/logs/latest/packages/rust-1.32.0p1.log it affects only amd64 and not i386 (for aarch64 I dunno). Any help will be appreciate as I am unsure to have enough background to understand the changes introduced by -msave-args stuff. Some comments in the diff anyway. I will do some tests, but as it takes ages to rebuild llvm and rustc... Please note that rustc doesn't use -msave-args to my knowledge, so I am only looking at modified code path in general case. > Index: patches/patch-lib_Target_X86_X86FrameLowering_cpp > === > RCS file: > /home/cvs/ports/devel/llvm/patches/patch-lib_Target_X86_X86FrameLowering_cpp,v > retrieving revision 1.3 > diff -u -p -u -p -r1.3 patch-lib_Target_X86_X86FrameLowering_cpp > --- patches/patch-lib_Target_X86_X86FrameLowering_cpp 28 Jan 2019 06:27:28 > - 1.3 > +++ patches/patch-lib_Target_X86_X86FrameLowering_cpp 30 Jan 2019 19:27:30 > - > +@@ -1618,20 +1676,6 @@ void X86FrameLowering::emitEpilogue(MachineFunction > + } > + uint64_t SEHStackAllocAmt = NumBytes; > + > +- if (HasFP) { > +-// Pop EBP. > +-BuildMI(MBB, MBBI, DL, TII.get(Is64Bit ? X86::POP64r : X86::POP32r), > +-MachineFramePtr) > +-.setMIFlag(MachineInstr::FrameDestroy); > +-if (NeedsDwarfCFI) { > +- unsigned DwarfStackPtr = > +- TRI->getDwarfRegNum(Is64Bit ? X86::RSP : X86::ESP, true); > +- BuildCFI(MBB, MBBI, DL, MCCFIInstruction::createDefCfa( > +- nullptr, DwarfStackPtr, -SlotSize)); > +- --MBBI; > +-} > +- } > +- > + MachineBasicBlock::iterator FirstCSPop = MBBI; > + // Skip the callee-saved pop instructions. > + while (MBBI != MBB.begin()) { > +@@ -1701,6 +1745,28 @@ void X86FrameLowering::emitEpilogue(MachineFunction > + --MBBI; > + } > + > ++ if (HasFP) { > ++MBBI = Terminator; here, MBBI is explicitly assigned to Terminator. It wasn't the case before in this code path. Maybe it should be moved to `if (X86FI->getSaveArgSize())' case only ? > ++ > ++if (X86FI->getSaveArgSize()) { > ++ // LEAVE is effectively mov rbp,rsp; pop rbp > ++ BuildMI(MBB, MBBI, DL, TII.get(X86::LEAVE64), MachineFramePtr) > ++.setMIFlag(MachineInstr::FrameDestroy); > ++} else { > ++ // Pop EBP. > ++ BuildMI(MBB, MBBI, DL, TII.get(Is64Bit ? X86::POP64r : X86::POP32r), > ++ MachineFramePtr) > ++ .setMIFlag(MachineInstr::FrameDestroy); > ++} > ++if (NeedsDwarfCFI) { > ++ unsigned DwarfStackPtr = > ++ TRI->getDwarfRegNum(Is64Bit ? X86::RSP : X86::ESP, true); > ++ BuildCFI(MBB, MBBI, DL, MCCFIInstruction::createDefCfa( > ++ nullptr, DwarfStackPtr, -SlotSize)); > ++ --MBBI; > ++} > ++ } > ++ > + // Windows unwinder will not invoke function's exception handler if IP is > + // either in prologue or in epilogue. This behavior causes a problem > when a > + // call immediately precedes an epilogue, because the return address > points > +@@ -1789,6 +1855,8 @@ int X86FrameLowering::getFrameIndexReference(const Mac > +"FPDelta isn't aligned per the Win64 ABI!"); > + } > + > ++ if (FI >= 0) > ++Offset -= X86FI->getSaveArgSize(); > + > + if (TRI->hasBasePointer(MF)) { > + assert(HasFP && "VLAs and dynamic stack realign, but no FP?!"); > +@@ -3153,4 +3221,8 @@ void X86FrameLowering::processFunctionBeforeFrameFinal > addFrameReference(BuildMI(MBB, MBBI, DL, TII.get(X86::MOV64mi32)), > UnwindHelpFI) > .addImm(-2); -- Sebastien Marie
UPDATE: LLVM
Pull in the save-args patch from base. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.208 diff -u -p -u -p -r1.208 Makefile --- Makefile30 Jan 2019 07:36:06 - 1.208 +++ Makefile30 Jan 2019 17:15:57 - @@ -20,7 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =1 +REVISION-main =2 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-include_llvm_BinaryFormat_Dwarf_def === RCS file: patches/patch-include_llvm_BinaryFormat_Dwarf_def diff -N patches/patch-include_llvm_BinaryFormat_Dwarf_def --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-include_llvm_BinaryFormat_Dwarf_def 30 Jan 2019 19:26:16 - @@ -0,0 +1,16 @@ +$OpenBSD$ + +implement -msave-args in clang/llvm, like the sun did for gcc + +Index: include/llvm/BinaryFormat/Dwarf.def +--- include/llvm/BinaryFormat/Dwarf.def.orig include/llvm/BinaryFormat/Dwarf.def +@@ -355,6 +355,8 @@ HANDLE_DW_AT(0x2133, GNU_addr_base, 0, GNU) + HANDLE_DW_AT(0x2134, GNU_pubnames, 0, GNU) + HANDLE_DW_AT(0x2135, GNU_pubtypes, 0, GNU) + HANDLE_DW_AT(0x2136, GNU_discriminator, 0, GNU) ++// Sun Extension ++HANDLE_DW_AT(0x2224, SUN_amd64_parmdump, 0, GNU) + // Borland extensions. + HANDLE_DW_AT(0x3b11, BORLAND_property_read, 0, BORLAND) + HANDLE_DW_AT(0x3b12, BORLAND_property_write, 0, BORLAND) Index: patches/patch-lib_Target_X86_X86FrameLowering_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_Target_X86_X86FrameLowering_cpp,v retrieving revision 1.3 diff -u -p -u -p -r1.3 patch-lib_Target_X86_X86FrameLowering_cpp --- patches/patch-lib_Target_X86_X86FrameLowering_cpp 28 Jan 2019 06:27:28 - 1.3 +++ patches/patch-lib_Target_X86_X86FrameLowering_cpp 30 Jan 2019 19:27:30 - @@ -18,6 +18,7 @@ $OpenBSD: patch-lib_Target_X86_X86FrameL jumping into the instruction stream partway through other instructions. Work to remove these gadgets will continue through other mechanisms. - Refactor retguard to make adding additional arches easier. +- implement -msave-args in clang/llvm, like the sun did for gcc Index: lib/Target/X86/X86FrameLowering.cpp --- lib/Target/X86/X86FrameLowering.cpp.orig @@ -39,7 +40,153 @@ Index: lib/Target/X86/X86FrameLowering.c // Cache a bunch of frame-related predicates for this subtarget. SlotSize = TRI->getSlotSize(); Is64Bit = STI.is64Bit(); -@@ -3153,4 +3154,8 @@ void X86FrameLowering::processFunctionBeforeFrameFinal +@@ -47,6 +48,7 @@ X86FrameLowering::X86FrameLowering(const X86Subtarget + // standard x86_64 and NaCl use 64-bit frame/stack pointers, x32 - 32-bit. + Uses64BitFramePtr = STI.isTarget64BitLP64() || STI.isTargetNaCl64(); + StackPtr = TRI->getStackRegister(); ++ SaveArgs = Is64Bit ? STI.getSaveArgs() : 0; + } + + bool X86FrameLowering::hasReservedCallFrame(const MachineFunction ) const { +@@ -90,7 +92,8 @@ bool X86FrameLowering::hasFP(const MachineFunction + MF.getInfo()->getForceFramePointer() || + MF.callsUnwindInit() || MF.hasEHFunclets() || MF.callsEHReturn() || + MFI.hasStackMap() || MFI.hasPatchPoint() || +- MFI.hasCopyImplyingStackAdjustment()); ++ MFI.hasCopyImplyingStackAdjustment() || ++ SaveArgs); + } + + static unsigned getSUBriOpcode(unsigned IsLP64, int64_t Imm) { +@@ -871,6 +874,24 @@ void X86FrameLowering::BuildStackAlignAND(MachineBasic + MI->getOperand(3).setIsDead(); + } + ++// FIXME: Get this from tablegen. ++static ArrayRef get64BitArgumentGPRs(CallingConv::ID CallConv, ++const X86Subtarget ) { ++ assert(Subtarget.is64Bit()); ++ ++ if (Subtarget.isCallingConvWin64(CallConv)) { ++static const MCPhysReg GPR64ArgRegsWin64[] = { ++ X86::RCX, X86::RDX, X86::R8, X86::R9 ++}; ++return makeArrayRef(std::begin(GPR64ArgRegsWin64), std::end(GPR64ArgRegsWin64)); ++ } ++ ++ static const MCPhysReg GPR64ArgRegs64Bit[] = { ++X86::RDI, X86::RSI, X86::RDX, X86::RCX, X86::R8, X86::R9 ++ }; ++ return makeArrayRef(std::begin(GPR64ArgRegs64Bit), std::end(GPR64ArgRegs64Bit)); ++} ++ + /// emitPrologue - Push callee-saved registers onto the stack, which + /// automatically adjust the stack pointer. Adjust the stack pointer to allocate + /// space for local variables. Also emit labels used by the exception handler to +@@ -1153,6 +1174,43 @@ void X86FrameLowering::emitPrologue(MachineFunction + nullptr, DwarfFramePtr)); + } + ++ if (SaveArgs && !Fn.arg_empty()) { ++ArrayRef GPRs = ++
Re: UPDATE: LLVM
On Mon, Jan 28 2019, Brad Smith wrote: > On Mon, Jan 28, 2019 at 03:38:38AM -0500, Brad Smith wrote: >> Merge in the other bits I had in the last diff I posted. >> >> - Simplify a patch >> - Add -z interpose >> - 4 patches from patrick's tree for Clang/lld > > And the i386 lld fix. Thanks, will test and commit. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: UPDATE: LLVM
On Mon, Jan 28, 2019 at 03:38:38AM -0500, Brad Smith wrote: > Merge in the other bits I had in the last diff I posted. > > - Simplify a patch > - Add -z interpose > - 4 patches from patrick's tree for Clang/lld And the i386 lld fix. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.206 diff -u -p -u -p -r1.206 Makefile --- Makefile28 Jan 2019 06:27:28 - 1.206 +++ Makefile28 Jan 2019 08:15:46 - @@ -20,6 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} +REVISION-main =0 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-lib_MC_MCParser_AsmParser_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_MC_MCParser_AsmParser_cpp,v retrieving revision 1.5 diff -u -p -u -p -r1.5 patch-lib_MC_MCParser_AsmParser_cpp --- patches/patch-lib_MC_MCParser_AsmParser_cpp 28 Jan 2019 06:27:28 - 1.5 +++ patches/patch-lib_MC_MCParser_AsmParser_cpp 28 Jan 2019 08:08:50 - @@ -11,22 +11,14 @@ a file directive. Index: lib/MC/MCParser/AsmParser.cpp --- lib/MC/MCParser/AsmParser.cpp.orig +++ lib/MC/MCParser/AsmParser.cpp -@@ -858,6 +858,8 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No - AsmCond StartingCondState = TheCondState; - SmallVector AsmStrRewrites; - -+ StringRef Filename = getContext().getMainFileName(); -+ - // If we are generating dwarf for assembly source files save the initial text - // section. (Don't use enabledGenDwarfForAssembly() here, as we aren't - // emitting any actual debug info yet and haven't had a chance to parse any -@@ -873,6 +875,9 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No - assert(InsertResult && ".text section should not have debug info yet"); +@@ -874,6 +874,10 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No (void)InsertResult; } -+ + ++ StringRef Filename = getContext().getMainFileName(); + if (!Filename.empty() && (Filename.compare(StringRef("-")) != 0)) +Out.EmitFileDirective(Filename); - ++ // While we have input, parse each statement. while (Lexer.isNot(AsmToken::Eof)) { + ParseStatementInfo Info(); Index: patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp,v retrieving revision 1.7 diff -u -p -u -p -r1.7 patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp --- patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 28 Jan 2019 06:27:28 - 1.7 +++ patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 28 Jan 2019 08:09:12 - @@ -162,7 +162,7 @@ Index: tools/clang/lib/Driver/ToolChains + case ToolChain::CST_Libcxx: +CmdArgs.push_back(Profiling ? "-lc++_p" : "-lc++"); +CmdArgs.push_back(Profiling ? "-lc++abi_p" : "-lc++abi"); -+CmdArgs.push_back("-lpthread"); ++CmdArgs.push_back(Profiling ? "-lpthread_p" : "-lpthread"); +break; + case ToolChain::CST_Libstdcxx: +CmdArgs.push_back("-lestdc++"); Index: patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp === RCS file: patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp diff -N patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp 28 Jan 2019 08:06:37 - @@ -0,0 +1,20 @@ +$OpenBSD$ + +Index: tools/clang/lib/Frontend/InitHeaderSearch.cpp +--- tools/clang/lib/Frontend/InitHeaderSearch.cpp.orig tools/clang/lib/Frontend/InitHeaderSearch.cpp +@@ -431,14 +431,6 @@ void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths + case llvm::Triple::DragonFly: + AddPath("/usr/include/c++/5.0", CXXSystem, false); + break; +- case llvm::Triple::OpenBSD: { +-std::string t = triple.getTriple(); +-if (t.substr(0, 6) == "x86_64") +- t.replace(0, 6, "amd64"); +-AddGnuCPlusPlusIncludePaths("/usr/include/g++", +-t, "", "", triple); +-break; +- } + case llvm::Triple::Minix: + AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3", + "", "", "", triple); Index: patches/patch-tools_lld_ELF_Config_h === RCS file: patches/patch-tools_lld_ELF_Config_h diff -N patches/patch-tools_lld_ELF_Config_h --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_lld_ELF_Config_h28 Jan 2019 08:09:41 - @@ -0,0 +1,15 @@ +$OpenBSD$ + +lld: add -z interpose support + +Index:
UPDATE: LLVM
Merge in the other bits I had in the last diff I posted. - Simplify a patch - Add -z interpose - 4 patches from patrick's tree for Clang/lld Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.206 diff -u -p -u -p -r1.206 Makefile --- Makefile28 Jan 2019 06:27:28 - 1.206 +++ Makefile28 Jan 2019 08:01:05 - @@ -20,6 +20,7 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} +REVISION-main =0 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ Index: patches/patch-lib_MC_MCParser_AsmParser_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_MC_MCParser_AsmParser_cpp,v retrieving revision 1.5 diff -u -p -u -p -r1.5 patch-lib_MC_MCParser_AsmParser_cpp --- patches/patch-lib_MC_MCParser_AsmParser_cpp 28 Jan 2019 06:27:28 - 1.5 +++ patches/patch-lib_MC_MCParser_AsmParser_cpp 28 Jan 2019 08:08:50 - @@ -11,22 +11,14 @@ a file directive. Index: lib/MC/MCParser/AsmParser.cpp --- lib/MC/MCParser/AsmParser.cpp.orig +++ lib/MC/MCParser/AsmParser.cpp -@@ -858,6 +858,8 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No - AsmCond StartingCondState = TheCondState; - SmallVector AsmStrRewrites; - -+ StringRef Filename = getContext().getMainFileName(); -+ - // If we are generating dwarf for assembly source files save the initial text - // section. (Don't use enabledGenDwarfForAssembly() here, as we aren't - // emitting any actual debug info yet and haven't had a chance to parse any -@@ -873,6 +875,9 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No - assert(InsertResult && ".text section should not have debug info yet"); +@@ -874,6 +874,10 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No (void)InsertResult; } -+ + ++ StringRef Filename = getContext().getMainFileName(); + if (!Filename.empty() && (Filename.compare(StringRef("-")) != 0)) +Out.EmitFileDirective(Filename); - ++ // While we have input, parse each statement. while (Lexer.isNot(AsmToken::Eof)) { + ParseStatementInfo Info(); Index: patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp,v retrieving revision 1.7 diff -u -p -u -p -r1.7 patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp --- patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 28 Jan 2019 06:27:28 - 1.7 +++ patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 28 Jan 2019 08:09:12 - @@ -162,7 +162,7 @@ Index: tools/clang/lib/Driver/ToolChains + case ToolChain::CST_Libcxx: +CmdArgs.push_back(Profiling ? "-lc++_p" : "-lc++"); +CmdArgs.push_back(Profiling ? "-lc++abi_p" : "-lc++abi"); -+CmdArgs.push_back("-lpthread"); ++CmdArgs.push_back(Profiling ? "-lpthread_p" : "-lpthread"); +break; + case ToolChain::CST_Libstdcxx: +CmdArgs.push_back("-lestdc++"); Index: patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp === RCS file: patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp diff -N patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp 28 Jan 2019 08:06:37 - @@ -0,0 +1,20 @@ +$OpenBSD$ + +Index: tools/clang/lib/Frontend/InitHeaderSearch.cpp +--- tools/clang/lib/Frontend/InitHeaderSearch.cpp.orig tools/clang/lib/Frontend/InitHeaderSearch.cpp +@@ -431,14 +431,6 @@ void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths + case llvm::Triple::DragonFly: + AddPath("/usr/include/c++/5.0", CXXSystem, false); + break; +- case llvm::Triple::OpenBSD: { +-std::string t = triple.getTriple(); +-if (t.substr(0, 6) == "x86_64") +- t.replace(0, 6, "amd64"); +-AddGnuCPlusPlusIncludePaths("/usr/include/g++", +-t, "", "", triple); +-break; +- } + case llvm::Triple::Minix: + AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3", + "", "", "", triple); Index: patches/patch-tools_lld_ELF_Config_h === RCS file: patches/patch-tools_lld_ELF_Config_h diff -N patches/patch-tools_lld_ELF_Config_h --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_lld_ELF_Config_h28 Jan 2019 08:09:41 - @@ -0,0 +1,15 @@ +$OpenBSD$ + +lld: add -z interpose support + +Index: tools/lld/ELF/Config.h +--- tools/lld/ELF/Config.h.orig tools/lld/ELF/Config.h +@@ -182,6 +182,7 @@
Re: UPDATE: LLVM
On 1/13/2019 3:32 PM, Jeremie Courreges-Anglas wrote: On Sun, Jan 13 2019, Brad Smith wrote: Sync in bits from base. Thanks, tests ongoing. While here: I plan to work on an update to llvm-7.0.1 soonish (like, in the next couple of days). If you or other folks already have a diff, please let me know. :) I have had a diff in my tree for awhile but I would have to update / re-merge it. Last time I was playing around the compiler was crashing and I think it was something from base that was causing the crashing, but at the time I didn't spend anytime looking into it. It was more so to see how far I could get merging patches and getting it to build as a first step.
Re: UPDATE: LLVM
On Sun, Jan 13 2019, Brad Smith wrote: > Sync in bits from base. Thanks, tests ongoing. While here: I plan to work on an update to llvm-7.0.1 soonish (like, in the next couple of days). If you or other folks already have a diff, please let me know. :) -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
UPDATE: LLVM
Sync in bits from base. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.204 diff -u -p -u -p -r1.204 Makefile --- Makefile5 Jan 2019 11:38:49 - 1.204 +++ Makefile12 Jan 2019 00:30:58 - @@ -20,9 +20,9 @@ PKGSPEC-main =llvm-=${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} PKGNAME-lldb = lldb-${LLVM_V} -REVISION-main =22 -REVISION-python = 4 -REVISION-lldb =1 +REVISION-main =23 +REVISION-python = 5 +REVISION-lldb =2 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ @@ -87,6 +87,15 @@ CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool= -DLLVM_BUILD_LLVM_DYLIB:Bool=True \ -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND \ -DBacktrace_LIBRARY='' + +# Disable some protections in the compiler to regain performance +.if ${MACHINE_ARCH} == "aarch64" || ${MACHINE_ARCH} == "amd64" || \ +${MACHINE_ARCH} == "i386" +CXXFLAGS +=-fno-ret-protector +.endif +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" +CXXFLAGS +=-mno-retpoline +.endif # Workaround relocation overflow .if ${MACHINE_ARCH} == "powerpc" Index: patches/patch-lib_Target_X86_X86Subtarget_cpp === RCS file: patches/patch-lib_Target_X86_X86Subtarget_cpp diff -N patches/patch-lib_Target_X86_X86Subtarget_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_X86_X86Subtarget_cpp 13 Jan 2019 19:37:30 - @@ -0,0 +1,22 @@ +$OpenBSD$ + +Turn on -mretpoline by default in clang on amd64. + +Index: lib/Target/X86/X86Subtarget.cpp +--- lib/Target/X86/X86Subtarget.cpp.orig lib/Target/X86/X86Subtarget.cpp +@@ -207,6 +207,14 @@ void X86Subtarget::initSubtargetFeatures(StringRef CPU + FullFS = "+sahf"; + } + ++ // OpenBSD/amd64 defaults to -mretpoline. ++ if (isTargetOpenBSD() && In64BitMode) { ++if (!FullFS.empty()) ++ FullFS = "+retpoline," + FullFS; ++else ++ FullFS = "+retpoline"; ++ } ++ + // Parse features string and set the CPU. + ParseSubtargetFeatures(CPUName, FullFS); + Index: patches/patch-lib_Target_X86_X86Subtarget_h === RCS file: patches/patch-lib_Target_X86_X86Subtarget_h diff -N patches/patch-lib_Target_X86_X86Subtarget_h --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_X86_X86Subtarget_h 13 Jan 2019 19:37:40 - @@ -0,0 +1,15 @@ +$OpenBSD$ + +Turn on -mretpoline by default in clang on amd64. + +Index: lib/Target/X86/X86Subtarget.h +--- lib/Target/X86/X86Subtarget.h.orig lib/Target/X86/X86Subtarget.h +@@ -603,6 +603,7 @@ class X86Subtarget final : public X86GenSubtargetInfo + + bool isTargetDarwin() const { return TargetTriple.isOSDarwin(); } + bool isTargetFreeBSD() const { return TargetTriple.isOSFreeBSD(); } ++ bool isTargetOpenBSD() const { return TargetTriple.isOSOpenBSD(); } + bool isTargetDragonFly() const { return TargetTriple.isOSDragonFly(); } + bool isTargetSolaris() const { return TargetTriple.isOSSolaris(); } + bool isTargetPS4() const { return TargetTriple.isPS4CPU(); } Index: patches/patch-tools_clang_include_clang_Analysis_Analyses_FormatString_h === RCS file: patches/patch-tools_clang_include_clang_Analysis_Analyses_FormatString_h diff -N patches/patch-tools_clang_include_clang_Analysis_Analyses_FormatString_h --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_clang_include_clang_Analysis_Analyses_FormatString_h 12 Jan 2019 22:57:25 - @@ -0,0 +1,22 @@ +$OpenBSD$ + +The %b printf extension in the kernel is not fixed to a int type. On sparc64 +there are various %llb formats. Adjust the code to handle the length specifiers +and type check like it is used by the regular case. + +Index: tools/clang/include/clang/Analysis/Analyses/FormatString.h +--- tools/clang/include/clang/Analysis/Analyses/FormatString.h.orig tools/clang/include/clang/Analysis/Analyses/FormatString.h +@@ -227,8 +227,10 @@ class ConversionSpecifier { (public) + + bool isIntArg() const { return (kind >= IntArgBeg && kind <= IntArgEnd) || + kind == FreeBSDrArg || kind == FreeBSDyArg; } +- bool isUIntArg() const { return kind >= UIntArgBeg && kind <= UIntArgEnd; } +- bool isAnyIntArg() const { return kind >= IntArgBeg && kind <= UIntArgEnd; } ++ bool isUIntArg() const { return (kind >= UIntArgBeg && kind <= UIntArgEnd) || ++kind == FreeBSDbArg; } ++ bool isAnyIntArg() const { return (kind >= IntArgBeg && kind <= UIntArgEnd) || ++kind == FreeBSDbArg; } + bool isDoubleArg() const { + return kind >= DoubleArgBeg && kind <= DoubleArgEnd; + } Index:
Re: update llvm to 4.0.0
On (2017-03-14 18:50), Antoine Jacoutot wrote: > It's been updated minutes before I got your mail :) > Could you provide a diff to the intree version ? Haha, sure: Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.138 diff -u -p -u -r1.138 Makefile --- Makefile14 Mar 2017 17:29:45 - 1.138 +++ Makefile14 Mar 2017 17:56:34 - @@ -20,6 +20,7 @@ CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ lld-${LLVM_V}.src${EXTRACT_SUFX} +DIST_SUBDIR = llvm MASTER_SITES = http://www.llvm.org/releases/${LLVM_V}/ EXTRACT_SUFX = .tar.xz Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.21 diff -u -p -u -r1.21 distinfo --- distinfo14 Mar 2017 17:29:45 - 1.21 +++ distinfo14 Mar 2017 17:56:34 - @@ -1,6 +1,6 @@ -SHA256 (cfe-4.0.0.src.tar.xz) = zqX4jr3bMOKWyokTDIO51GwtgzaF4pEjA8goBUxNyYo= -SHA256 (lld-4.0.0.src.tar.xz) = M+BkV7nOBWPImxHMx8yr+c/3G4NXGYWlv4aEyRUOdQI= -SHA256 (llvm-4.0.0.src.tar.xz) = jRBRHfluc7j/nnq7+01NQy7b2+ll8fTwevrzcLilM74= -SIZE (cfe-4.0.0.src.tar.xz) = 10900916 -SIZE (lld-4.0.0.src.tar.xz) = 592728 -SIZE (llvm-4.0.0.src.tar.xz) = 21016340 +SHA256 (llvm/cfe-4.0.0.src.tar.xz) = zqX4jr3bMOKWyokTDIO51GwtgzaF4pEjA8goBUxNyYo= +SHA256 (llvm/lld-4.0.0.src.tar.xz) = M+BkV7nOBWPImxHMx8yr+c/3G4NXGYWlv4aEyRUOdQI= +SHA256 (llvm/llvm-4.0.0.src.tar.xz) = jRBRHfluc7j/nnq7+01NQy7b2+ll8fTwevrzcLilM74= +SIZE (llvm/cfe-4.0.0.src.tar.xz) = 10900916 +SIZE (llvm/lld-4.0.0.src.tar.xz) = 592728 +SIZE (llvm/llvm-4.0.0.src.tar.xz) = 21016340
Re: update llvm to 4.0.0
On March 14, 2017 6:46:17 PM GMT+01:00, Robert Nagywrote: >Hi > >This diff updates llvm to 4.0.0 in ports. I've also changed the port to >use the official distfiles instead of our own crafted one, because I >prefer it this way. > >Index: Makefile >=== >RCS file: /cvs/ports/devel/llvm/Makefile,v >retrieving revision 1.137 >diff -u -p -u -r1.137 Makefile >--- Makefile 1 Mar 2017 08:55:28 - 1.137 >+++ Makefile 14 Mar 2017 17:45:37 - >@@ -11,16 +11,18 @@ MULTI_PACKAGES = -main -python >COMMENT-main = modular, fast C/C++/ObjC compiler, static analyzer and >tools > COMMENT-python = Python bindings for Clang > >-LLVM_V = 4.0.0rc2 >+LLVM_V = 4.0.0 > DISTNAME =llvm-${LLVM_V}.src > PKGNAME = llvm-${LLVM_V} > PKGNAME-main =llvm-${LLVM_V} > PKGNAME-python = py-llvm-${LLVM_V} >-REVISION-main = 4 > CATEGORIES = devel >-DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} >-MASTER_SITES =http://comstyle.com/source/ >+DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \ >+ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ >+ lld-${LLVM_V}.src${EXTRACT_SUFX} >+MASTER_SITES =http://releases.llvm.org/${LLVM_V}/ > EXTRACT_SUFX =.tar.xz >+DIST_SUBDIR = llvm > > SHARED_LIBS = clang 5.0 \ > LTO 2.0 >@@ -86,6 +88,10 @@ GCC_CONFIG =${MACHINE_ARCH}-unknown-op > .endif > CLANG_INCLUDE_PATH = lib/clang/${LLVM_V:S/rc2//}/include > SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V GCC_VER GCC_CONFIG >+ >+post-extract: >+ @mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKSRC}/tools/clang >+ @mv ${WRKDIR}/lld-${LLVM_V}.src ${WRKSRC}/tools/lld > > pre-configure: > @${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains.cpp \ >Index: distinfo >=== >RCS file: /cvs/ports/devel/llvm/distinfo,v >retrieving revision 1.20 >diff -u -p -u -r1.20 distinfo >--- distinfo 10 Feb 2017 09:37:43 - 1.20 >+++ distinfo 14 Mar 2017 17:45:37 - >@@ -1,2 +1,6 @@ >-SHA256 (llvm-4.0.0rc2.src.tar.xz) = >dPSlLc7j5BTaUNB2sugoQMRRI66n4/PC1WmFyzOrk1g= >-SIZE (llvm-4.0.0rc2.src.tar.xz) = 30756712 >+SHA256 (llvm/cfe-4.0.0.src.tar.xz) = >zqX4jr3bMOKWyokTDIO51GwtgzaF4pEjA8goBUxNyYo= >+SHA256 (llvm/lld-4.0.0.src.tar.xz) = >M+BkV7nOBWPImxHMx8yr+c/3G4NXGYWlv4aEyRUOdQI= >+SHA256 (llvm/llvm-4.0.0.src.tar.xz) = >jRBRHfluc7j/nnq7+01NQy7b2+ll8fTwevrzcLilM74= >+SIZE (llvm/cfe-4.0.0.src.tar.xz) = 10900916 >+SIZE (llvm/lld-4.0.0.src.tar.xz) = 592728 >+SIZE (llvm/llvm-4.0.0.src.tar.xz) = 21016340 >Index: patches/patch-tools_clang_lib_Driver_Tools_cpp >=== >RCS file: >/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp,v >retrieving revision 1.39 >diff -u -p -u -r1.39 patch-tools_clang_lib_Driver_Tools_cpp >--- patches/patch-tools_clang_lib_Driver_Tools_cpp 20 Feb 2017 07:04:00 >- 1.39 >+++ patches/patch-tools_clang_lib_Driver_Tools_cpp 14 Mar 2017 17:45:37 >- >@@ -1,4 +1,4 @@ >-$OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.39 2017/02/20 >07:04:00 ajacoutot Exp $ >+$OpenBSD$ > > - Select proper SPARCv9 variant for the external assembler > - For now, force soft-float on ARM >@@ -8,8 +8,8 @@ $OpenBSD: patch-tools_clang_lib_Driver_T > - Always use --eh-frame-hdr on OpenBSD, even for -static > - Link static PIE programs against rcrt0.o on OpenBSD > > tools/clang/lib/Driver/Tools.cpp.orig Wed Feb 8 20:35:18 2017 >-+++ tools/clang/lib/Driver/Tools.cpp Sun Feb 19 17:41:04 2017 >+--- tools/clang/lib/Driver/Tools.cpp.orig Tue Feb 21 20:11:22 2017 > tools/clang/lib/Driver/Tools.cpp Tue Mar 14 17:35:43 2017 >@@ -79,7 +79,7 @@ static const char *getSparcAsmModeForCPU(StringRef >Nam >.Case("niagara2", "-Av9b") >.Case("niagara3", "-Av9d") >@@ -101,18 +101,7 @@ $OpenBSD: patch-tools_clang_lib_Driver_T > CmdArgs.push_back("-Bdynamic"); > if (Args.hasArg(options::OPT_shared)) { >CmdArgs.push_back("-shared"); >-@@ -8937,6 +8950,10 @@ void openbsd::Linker::ConstructJob(Compilation >, con >- if (Args.hasArg(options::OPT_pg)) >- CmdArgs.push_back( >- >Args.MakeArgString(getToolChain().GetFilePath("gcrt0.o"))); >-+ else if (Args.hasArg(options::OPT_static) && >-+ !Args.hasArg(options::OPT_nopie)) >-+CmdArgs.push_back( >-+ >Args.MakeArgString(getToolChain().GetFilePath("rcrt0.o"))); >- else >- CmdArgs.push_back( >- >Args.MakeArgString(getToolChain().GetFilePath("crt0.o"))); >-@@ -8948,15 +8965,17 @@ void openbsd::Linker::ConstructJob(Compilation >, con >+@@ -8952,12 +8965,6 @@ void openbsd::Linker::ConstructJob(Compilation >, con > } >} > >@@ -125,6 +114,21 @@ $OpenBSD: patch-tools_clang_lib_Driver_T >Args.AddAllArgs(CmdArgs,
update llvm to 4.0.0
Hi This diff updates llvm to 4.0.0 in ports. I've also changed the port to use the official distfiles instead of our own crafted one, because I prefer it this way. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.137 diff -u -p -u -r1.137 Makefile --- Makefile1 Mar 2017 08:55:28 - 1.137 +++ Makefile14 Mar 2017 17:45:37 - @@ -11,16 +11,18 @@ MULTI_PACKAGES =-main -python COMMENT-main = modular, fast C/C++/ObjC compiler, static analyzer and tools COMMENT-python = Python bindings for Clang -LLVM_V = 4.0.0rc2 +LLVM_V = 4.0.0 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} -REVISION-main =4 CATEGORIES = devel -DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} -MASTER_SITES = http://comstyle.com/source/ +DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ + cfe-${LLVM_V}.src${EXTRACT_SUFX} \ + lld-${LLVM_V}.src${EXTRACT_SUFX} +MASTER_SITES = http://releases.llvm.org/${LLVM_V}/ EXTRACT_SUFX = .tar.xz +DIST_SUBDIR = llvm SHARED_LIBS = clang 5.0 \ LTO 2.0 @@ -86,6 +88,10 @@ GCC_CONFIG = ${MACHINE_ARCH}-unknown-op .endif CLANG_INCLUDE_PATH = lib/clang/${LLVM_V:S/rc2//}/include SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V GCC_VER GCC_CONFIG + +post-extract: + @mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKSRC}/tools/clang + @mv ${WRKDIR}/lld-${LLVM_V}.src ${WRKSRC}/tools/lld pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains.cpp \ Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.20 diff -u -p -u -r1.20 distinfo --- distinfo10 Feb 2017 09:37:43 - 1.20 +++ distinfo14 Mar 2017 17:45:37 - @@ -1,2 +1,6 @@ -SHA256 (llvm-4.0.0rc2.src.tar.xz) = dPSlLc7j5BTaUNB2sugoQMRRI66n4/PC1WmFyzOrk1g= -SIZE (llvm-4.0.0rc2.src.tar.xz) = 30756712 +SHA256 (llvm/cfe-4.0.0.src.tar.xz) = zqX4jr3bMOKWyokTDIO51GwtgzaF4pEjA8goBUxNyYo= +SHA256 (llvm/lld-4.0.0.src.tar.xz) = M+BkV7nOBWPImxHMx8yr+c/3G4NXGYWlv4aEyRUOdQI= +SHA256 (llvm/llvm-4.0.0.src.tar.xz) = jRBRHfluc7j/nnq7+01NQy7b2+ll8fTwevrzcLilM74= +SIZE (llvm/cfe-4.0.0.src.tar.xz) = 10900916 +SIZE (llvm/lld-4.0.0.src.tar.xz) = 592728 +SIZE (llvm/llvm-4.0.0.src.tar.xz) = 21016340 Index: patches/patch-tools_clang_lib_Driver_Tools_cpp === RCS file: /cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp,v retrieving revision 1.39 diff -u -p -u -r1.39 patch-tools_clang_lib_Driver_Tools_cpp --- patches/patch-tools_clang_lib_Driver_Tools_cpp 20 Feb 2017 07:04:00 - 1.39 +++ patches/patch-tools_clang_lib_Driver_Tools_cpp 14 Mar 2017 17:45:37 - @@ -1,4 +1,4 @@ -$OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.39 2017/02/20 07:04:00 ajacoutot Exp $ +$OpenBSD$ - Select proper SPARCv9 variant for the external assembler - For now, force soft-float on ARM @@ -8,8 +8,8 @@ $OpenBSD: patch-tools_clang_lib_Driver_T - Always use --eh-frame-hdr on OpenBSD, even for -static - Link static PIE programs against rcrt0.o on OpenBSD tools/clang/lib/Driver/Tools.cpp.orig Wed Feb 8 20:35:18 2017 -+++ tools/clang/lib/Driver/Tools.cpp Sun Feb 19 17:41:04 2017 +--- tools/clang/lib/Driver/Tools.cpp.orig Tue Feb 21 20:11:22 2017 tools/clang/lib/Driver/Tools.cpp Tue Mar 14 17:35:43 2017 @@ -79,7 +79,7 @@ static const char *getSparcAsmModeForCPU(StringRef Nam .Case("niagara2", "-Av9b") .Case("niagara3", "-Av9d") @@ -101,18 +101,7 @@ $OpenBSD: patch-tools_clang_lib_Driver_T CmdArgs.push_back("-Bdynamic"); if (Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-shared"); -@@ -8937,6 +8950,10 @@ void openbsd::Linker::ConstructJob(Compilation , con - if (Args.hasArg(options::OPT_pg)) - CmdArgs.push_back( - Args.MakeArgString(getToolChain().GetFilePath("gcrt0.o"))); -+ else if (Args.hasArg(options::OPT_static) && -+ !Args.hasArg(options::OPT_nopie)) -+CmdArgs.push_back( -+Args.MakeArgString(getToolChain().GetFilePath("rcrt0.o"))); - else - CmdArgs.push_back( - Args.MakeArgString(getToolChain().GetFilePath("crt0.o"))); -@@ -8948,15 +8965,17 @@ void openbsd::Linker::ConstructJob(Compilation , con +@@ -8952,12 +8965,6 @@ void openbsd::Linker::ConstructJob(Compilation , con } } @@ -125,6 +114,21 @@ $OpenBSD: patch-tools_clang_lib_Driver_T Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group, options::OPT_e, options::OPT_s, options::OPT_t, options::OPT_Z_Flag, options::OPT_r}); +@@ -9067,6
Re: UPDATE: LLVM 3.4
On Mon, Jan 06, 2014 at 04:50:03PM -0500, Brad Smith wrote: Here is an update to LLVM 3.4. Any additional testing welcome. OK? One thing I wasn't expecting when testing this was the new requirement of linking against terminfo when linking the llvm libraries. While this llvm update is apparently stalled due to breaking the build of firefox on i386, if it were to go ahead in future perhaps it should be with: -DLLVM_ENABLE_TERMINFO:Bool=False added to CONFIGURE_ARGS. Otherwise Mesa radeon drivers built against llvm won't load due to missing del_curterm/set_curterm/setupterm/tigetnum symbols. Linking against the llvm 3.3 libraries did not have this problem.
Re: UPDATE: LLVM 3.4
On Tue, Apr 01, 2014 at 10:38:11PM +1100, Jonathan Gray wrote: On Mon, Jan 06, 2014 at 04:50:03PM -0500, Brad Smith wrote: Here is an update to LLVM 3.4. Any additional testing welcome. OK? One thing I wasn't expecting when testing this was the new requirement of linking against terminfo when linking the llvm libraries. While this llvm update is apparently stalled due to breaking the build of firefox on i386, It is not, since i386 uses gcc again for firefox...
Re: UPDATE: LLVM 3.4
On 01/04/14 7:38 AM, Jonathan Gray wrote: On Mon, Jan 06, 2014 at 04:50:03PM -0500, Brad Smith wrote: Here is an update to LLVM 3.4. Any additional testing welcome. OK? One thing I wasn't expecting when testing this was the new requirement of linking against terminfo when linking the llvm libraries. While this llvm update is apparently stalled due to breaking the build of firefox on i386, if it were to go ahead in future perhaps it should be with: Thunderbird not Firefox, but the issue affects infrastructure common to both projects. -DLLVM_ENABLE_TERMINFO:Bool=False added to CONFIGURE_ARGS. Otherwise Mesa radeon drivers built against llvm won't load due to missing del_curterm/set_curterm/setupterm/tigetnum symbols. Linking against the llvm 3.3 libraries did not have this problem. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Re: UPDATE: LLVM 3.4
On Mon, Jan 06, 2014 at 04:50:03PM -0500, Brad Smith wrote: Here is an update to LLVM 3.4. Any additional testing welcome. OK? Here is a diff that lets xenocara build with XENOCARA_BUILD_GALLIUM=llvm using a commit from mesa git that doesn't seem to be in the 9.2 branch yet: http://cgit.freedesktop.org/mesa/mesa/commit/?id=749cb8909714fed57b0213f4ad92def3bb24f153 I have only built this on amd64 so far, not yet tested that swrast (LLVMpipe) and the llvm enabled radeon drivers work. Index: lib/libGL/gallium/Makefile.inc === RCS file: /cvs/xenocara/lib/libGL/gallium/Makefile.inc,v retrieving revision 1.4 diff -u -p -r1.4 Makefile.inc --- lib/libGL/gallium/Makefile.inc 5 Sep 2013 15:11:59 - 1.4 +++ lib/libGL/gallium/Makefile.inc 11 Jan 2014 01:43:54 - @@ -32,7 +32,7 @@ lib${LIB}_pic.a: ${OBJS} ${DPADD} .if ${XENOCARA_BUILD_GALLIUM} == llvm # Remember to keep in sync with LLVM port's version. -LLVM_VERSION= 0x303 # 3.3 +LLVM_VERSION= 0x304 # 3.4 LLVM_CONFIG?= /usr/local/bin/llvm-config # ugh... Index: dist/Mesa/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp === RCS file: /cvs/xenocara/dist/Mesa/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp,v retrieving revision 1.4 diff -u -p -r1.4 lp_bld_misc.cpp --- dist/Mesa/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 5 Sep 2013 13:59:36 - 1.4 +++ dist/Mesa/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 11 Jan 2014 02:00:58 - @@ -174,12 +174,14 @@ lp_set_target_options(void) } #endif +#if HAVE_LLVM 0x0304 /* * By default LLVM adds a signal handler to output a pretty stack trace. * This signal handler is never removed, causing problems when unloading the * shared object where the gallium driver resides. */ llvm::DisablePrettyStackTrace = true; +#endif // If we have a native target, initialize it to ensure it is linked in and // usable by the JIT.
UPDATE: LLVM 3.4
Here is an update to LLVM 3.4. Any additional testing welcome. OK? Index: devel/llvm/Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.70 diff -u -p -u -p -r1.70 Makefile --- devel/llvm/Makefile 16 Dec 2013 20:34:46 - 1.70 +++ devel/llvm/Makefile 6 Jan 2014 06:07:48 - @@ -8,14 +8,13 @@ DPB_PROPERTIES = parallel COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools -LLVM_V = 3.3 -REVISION = 3 +LLVM_V = 3.4 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} CATEGORIES = devel MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ -DISTFILES =${DISTNAME}${EXTRACT_SUFX} cfe-${LLVM_V}.src${EXTRACT_SUFX} +DISTFILES =${DISTNAME}${EXTRACT_SUFX} clang-${LLVM_V}.src${EXTRACT_SUFX} SHARED_LIBS = clang 0.0 # 3.2 @@ -25,9 +24,9 @@ HOMEPAGE =http://www.llvm.org/ # BSD PERMIT_PACKAGE_CDROM = Yes -WANTLIB = c m pthread stdc++ z +WANTLIB = c curses m pthread stdc++ z -WRKDIST = ${WRKDIR}/llvm-${LLVM_V}.src +WRKDIST = ${WRKDIR}/llvm-${LLVM_V} MODULES = devel/cmake \ lang/python @@ -40,8 +39,7 @@ SEPARATE_BUILD = Yes CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ -DLLVM_REQUIRES_RTTI:Bool=True \ -DCMAKE_BUILD_TYPE:String=Release \ - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \ - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD:String=R600 + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True # Workaround relocation overflow .if ${MACHINE_ARCH} == powerpc @@ -54,7 +52,7 @@ CLANG_INCLUDE_PATH = lib/clang/${LLVM_V} SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V post-extract: - @mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKDIST}/tools/clang + @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build Index: devel/llvm/distinfo === RCS file: /home/cvs/ports/devel/llvm/distinfo,v retrieving revision 1.12 diff -u -p -u -p -r1.12 distinfo --- devel/llvm/distinfo 21 Jun 2013 22:09:12 - 1.12 +++ devel/llvm/distinfo 6 Jan 2014 05:41:14 - @@ -1,4 +1,4 @@ -SHA256 (cfe-3.3.src.tar.gz) = sbVd5Ks6V9PgMxqD4ChGEBkcd9kk40RkmNkRPQjfuZY= -SHA256 (llvm-3.3.src.tar.gz) = aHZrHnDQWiXi9QLpl6PLOTcYejKWWVz24Jd9XNZydXg= -SIZE (cfe-3.3.src.tar.gz) = 9425539 -SIZE (llvm-3.3.src.tar.gz) = 13602421 +SHA256 (clang-3.4.src.tar.gz) = Iql4DbO4Wn8uueoff24A2gJJ49EoUejeoPYvF4MkKxs= +SHA256 (llvm-3.4.src.tar.gz) = JaVhLWksSEgbmzl+K1X0hw5EeWbWbJbWVSQXAtRKJig= +SIZE (clang-3.4.src.tar.gz) = 10619607 +SIZE (llvm-3.4.src.tar.gz) = 15920544 Index: devel/llvm/patches/patch-CMakeLists_txt === RCS file: /home/cvs/ports/devel/llvm/patches/patch-CMakeLists_txt,v retrieving revision 1.3 diff -u -p -u -p -r1.3 patch-CMakeLists_txt --- devel/llvm/patches/patch-CMakeLists_txt 21 Jun 2013 22:09:12 - 1.3 +++ devel/llvm/patches/patch-CMakeLists_txt 18 Dec 2013 02:04:40 - @@ -2,14 +2,14 @@ $OpenBSD: patch-CMakeLists_txt,v 1.3 201 Don't confuse scripts who want the version with appended 'svn' goo. CMakeLists.txt.origMon May 6 12:23:07 2013 -+++ CMakeLists.txt Tue Jun 18 23:00:44 2013 -@@ -13,7 +13,7 @@ set(CMAKE_MODULE_PATH - set(LLVM_VERSION_MAJOR 3) - set(LLVM_VERSION_MINOR 3) +--- CMakeLists.txt.origMon Nov 25 13:34:26 2013 CMakeLists.txt Wed Dec 4 03:41:41 2013 +@@ -14,7 +14,7 @@ set(LLVM_VERSION_MAJOR 3) + set(LLVM_VERSION_MINOR 4) --set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}svn) -+set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}) + if (NOT PACKAGE_VERSION) +- set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}svn) ++ set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}) + endif() - option(LLVM_USE_FOLDERS Enable solution folders in Visual Studio. Disable for Express versions. ON) - if ( LLVM_USE_FOLDERS ) + option(LLVM_INSTALL_TOOLCHAIN_ONLY Only include toolchain files in the 'install' target. OFF) Index: devel/llvm/patches/patch-lib_CodeGen_StackProtector_cpp === RCS file: devel/llvm/patches/patch-lib_CodeGen_StackProtector_cpp diff -N devel/llvm/patches/patch-lib_CodeGen_StackProtector_cpp --- devel/llvm/patches/patch-lib_CodeGen_StackProtector_cpp 21 Jun 2013 22:09:12 - 1.3 +++ /dev/null 1 Jan 1970 00:00:00 - @@ -1,91 +0,0 @@ -$OpenBSD: patch-lib_CodeGen_StackProtector_cpp,v 1.3 2013/06/21 22:09:12 brad Exp $ lib/CodeGen/StackProtector.cpp.origMon Mar 4 20:00:45 2013 -+++ lib/CodeGen/StackProtector.cpp Wed Jun 5 15:41:29 2013 -@@ -25,6 +25,8 @@ -
Re: UPDATE: LLVM 3.3
On Fri, Jul 19, 2013 at 03:00:37PM +0100, Stuart Henderson wrote: On 2013/07/19 23:39, Jonathan Gray wrote: On Thu, Jul 18, 2013 at 10:08:26AM -0700, Matthew Dempsky wrote: On Thu, Jul 18, 2013 at 9:56 AM, Stuart Henderson st...@openbsd.org wrote: On 2013/07/18 22:48, Jonathan Gray wrote: @comment lib/libgtest.a @comment lib/libgtest_main.a +lib/libgtest.so +lib/libgtest_main.so presumably the above 4 lines want replacing with @comment lib/libgtest.so @comment lib/libgtest_main.so ...? (not sure why this was originally commented, but presumably it should stay commented?) Probably to avoid conflicting with devel/gtest, and I agree it should stay commented. yes, that was from update-plist and wasn't intentional. It seems using shared libraries may be significantly slowing down clang invocation. Just clang -help seems to take a few seconds, Is --as-needed likely to help at all? | # without --as-needed, evolution takes 20 minutes (yes, 20!) to start | MODGNOME_LDFLAGS= -L${X11BASE}/lib -Wl,-rpath,${TRUEPREFIX}/lib/evolution/${R}:${TRUEPREFIX}/lib \ | -Wl,--as-needed let alone compiling the 11,000 or so files in chromium... 17 hours and I'm at 7827/11331... last build without this took 2.5 hours. While I can't build mesa with llvm targets enabled via autotools without shared llvm libraries it seems a seperate xenocara build of mesa with bsd style makefiles is happy enough with the r600 parts as static libraries. So here is diff that just enables the backend with the patch to make it work on i386 and leaves out shared libraries. diff -uprN -x CVS -x *.orig llvm-orig/Makefile llvm/Makefile --- llvm-orig/Makefile Fri Jun 28 21:14:38 2013 +++ llvm/Makefile Sun Jul 28 17:22:17 2013 @@ -9,6 +9,7 @@ DPB_PROPERTIES = parallel COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools LLVM_V = 3.3 +REVISION = 0 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} CATEGORIES = devel @@ -46,7 +47,8 @@ SEPARATE_BUILD = Yes CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ -DLLVM_REQUIRES_RTTI:Bool=True \ -DCMAKE_BUILD_TYPE:String=Release \ - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \ + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD:String=R600 # Workaround relocation overflow .if ${MACHINE_ARCH} == powerpc diff -uprN -x CVS -x *.orig llvm-orig/patches/patch-lib_Target_R600_SIISelLowering_cpp llvm/patches/patch-lib_Target_R600_SIISelLowering_cpp --- llvm-orig/patches/patch-lib_Target_R600_SIISelLowering_cpp Thu Jan 1 10:00:00 1970 +++ llvm/patches/patch-lib_Target_R600_SIISelLowering_cpp Sun Jul 28 17:22:17 2013 @@ -0,0 +1,28 @@ +$OpenBSD$ + +llvm svn rev 182446 + +--- lib/Target/R600/SIISelLowering.cpp.origTue May 7 09:02:15 2013 lib/Target/R600/SIISelLowering.cpp Sat Jul 20 00:30:00 2013 +@@ -338,7 +338,7 @@ SDValue SITargetLowering::LowerBRCOND(SDValue BRCOND, + return Chain; + } + +-#define RSRC_DATA_FORMAT 0xf000 ++const uint64_t RSRC_DATA_FORMAT = 0xf000LL; + + SDValue SITargetLowering::LowerSTORE(SDValue Op, SelectionDAG DAG) const { + StoreSDNode *StoreNode = castStoreSDNode(Op); +@@ -351,9 +351,9 @@ SDValue SITargetLowering::LowerSTORE(SDValue Op, Selec + return SDValue(); + } + +- SDValue SrcSrc = DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i128, +- DAG.getConstant(0, MVT::i64), +- DAG.getConstant(RSRC_DATA_FORMAT, MVT::i64)); ++ SDValue Zero = DAG.getConstant(0, MVT::i64); ++ SDValue Format = DAG.getConstant(RSRC_DATA_FORMAT, MVT::i64); ++ SDValue SrcSrc = DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i128, Zero, Format); + + SDValue Ops[2]; + Ops[0] = DAG.getNode(AMDGPUISD::BUFFER_STORE, DL, MVT::Other, Chain, diff -uprN -x CVS -x *.orig llvm-orig/pkg/PLIST llvm/pkg/PLIST --- llvm-orig/pkg/PLIST Sat Jun 22 08:09:12 2013 +++ llvm/pkg/PLIST Sun Jul 28 17:22:17 2013 @@ -1156,6 +1156,10 @@ lib/libLLVMPowerPCAsmPrinter.a lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCInfo.a +lib/libLLVMR600AsmPrinter.a +lib/libLLVMR600CodeGen.a +lib/libLLVMR600Desc.a +lib/libLLVMR600Info.a lib/libLLVMRuntimeDyld.a lib/libLLVMScalarOpts.a lib/libLLVMSelectionDAG.a
Re: UPDATE: LLVM 3.3
On Thu, Jul 18, 2013 at 10:08:26AM -0700, Matthew Dempsky wrote: On Thu, Jul 18, 2013 at 9:56 AM, Stuart Henderson st...@openbsd.org wrote: On 2013/07/18 22:48, Jonathan Gray wrote: @comment lib/libgtest.a @comment lib/libgtest_main.a +lib/libgtest.so +lib/libgtest_main.so presumably the above 4 lines want replacing with @comment lib/libgtest.so @comment lib/libgtest_main.so ...? (not sure why this was originally commented, but presumably it should stay commented?) Probably to avoid conflicting with devel/gtest, and I agree it should stay commented. yes, that was from update-plist and wasn't intentional. It seems using shared libraries may be significantly slowing down clang invocation. Just clang -help seems to take a few seconds, let alone compiling the 11,000 or so files in chromium...
Re: UPDATE: LLVM 3.3
On 2013/07/19 23:39, Jonathan Gray wrote: On Thu, Jul 18, 2013 at 10:08:26AM -0700, Matthew Dempsky wrote: On Thu, Jul 18, 2013 at 9:56 AM, Stuart Henderson st...@openbsd.org wrote: On 2013/07/18 22:48, Jonathan Gray wrote: @comment lib/libgtest.a @comment lib/libgtest_main.a +lib/libgtest.so +lib/libgtest_main.so presumably the above 4 lines want replacing with @comment lib/libgtest.so @comment lib/libgtest_main.so ...? (not sure why this was originally commented, but presumably it should stay commented?) Probably to avoid conflicting with devel/gtest, and I agree it should stay commented. yes, that was from update-plist and wasn't intentional. It seems using shared libraries may be significantly slowing down clang invocation. Just clang -help seems to take a few seconds, Is --as-needed likely to help at all? | # without --as-needed, evolution takes 20 minutes (yes, 20!) to start | MODGNOME_LDFLAGS= -L${X11BASE}/lib -Wl,-rpath,${TRUEPREFIX}/lib/evolution/${R}:${TRUEPREFIX}/lib \ | -Wl,--as-needed let alone compiling the 11,000 or so files in chromium... 17 hours and I'm at 7827/11331... last build without this took 2.5 hours.
Re: UPDATE: LLVM 3.3
On Thu, Jun 20, 2013 at 03:30:17PM +0100, Stuart Henderson wrote: On 2013/06/20 23:16, Jonathan Gray wrote: On Wed, Jun 19, 2013 at 11:05:30AM -0400, Brad Smith wrote: On Tue, Jun 18, 2013 at 10:03:20PM -0400, Brad Smith wrote: Here is an update to LLVM 3.3. Comments? OK? Here is an updated diff with the r600 backend enabled. Mesa seems to require llvm to be built as series of shared libraries, are we trying to avoid that on purpose? When I changed it to use cmake I just went with the default value, upstream says this about it (http://llvm.org/docs/CMake.html) BUILD_SHARED_LIBS:BOOL Flag indicating is (sic) shared libraries will be built. Its default value is OFF. Shared libraries are not supported on Windows and not recommended in the other OSes. There's no further information about the not recommended though.. Well this is what I need to compile mesa git with llvm support: Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.64 diff -u -p -r1.64 Makefile --- Makefile28 Jun 2013 11:14:38 - 1.64 +++ Makefile18 Jul 2013 12:36:39 - @@ -9,6 +9,7 @@ DPB_PROPERTIES = parallel COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools LLVM_V = 3.3 +REVISION= 0 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} CATEGORIES = devel @@ -46,7 +47,9 @@ SEPARATE_BUILD = Yes CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ -DLLVM_REQUIRES_RTTI:Bool=True \ -DCMAKE_BUILD_TYPE:String=Release \ - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \ + -DBUILD_SHARED_LIBS:Bool=True \ + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD:String=R600 # Workaround relocation overflow .if ${MACHINE_ARCH} == powerpc Index: pkg/PLIST === RCS file: /cvs/ports/devel/llvm/pkg/PLIST,v retrieving revision 1.18 diff -u -p -r1.18 PLIST --- pkg/PLIST 21 Jun 2013 22:09:12 - 1.18 +++ pkg/PLIST 18 Jul 2013 12:36:39 - @@ -1089,131 +1089,134 @@ ${CLANG_INCLUDE_PATH}/wmmintrin.h ${CLANG_INCLUDE_PATH}/x86intrin.h ${CLANG_INCLUDE_PATH}/xmmintrin.h ${CLANG_INCLUDE_PATH}/xopintrin.h -lib/libLLVMAArch64AsmParser.a -lib/libLLVMAArch64AsmPrinter.a -lib/libLLVMAArch64CodeGen.a -lib/libLLVMAArch64Desc.a -lib/libLLVMAArch64Disassembler.a -lib/libLLVMAArch64Info.a -lib/libLLVMAArch64Utils.a -lib/libLLVMARMAsmParser.a -lib/libLLVMARMAsmPrinter.a -lib/libLLVMARMCodeGen.a -lib/libLLVMARMDesc.a -lib/libLLVMARMDisassembler.a -lib/libLLVMARMInfo.a -lib/libLLVMAnalysis.a -lib/libLLVMArchive.a -lib/libLLVMAsmParser.a -lib/libLLVMAsmPrinter.a -lib/libLLVMBitReader.a -lib/libLLVMBitWriter.a -lib/libLLVMCodeGen.a -lib/libLLVMCore.a -lib/libLLVMCppBackendCodeGen.a -lib/libLLVMCppBackendInfo.a -lib/libLLVMDebugInfo.a -lib/libLLVMExecutionEngine.a -lib/libLLVMHexagonAsmPrinter.a -lib/libLLVMHexagonCodeGen.a -lib/libLLVMHexagonDesc.a -lib/libLLVMHexagonInfo.a -lib/libLLVMIRReader.a -lib/libLLVMInstCombine.a -lib/libLLVMInstrumentation.a -lib/libLLVMInterpreter.a -lib/libLLVMJIT.a -lib/libLLVMLinker.a -lib/libLLVMMBlazeAsmParser.a -lib/libLLVMMBlazeAsmPrinter.a -lib/libLLVMMBlazeCodeGen.a -lib/libLLVMMBlazeDesc.a -lib/libLLVMMBlazeDisassembler.a -lib/libLLVMMBlazeInfo.a -lib/libLLVMMC.a -lib/libLLVMMCDisassembler.a -lib/libLLVMMCJIT.a -lib/libLLVMMCParser.a -lib/libLLVMMSP430AsmPrinter.a -lib/libLLVMMSP430CodeGen.a -lib/libLLVMMSP430Desc.a -lib/libLLVMMSP430Info.a -lib/libLLVMMipsAsmParser.a -lib/libLLVMMipsAsmPrinter.a -lib/libLLVMMipsCodeGen.a -lib/libLLVMMipsDesc.a -lib/libLLVMMipsDisassembler.a -lib/libLLVMMipsInfo.a -lib/libLLVMNVPTXAsmPrinter.a -lib/libLLVMNVPTXCodeGen.a -lib/libLLVMNVPTXDesc.a -lib/libLLVMNVPTXInfo.a -lib/libLLVMObjCARCOpts.a -lib/libLLVMObject.a -lib/libLLVMOption.a -lib/libLLVMPowerPCAsmParser.a -lib/libLLVMPowerPCAsmPrinter.a -lib/libLLVMPowerPCCodeGen.a -lib/libLLVMPowerPCDesc.a -lib/libLLVMPowerPCInfo.a -lib/libLLVMRuntimeDyld.a -lib/libLLVMScalarOpts.a -lib/libLLVMSelectionDAG.a -lib/libLLVMSparcCodeGen.a -lib/libLLVMSparcDesc.a -lib/libLLVMSparcInfo.a -lib/libLLVMSupport.a -lib/libLLVMSystemZAsmParser.a -lib/libLLVMSystemZAsmPrinter.a -lib/libLLVMSystemZCodeGen.a -lib/libLLVMSystemZDesc.a -lib/libLLVMSystemZInfo.a -lib/libLLVMTableGen.a -lib/libLLVMTarget.a -lib/libLLVMTransformUtils.a -lib/libLLVMVectorize.a -lib/libLLVMX86AsmParser.a -lib/libLLVMX86AsmPrinter.a -lib/libLLVMX86CodeGen.a -lib/libLLVMX86Desc.a -lib/libLLVMX86Disassembler.a -lib/libLLVMX86Info.a -lib/libLLVMX86Utils.a -lib/libLLVMXCoreAsmPrinter.a -lib/libLLVMXCoreCodeGen.a -lib/libLLVMXCoreDesc.a -lib/libLLVMXCoreDisassembler.a -lib/libLLVMXCoreInfo.a -lib/libLLVMipa.a -lib/libLLVMipo.a
Re: UPDATE: LLVM 3.3
On 2013/07/18 22:48, Jonathan Gray wrote: Well this is what I need to compile mesa git with llvm support: Last time I tried with R600 support, it broke on i386, 22:01 sthen_ brad: /usr/obj/llvm-3.3/llvm-3.3.src/lib/Target/R600/SIISelLowering.cpp:356: error: integer constant is too large for 'long' type
Re: UPDATE: LLVM 3.3
On Thu, Jul 18, 2013 at 02:41:46PM +0100, Stuart Henderson wrote: On 2013/07/18 22:48, Jonathan Gray wrote: Well this is what I need to compile mesa git with llvm support: Last time I tried with R600 support, it broke on i386, 22:01 sthen_ brad: /usr/obj/llvm-3.3/llvm-3.3.src/lib/Target/R600/SIISelLowering.cpp:356: error: integer constant is too large for 'long' type I haven't tried a build, but it seems http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIISelLowering.cpp?r1=182282r2=182446view=patch might fix that.
Re: UPDATE: LLVM 3.3
On 2013/07/18 22:48, Jonathan Gray wrote: @comment lib/libgtest.a @comment lib/libgtest_main.a +lib/libgtest.so +lib/libgtest_main.so presumably the above 4 lines want replacing with @comment lib/libgtest.so @comment lib/libgtest_main.so ...? (not sure why this was originally commented, but presumably it should stay commented?) I'm going to put this into an i386 bulk.. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.64 diff -u -p -r1.64 Makefile --- Makefile28 Jun 2013 11:14:38 - 1.64 +++ Makefile18 Jul 2013 15:05:02 - @@ -9,6 +9,7 @@ DPB_PROPERTIES = parallel COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools LLVM_V = 3.3 +REVISION= 0 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} CATEGORIES = devel @@ -46,7 +47,9 @@ SEPARATE_BUILD = Yes CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ -DLLVM_REQUIRES_RTTI:Bool=True \ -DCMAKE_BUILD_TYPE:String=Release \ - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \ + -DBUILD_SHARED_LIBS:Bool=True \ + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD:String=R600 # Workaround relocation overflow .if ${MACHINE_ARCH} == powerpc Index: patches/patch-lib_Target_R600_SIISelLowering_cpp === RCS file: patches/patch-lib_Target_R600_SIISelLowering_cpp diff -N patches/patch-lib_Target_R600_SIISelLowering_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-lib_Target_R600_SIISelLowering_cpp18 Jul 2013 15:47:09 - @@ -0,0 +1,28 @@ +$OpenBSD$ + +http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIISelLowering.cpp?r1=182282r2=182446view=patchhttp://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIISelLowering.cpp?r1=182282r2=182446view=patch + +--- lib/Target/R600/SIISelLowering.cpp.origMon May 6 17:02:15 2013 lib/Target/R600/SIISelLowering.cpp Thu Jul 18 09:47:00 2013 +@@ -338,7 +338,7 @@ SDValue SITargetLowering::LowerBRCOND(SDValue BRCOND, + return Chain; + } + +-#define RSRC_DATA_FORMAT 0xf000 ++const uint64_t RSRC_DATA_FORMAT = 0xf000LL; + + SDValue SITargetLowering::LowerSTORE(SDValue Op, SelectionDAG DAG) const { + StoreSDNode *StoreNode = castStoreSDNode(Op); +@@ -351,9 +351,9 @@ SDValue SITargetLowering::LowerSTORE(SDValue Op, Selec + return SDValue(); + } + +- SDValue SrcSrc = DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i128, +- DAG.getConstant(0, MVT::i64), +- DAG.getConstant(RSRC_DATA_FORMAT, MVT::i64)); ++ SDValue Zero = DAG.getConstant(0, MVT::i64); ++ SDValue Format = DAG.getConstant(RSRC_DATA_FORMAT, MVT::i64); ++ SDValue SrcSrc = DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i128, Zero, Format); + + SDValue Ops[2]; + Ops[0] = DAG.getNode(AMDGPUISD::BUFFER_STORE, DL, MVT::Other, Chain, Index: pkg/PLIST === RCS file: /cvs/ports/devel/llvm/pkg/PLIST,v retrieving revision 1.18 diff -u -p -r1.18 PLIST --- pkg/PLIST 21 Jun 2013 22:09:12 - 1.18 +++ pkg/PLIST 18 Jul 2013 16:53:14 - @@ -1089,131 +1089,132 @@ ${CLANG_INCLUDE_PATH}/wmmintrin.h ${CLANG_INCLUDE_PATH}/x86intrin.h ${CLANG_INCLUDE_PATH}/xmmintrin.h ${CLANG_INCLUDE_PATH}/xopintrin.h -lib/libLLVMAArch64AsmParser.a -lib/libLLVMAArch64AsmPrinter.a -lib/libLLVMAArch64CodeGen.a -lib/libLLVMAArch64Desc.a -lib/libLLVMAArch64Disassembler.a -lib/libLLVMAArch64Info.a -lib/libLLVMAArch64Utils.a -lib/libLLVMARMAsmParser.a -lib/libLLVMARMAsmPrinter.a -lib/libLLVMARMCodeGen.a -lib/libLLVMARMDesc.a -lib/libLLVMARMDisassembler.a -lib/libLLVMARMInfo.a -lib/libLLVMAnalysis.a -lib/libLLVMArchive.a -lib/libLLVMAsmParser.a -lib/libLLVMAsmPrinter.a -lib/libLLVMBitReader.a -lib/libLLVMBitWriter.a -lib/libLLVMCodeGen.a -lib/libLLVMCore.a -lib/libLLVMCppBackendCodeGen.a -lib/libLLVMCppBackendInfo.a -lib/libLLVMDebugInfo.a -lib/libLLVMExecutionEngine.a -lib/libLLVMHexagonAsmPrinter.a -lib/libLLVMHexagonCodeGen.a -lib/libLLVMHexagonDesc.a -lib/libLLVMHexagonInfo.a -lib/libLLVMIRReader.a -lib/libLLVMInstCombine.a -lib/libLLVMInstrumentation.a -lib/libLLVMInterpreter.a -lib/libLLVMJIT.a -lib/libLLVMLinker.a -lib/libLLVMMBlazeAsmParser.a -lib/libLLVMMBlazeAsmPrinter.a -lib/libLLVMMBlazeCodeGen.a -lib/libLLVMMBlazeDesc.a -lib/libLLVMMBlazeDisassembler.a -lib/libLLVMMBlazeInfo.a -lib/libLLVMMC.a -lib/libLLVMMCDisassembler.a -lib/libLLVMMCJIT.a -lib/libLLVMMCParser.a -lib/libLLVMMSP430AsmPrinter.a -lib/libLLVMMSP430CodeGen.a -lib/libLLVMMSP430Desc.a -lib/libLLVMMSP430Info.a -lib/libLLVMMipsAsmParser.a -lib/libLLVMMipsAsmPrinter.a -lib/libLLVMMipsCodeGen.a -lib/libLLVMMipsDesc.a
Re: UPDATE: LLVM 3.3
On Thu, Jul 18, 2013 at 9:56 AM, Stuart Henderson st...@openbsd.org wrote: On 2013/07/18 22:48, Jonathan Gray wrote: @comment lib/libgtest.a @comment lib/libgtest_main.a +lib/libgtest.so +lib/libgtest_main.so presumably the above 4 lines want replacing with @comment lib/libgtest.so @comment lib/libgtest_main.so ...? (not sure why this was originally commented, but presumably it should stay commented?) Probably to avoid conflicting with devel/gtest, and I agree it should stay commented.
Re: UPDATE: LLVM 3.3
On Wed, Jun 19, 2013 at 11:05:30AM -0400, Brad Smith wrote: On Tue, Jun 18, 2013 at 10:03:20PM -0400, Brad Smith wrote: Here is an update to LLVM 3.3. Comments? OK? Here is an updated diff with the r600 backend enabled. Mesa seems to require llvm to be built as series of shared libraries, are we trying to avoid that on purpose?
Re: UPDATE: LLVM 3.3
On 2013/06/20 23:16, Jonathan Gray wrote: On Wed, Jun 19, 2013 at 11:05:30AM -0400, Brad Smith wrote: On Tue, Jun 18, 2013 at 10:03:20PM -0400, Brad Smith wrote: Here is an update to LLVM 3.3. Comments? OK? Here is an updated diff with the r600 backend enabled. Mesa seems to require llvm to be built as series of shared libraries, are we trying to avoid that on purpose? When I changed it to use cmake I just went with the default value, upstream says this about it (http://llvm.org/docs/CMake.html) BUILD_SHARED_LIBS:BOOL Flag indicating is (sic) shared libraries will be built. Its default value is OFF. Shared libraries are not supported on Windows and not recommended in the other OSes. There's no further information about the not recommended though..
Re: UPDATE: LLVM 3.3
On Tue, Jun 18, 2013 at 10:03:20PM -0400, Brad Smith wrote: Here is an update to LLVM 3.3. Comments? OK? Here is an updated diff with the r600 backend enabled. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.62 diff -u -p -r1.62 Makefile --- Makefile2 May 2013 15:41:57 - 1.62 +++ Makefile19 Jun 2013 01:59:15 - @@ -7,14 +7,13 @@ ONLY_FOR_ARCHS = ${LLVM_ARCHS} COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools -LLVM_V = 3.2 +LLVM_V = 3.3 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} -REVISION = 3 CATEGORIES = devel MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ -DISTFILES =${DISTNAME}${EXTRACT_SUFX} clang-${LLVM_V}.src${EXTRACT_SUFX} +DISTFILES =${DISTNAME}${EXTRACT_SUFX} cfe-${LLVM_V}.src${EXTRACT_SUFX} SHARED_LIBS = clang 0.0 # 3.2 @@ -24,7 +23,7 @@ HOMEPAGE =http://www.llvm.org/ # BSD PERMIT_PACKAGE_CDROM = Yes -WANTLIB = c m pthread stdc++ +WANTLIB = c m pthread stdc++ z WRKDIST = ${WRKDIR}/llvm-${LLVM_V}.src @@ -54,10 +53,10 @@ CONFIGURE_ARGS += -DCMAKE_EXE_LINKER_FLA .endif CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include -SUBST_VARS += CLANG_INCLUDE_PATH +SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V post-extract: - @mv ${WRKDIR}/clang-${LLVM_V}.src ${WRKDIST}/tools/clang + @mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKDIST}/tools/clang pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build Index: distinfo === RCS file: /home/cvs/ports/devel/llvm/distinfo,v retrieving revision 1.11 diff -u -p -r1.11 distinfo --- distinfo23 Dec 2012 20:49:29 - 1.11 +++ distinfo16 Jun 2013 23:26:38 - @@ -1,4 +1,4 @@ -SHA256 (clang-3.2.src.tar.gz) = KqrwP3wPaxb+l+zIEkfcK/LUvsdiCnfMdGcLfgf/Vlg= -SHA256 (llvm-3.2.src.tar.gz) = ElCQxNJnQPHV6YOEd8kx7X2a1w1Zm6Jl9G86QssGY0M= -SIZE (clang-3.2.src.tar.gz) = 8805311 -SIZE (llvm-3.2.src.tar.gz) = 12275252 +SHA256 (cfe-3.3.src.tar.gz) = sbVd5Ks6V9PgMxqD4ChGEBkcd9kk40RkmNkRPQjfuZY= +SHA256 (llvm-3.3.src.tar.gz) = aHZrHnDQWiXi9QLpl6PLOTcYejKWWVz24Jd9XNZydXg= +SIZE (cfe-3.3.src.tar.gz) = 9425539 +SIZE (llvm-3.3.src.tar.gz) = 13602421 Index: patches/patch-CMakeLists_txt === RCS file: /home/cvs/ports/devel/llvm/patches/patch-CMakeLists_txt,v retrieving revision 1.2 diff -u -p -r1.2 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt23 Dec 2012 20:49:29 - 1.2 +++ patches/patch-CMakeLists_txt19 Jun 2013 03:00:51 - @@ -2,14 +2,22 @@ $OpenBSD: patch-CMakeLists_txt,v 1.2 201 Don't confuse scripts who want the version with appended 'svn' goo. CMakeLists.txt.origFri Sep 28 19:35:20 2012 -+++ CMakeLists.txt Mon Dec 10 19:22:46 2012 +--- CMakeLists.txt.origMon May 6 12:23:07 2013 CMakeLists.txt Tue Jun 18 23:00:44 2013 @@ -13,7 +13,7 @@ set(CMAKE_MODULE_PATH set(LLVM_VERSION_MAJOR 3) - set(LLVM_VERSION_MINOR 2) + set(LLVM_VERSION_MINOR 3) -set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}svn) +set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}) option(LLVM_USE_FOLDERS Enable solution folders in Visual Studio. Disable for Express versions. ON) if ( LLVM_USE_FOLDERS ) +@@ -83,6 +83,7 @@ set(LLVM_ALL_TARGETS + MSP430 + NVPTX + PowerPC ++ R600 + Sparc + SystemZ + X86 Index: patches/patch-cmake_modules_LLVMConfig_cmake_in === RCS file: /home/cvs/ports/devel/llvm/patches/patch-cmake_modules_LLVMConfig_cmake_in,v retrieving revision 1.1 diff -u -p -r1.1 patch-cmake_modules_LLVMConfig_cmake_in --- patches/patch-cmake_modules_LLVMConfig_cmake_in 2 May 2013 15:41:57 - 1.1 +++ patches/patch-cmake_modules_LLVMConfig_cmake_in 8 May 2013 10:21:28 - @@ -3,9 +3,9 @@ $OpenBSD: patch-cmake_modules_LLVMConfig make it find include file in /usr/local/share/llvm/cmake bug reported: http://www.llvm.org/bugs/show_bug.cgi?id=15899 cmake/modules/LLVMConfig.cmake.in.orig Sat Jul 7 05:12:28 2012 -+++ cmake/modules/LLVMConfig.cmake.in Thu May 2 07:38:57 2013 -@@ -36,6 +36,8 @@ set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include) +--- cmake/modules/LLVMConfig.cmake.in.orig Tue Apr 23 04:28:39 2013 cmake/modules/LLVMConfig.cmake.in Wed May 8 06:14:30 2013 +@@ -39,6 +39,8 @@ set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include) set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib) set(LLVM_DEFINITIONS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS) Index: patches/patch-lib_CodeGen_StackProtector_cpp === RCS file:
UPDATE: LLVM 3.3
Here is an update to LLVM 3.3. Comments? OK? Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.62 diff -u -p -r1.62 Makefile --- Makefile2 May 2013 15:41:57 - 1.62 +++ Makefile19 Jun 2013 01:59:15 - @@ -7,14 +7,13 @@ ONLY_FOR_ARCHS = ${LLVM_ARCHS} COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools -LLVM_V = 3.2 +LLVM_V = 3.3 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} -REVISION = 3 CATEGORIES = devel MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ -DISTFILES =${DISTNAME}${EXTRACT_SUFX} clang-${LLVM_V}.src${EXTRACT_SUFX} +DISTFILES =${DISTNAME}${EXTRACT_SUFX} cfe-${LLVM_V}.src${EXTRACT_SUFX} SHARED_LIBS = clang 0.0 # 3.2 @@ -24,7 +23,7 @@ HOMEPAGE =http://www.llvm.org/ # BSD PERMIT_PACKAGE_CDROM = Yes -WANTLIB = c m pthread stdc++ +WANTLIB = c m pthread stdc++ z WRKDIST = ${WRKDIR}/llvm-${LLVM_V}.src @@ -54,10 +53,10 @@ CONFIGURE_ARGS += -DCMAKE_EXE_LINKER_FLA .endif CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include -SUBST_VARS += CLANG_INCLUDE_PATH +SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V post-extract: - @mv ${WRKDIR}/clang-${LLVM_V}.src ${WRKDIST}/tools/clang + @mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKDIST}/tools/clang pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build Index: distinfo === RCS file: /home/cvs/ports/devel/llvm/distinfo,v retrieving revision 1.11 diff -u -p -r1.11 distinfo --- distinfo23 Dec 2012 20:49:29 - 1.11 +++ distinfo16 Jun 2013 23:26:38 - @@ -1,4 +1,4 @@ -SHA256 (clang-3.2.src.tar.gz) = KqrwP3wPaxb+l+zIEkfcK/LUvsdiCnfMdGcLfgf/Vlg= -SHA256 (llvm-3.2.src.tar.gz) = ElCQxNJnQPHV6YOEd8kx7X2a1w1Zm6Jl9G86QssGY0M= -SIZE (clang-3.2.src.tar.gz) = 8805311 -SIZE (llvm-3.2.src.tar.gz) = 12275252 +SHA256 (cfe-3.3.src.tar.gz) = sbVd5Ks6V9PgMxqD4ChGEBkcd9kk40RkmNkRPQjfuZY= +SHA256 (llvm-3.3.src.tar.gz) = aHZrHnDQWiXi9QLpl6PLOTcYejKWWVz24Jd9XNZydXg= +SIZE (cfe-3.3.src.tar.gz) = 9425539 +SIZE (llvm-3.3.src.tar.gz) = 13602421 Index: patches/patch-CMakeLists_txt === RCS file: /home/cvs/ports/devel/llvm/patches/patch-CMakeLists_txt,v retrieving revision 1.2 diff -u -p -r1.2 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt23 Dec 2012 20:49:29 - 1.2 +++ patches/patch-CMakeLists_txt8 May 2013 10:21:18 - @@ -2,11 +2,11 @@ $OpenBSD: patch-CMakeLists_txt,v 1.2 201 Don't confuse scripts who want the version with appended 'svn' goo. CMakeLists.txt.origFri Sep 28 19:35:20 2012 -+++ CMakeLists.txt Mon Dec 10 19:22:46 2012 +--- CMakeLists.txt.origMon May 6 12:23:07 2013 CMakeLists.txt Wed May 8 06:14:25 2013 @@ -13,7 +13,7 @@ set(CMAKE_MODULE_PATH set(LLVM_VERSION_MAJOR 3) - set(LLVM_VERSION_MINOR 2) + set(LLVM_VERSION_MINOR 3) -set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}svn) +set(PACKAGE_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}) Index: patches/patch-cmake_modules_LLVMConfig_cmake_in === RCS file: /home/cvs/ports/devel/llvm/patches/patch-cmake_modules_LLVMConfig_cmake_in,v retrieving revision 1.1 diff -u -p -r1.1 patch-cmake_modules_LLVMConfig_cmake_in --- patches/patch-cmake_modules_LLVMConfig_cmake_in 2 May 2013 15:41:57 - 1.1 +++ patches/patch-cmake_modules_LLVMConfig_cmake_in 8 May 2013 10:21:28 - @@ -3,9 +3,9 @@ $OpenBSD: patch-cmake_modules_LLVMConfig make it find include file in /usr/local/share/llvm/cmake bug reported: http://www.llvm.org/bugs/show_bug.cgi?id=15899 cmake/modules/LLVMConfig.cmake.in.orig Sat Jul 7 05:12:28 2012 -+++ cmake/modules/LLVMConfig.cmake.in Thu May 2 07:38:57 2013 -@@ -36,6 +36,8 @@ set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include) +--- cmake/modules/LLVMConfig.cmake.in.orig Tue Apr 23 04:28:39 2013 cmake/modules/LLVMConfig.cmake.in Wed May 8 06:14:30 2013 +@@ -39,6 +39,8 @@ set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include) set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib) set(LLVM_DEFINITIONS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS) Index: patches/patch-lib_CodeGen_StackProtector_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-lib_CodeGen_StackProtector_cpp,v retrieving revision 1.2 diff -u -p -r1.2 patch-lib_CodeGen_StackProtector_cpp --- patches/patch-lib_CodeGen_StackProtector_cpp23 Dec 2012 20:49:29 - 1.2 +++ patches/patch-lib_CodeGen_StackProtector_cpp5 Jun 2013 19:42:52 - @@ -1,46 +1,89 @@ $OpenBSD: patch-lib_CodeGen_StackProtector_cpp,v 1.2
Re: UPDATE: LLVM 3.3
On Tue, Jun 18, 2013 at 10:03:20PM -0400, Brad Smith wrote: Here is an update to LLVM 3.3. Comments? OK? Can you enable the R600 target as well? It is still marked experimental in 3.3 but is required to build support for the latest radeon chips in mesa (radeonsi gallium target) and optional for the older parts.
UPDATE: LLVM - update library link spec
Re-sync LLVM to mimic the same library link spec as the base compilers. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.50 diff -u -p -r1.50 Makefile --- Makefile21 Aug 2012 17:51:53 - 1.50 +++ Makefile23 Aug 2012 05:41:09 - @@ -10,7 +10,7 @@ COMMENT = modular, fast C/C++/ObjC compi LLVM_V = 3.1 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} -REVISION = 5 +REVISION = 6 CATEGORIES = devel # packager notes in http://llvm.org/docs/Packaging.html Index: patches/patch-tools_clang_lib_Driver_Tools_cpp === RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp,v retrieving revision 1.10 diff -u -p -r1.10 patch-tools_clang_lib_Driver_Tools_cpp --- patches/patch-tools_clang_lib_Driver_Tools_cpp 21 Aug 2012 17:51:53 - 1.10 +++ patches/patch-tools_clang_lib_Driver_Tools_cpp 25 Aug 2012 14:30:40 - @@ -1,29 +1,27 @@ $OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.10 2012/08/21 17:51:53 pascal Exp $ --- tools/clang/lib/Driver/Tools.cpp.orig Wed Apr 18 17:32:25 2012 -+++ tools/clang/lib/Driver/Tools.cpp Thu Aug 16 02:23:30 2012 -@@ -4672,14 +4672,20 @@ void openbsd::Link::ConstructJob(Compilation C, const tools/clang/lib/Driver/Tools.cpp Sat Aug 25 10:29:30 2012 +@@ -4672,14 +4672,21 @@ void openbsd::Link::ConstructJob(Compilation C, const // the default system libraries. Just mimic this for now. CmdArgs.push_back(-lgcc); -if (Args.hasArg(options::OPT_pthread)) - CmdArgs.push_back(-lpthread); --if (!Args.hasArg(options::OPT_shared)) { -- if (Args.hasArg(options::OPT_pg)) -- CmdArgs.push_back(-lc_p); +if (Args.hasArg(options::OPT_pthread)) { + if (!Args.hasArg(options::OPT_shared) + Args.hasArg(options::OPT_pg)) + CmdArgs.push_back(-lpthread_p); - else -- CmdArgs.push_back(-lc); ++ else + CmdArgs.push_back(-lpthread); - } ++} + -+if (!Args.hasArg(options::OPT_shared) -+Args.hasArg(options::OPT_pg)) -+ CmdArgs.push_back(-lc_p); -+else -+ CmdArgs.push_back(-lc); + if (!Args.hasArg(options::OPT_shared)) { +- if (Args.hasArg(options::OPT_pg)) ++ if (Args.hasArg(options::OPT_pg)) + CmdArgs.push_back(-lc_p); + else + CmdArgs.push_back(-lc); + } + CmdArgs.push_back(-lgcc); } -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Re: UPDATE: LLVM - LLVM_ARCHS
On Mon, Aug 13, 2012 at 11:23:29PM -0400, Brad Smith wrote: Here is a diff to update LLVM_ARCHS. sparc64 must be removed as the compiler doesn't support SPARCv9 and thus what is being built now is unusable, but there is support for SPARCv8 so sparc should be enabled. Although the compiler is broken on sparc64 there are some other components of LLVM that are still useful so I guess we can leave that enabled as is for now so a revised diff just to enable sparc. Index: arch-defines.mk === RCS file: /home/cvs/ports/infrastructure/mk/arch-defines.mk,v retrieving revision 1.8 diff -u -p -r1.8 arch-defines.mk --- arch-defines.mk 21 Aug 2012 16:32:04 - 1.8 +++ arch-defines.mk 21 Aug 2012 20:31:46 - @@ -27,7 +27,7 @@ GCC3_ARCHS = GCC2_ARCHS = aviion luna88k m68k m88k mvme68k mvme88k vax # XXX easier for ports that depend on mono MONO_ARCHS = amd64 i386 -LLVM_ARCHS = amd64 i386 powerpc sparc64 +LLVM_ARCHS = amd64 i386 powerpc sparc sparc64 OCAML_NATIVE_ARCHS = i386 sparc amd64 powerpc OCAML_NATIVE_DYNLINK_ARCHS = i386 amd64 -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
UPDATE: LLVM - update library link spec for libpthread
The diff below updates LLVM/Clang's Driver to mimic the new link spec behavior from gcc4. Looked over by Matthew and he thinks it looks good. Index: Makefile === RCS file: /home/cvs/ports/devel/llvm/Makefile,v retrieving revision 1.48 diff -u -p -r1.48 Makefile --- Makefile8 Aug 2012 09:35:24 - 1.48 +++ Makefile15 Aug 2012 11:12:22 - @@ -10,7 +10,7 @@ COMMENT = modular, fast C/C++/ObjC compi LLVM_V = 3.1 DISTNAME = llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} -REVISION = 3 +REVISION = 4 CATEGORIES = devel # packager notes in http://llvm.org/docs/Packaging.html Index: patches/patch-tools_clang_lib_Driver_Tools_cpp === RCS file: patches/patch-tools_clang_lib_Driver_Tools_cpp diff -N patches/patch-tools_clang_lib_Driver_Tools_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_clang_lib_Driver_Tools_cpp 16 Aug 2012 06:23:46 - @@ -0,0 +1,30 @@ +$OpenBSD$ +--- tools/clang/lib/Driver/Tools.cpp.orig Wed Apr 18 17:32:25 2012 tools/clang/lib/Driver/Tools.cpp Thu Aug 16 02:23:30 2012 +@@ -4672,14 +4672,20 @@ void openbsd::Link::ConstructJob(Compilation C, const + // the default system libraries. Just mimic this for now. + CmdArgs.push_back(-lgcc); + +-if (Args.hasArg(options::OPT_pthread)) +- CmdArgs.push_back(-lpthread); +-if (!Args.hasArg(options::OPT_shared)) { +- if (Args.hasArg(options::OPT_pg)) +- CmdArgs.push_back(-lc_p); ++if (Args.hasArg(options::OPT_pthread)) { ++ if (!Args.hasArg(options::OPT_shared) ++ Args.hasArg(options::OPT_pg)) ++ CmdArgs.push_back(-lpthread_p); + else +- CmdArgs.push_back(-lc); ++ CmdArgs.push_back(-lpthread); + } ++ ++if (!Args.hasArg(options::OPT_shared) ++Args.hasArg(options::OPT_pg)) ++ CmdArgs.push_back(-lc_p); ++else ++ CmdArgs.push_back(-lc); ++ + CmdArgs.push_back(-lgcc); + } + -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
UPDATE: LLVM - LLVM_ARCHS
Here is a diff to update LLVM_ARCHS. sparc64 must be removed as the compiler doesn't support SPARCv9 and thus what is being built now is unusable, but there is support for SPARCv8 so sparc should be enabled. Index: arch-defines.mk === RCS file: /home/cvs/ports/infrastructure/mk/arch-defines.mk,v retrieving revision 1.6 diff -u -p -r1.6 arch-defines.mk --- arch-defines.mk 8 Jul 2012 18:35:48 - 1.6 +++ arch-defines.mk 7 Aug 2012 07:29:34 - @@ -27,7 +27,7 @@ GCC3_ARCHS = GCC2_ARCHS = aviion luna88k m68k m88k mvme68k mvme88k vax # XXX easier for ports that depend on mono MONO_ARCHS = amd64 i386 -LLVM_ARCHS = amd64 i386 powerpc sparc64 +LLVM_ARCHS = amd64 i386 powerpc sparc .for PROP in ALL APM BE LE LP64 NO_SHARED GCC4 GCC3 GCC2 MONO LLVM . for A B in ${MACHINE_ARCH} ${ARCH} -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Re: UPDATE: llvm-3.0rc1 just for testing...
On 2011/12/06 12:41, Sebastian Reitenbach wrote: I also found why llvm did not compiled for me with cmake (I reported that before when you sent the rc2 I think): In my /etc/mk.conf I had defined: DEBUG=-g -O0 -O0 - this could very well explain why it was so slow ... personally I would usually set this on the command line if I need it ('make package DEBUG=-g -O0'). Still, this should work, I'll see if I can work out what's going on. (Looks like there are some -lpthread I need to change to -pthread too).
Re: UPDATE: llvm-3.0rc1 just for testing...
On Tuesday, December 6, 2011 13:23 CET, David Coppa dco...@gmail.com wrote: On Tue, 06 Dec 2011, Sebastian Reitenbach wrote: It works for me on i386, and also it compiles fast. Whatever made the rc candidates so slow, seems to be gone. I also found why llvm did not compiled for me with cmake (I reported that before when you sent the rc2 I think): In my /etc/mk.conf I had defined: DEBUG=-g -O0 With this setting, build ends here: /usr/include/g++/bits/stl_vector.h:601: undefined reference to `llvm::sys::MutexImpl::acquire()' ../../lib/libLLVMSupport.a(Threading.cpp.o)(.gnu.linkonce.t._ZN4llvm3sys10SmartMutexILb0EE7acquireEv+0x19): In function `llvm::sys::SmartMutexfalse::acquire()': /home/ports/pobj/llvm-3.0/llvm-3.0.src/lib/Support/Threading.cpp:56: undefined reference to `llvm::sys::MutexImpl::acquire()' collect2: ld returned 1 exit status Commenting out this line, it builds as expected. Try to add the chunk below to Makefile: .ifdef DEBUG CONFIGURE_ARGS += --disable-optimized --enable-debug-symbols .endif doesn't help, its still the same. Sebastian Ciao, David
Re: UPDATE: llvm-3.0rc1 just for testing...
On 2011/12/06 13:23, David Coppa wrote: Try to add the chunk below to Makefile: .ifdef DEBUG CONFIGURE_ARGS += --disable-optimized --enable-debug-symbols .endif Ciao, David This is only with the cmake build, not the autoconf one ..
Re: UPDATE: llvm-3.0rc1 just for testing...
On Tuesday, December 6, 2011 15:17 CET, David Coppa dco...@gmail.com wrote: On Tue, 06 Dec 2011, Stuart Henderson wrote: On 2011/12/06 13:23, David Coppa wrote: Try to add the chunk below to Makefile: .ifdef DEBUG CONFIGURE_ARGS += --disable-optimized --enable-debug-symbols .endif Ciao, David This is only with the cmake build, not the autoconf one .. Ops! You're right. Maybe this has a chance to work: .ifdef DEBUG CONFIGURE_ARGS += -DLLVM_ENABLE_ASSERTIONS:Bool=True -DCMAKE_BUILD_TYPE:String=Debug .endif ...After actually looking at the code, you know :) sorry, but its still the same: /usr/include/g++/i386-unknown-openbsd5.0/bits/ctype_base.h: At global scope: /usr/include/g++/i386-unknown-openbsd5.0/bits/ctype_base.h:55: warning: overflow in implicit constant conversion Linking CXX executable ../../bin/llvm-tblgen cd /home/ports/pobj/llvm-3.0/build-i386/utils/TableGen /usr/local/bin/cmake -E cmake_link_script CMakeFiles/llvm-tblgen.dir/link.txt --verbose=Yes /usr/bin/c++ -O2 -pipe -g -O0 -fPIC -DNDEBUG CMakeFiles/llvm-tblgen.dir/ARMDecoderEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/AsmMatcherEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/AsmWriterEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/AsmWriterInst.cpp.o CMakeFiles/llvm-tblgen.dir/CallingConvEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/CodeEmitterGen.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenInstruction.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenRegisters.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenTarget.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcherGen.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcher.cpp.o CMakeFiles/llvm-tblgen.dir/DisassemblerEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/EDEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/FastISelEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/FixedLenDecode rEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/InstrEnumEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/InstrInfoEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/IntrinsicEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/RegisterInfoEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/SetTheory.cpp.o CMakeFiles/llvm-tblgen.dir/StringMatcher.cpp.o CMakeFiles/llvm-tblgen.dir/SubtargetEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/TGValueTypes.cpp.o CMakeFiles/llvm-tblgen.dir/TableGen.cpp.o CMakeFiles/llvm-tblgen.dir/X86DisassemblerTables.cpp.o CMakeFiles/llvm-tblgen.dir/X86RecognizableInstr.cpp.o -o ../../bin/llvm-tblgen -lpthread ../../lib/libLLVMSupport.a ../../lib/libLLVMTableGen.a -lpthread ../../lib/libLLVMSupport.a -lpthread -Wl,-rpath-link,/usr/X11R6/lib:/usr/local/lib ../../lib/libLLVMSupport.a(Signals.cpp.o)(.gnu.linkonce.t._ZN4llvm3sys10SmartMutexILb1EE7acquireEv+0x22): In function `llvm::sys::SmartMutextrue::acquire()': /usr/include/g++/bits/stl_vector.h:601: undefined reference to `llvm::sys::MutexImpl::acquire()' ../../lib/libLLVMSupport.a(Threading.cpp.o)(.gnu.linkonce.t._ZN4llvm3sys10SmartMutexILb0EE7acquireEv+0x19): In function `llvm::sys::SmartMutexfalse::acquire()': /home/ports/pobj/llvm-3.0/llvm-3.0.src/lib/Support/Threading.cpp:56: undefined reference to `llvm::sys::MutexImpl::acquire()' collect2: ld returned 1 exit status Sebastian cheers, David
Re: UPDATE: llvm-3.0rc1 just for testing...
On Sun, Dec 04, 2011 at 09:28:35PM +, Stuart Henderson wrote: Updated diff to llvm/clang 3.0 final; I have made a few timings (on amd64) - FWIW, I successfully built llvm 3.0 on sparc64. Regards, Simon
Re: UPDATE: llvm-3.0rc1 just for testing...
On 2011-11-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: Hi, On Thursday, November 24, 2011 04:21 CET, Jonathan Gray j...@goblin.cx wrote: On Tue, Nov 15, 2011 at 09:33:21AM +, Stuart Henderson wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. I kind of recognized it earlier, but now I started measuring times, and for me, the clang 3.0 is dog slow. I compile sth. with clang 2.9, an WIP libobjc2 port (mostly C), and with clang 3.0 it takes more than two times the time to compile it. Also with other gnustep objective-c stuff, its about the same speed difference. clang 2.9 is much faster than gcc, but now clang 3.0 is much slower than gcc. Updated diff to llvm/clang 3.0 final; I have made a few timings (on amd64) - net/quagga - gcc5m4.02s real 1m52.13s user 1m11.42s system 2.93m40.45s real 1m19.55s user 0m47.52s system 3.03m34.62s real 1m18.41s user 0m42.63s system math/calc - gcc1m0.05s real 0m23.12s user 0m15.56s system 2.90m48.41s real 0m18.34s user 0m12.21s system 3.00m44.68s real 0m16.56s user 0m10.89s system lang/lua - gcc0m15.60s real 0m6.65s user 0m4.06s system 2.90m12.83s real 0m5.76s user 0m2.87s system 3.00m11.13s real 0m4.69s user 0m2.58s system misc/screen - gcc0m36.67s real 0m16.07s user 0m8.98s system 2.90m31.30s real 0m11.56s user 0m7.68s system 3.00m28.18s real 0m11.44s user 0m6.51s system I wonder if any additional diagnostics were enabled in betas that may have reduced speed. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- Makefile16 Sep 2011 09:24:52 - 1.34 +++ Makefile4 Dec 2011 21:26:15 - @@ -1,10 +1,11 @@ # $OpenBSD: Makefile,v 1.34 2011/09/16 09:24:52 espie Exp $ -COMMENT = Low Level Virtual Machine (LLVM) compiler infrastructure +SHARED_LIBS += libclang 0.0 # 3.0 -LLVM_V = 2.9 +COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools + +LLVM_V = 3.0 DISTNAME = llvm-${LLVM_V} -REVISION = 3 CATEGORIES = devel @@ -12,8 +13,7 @@ CATEGORIES = devel HOMEPAGE = http://www.llvm.org/ VMEM_WARNING = Yes -ONLY_FOR_ARCHS =${GCC4_ARCHS} -BROKEN-sparc64 =not yet working on sparc64 +ONLY_FOR_ARCHS = ${GCC4_ARCHS} # BSD PERMIT_PACKAGE_CDROM = Yes @@ -25,22 +25,16 @@ WANTLIB = c m pthread stdc++ MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ -DISTFILES= ${DISTNAME}.tgz clang-${LLVM_V}.tgz +DISTFILES =${DISTNAME}${EXTRACT_SUFX} clang-${LLVM_V}${EXTRACT_SUFX} +WRKDIST = ${WRKDIR}/llvm-${LLVM_V}.src post-extract: - @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang - -MODULES = lang/python + @mv ${WRKDIR}/clang-${LLVM_V}.src ${WRKDIST}/tools/clang -# graphviz can be optionally used to draw graphs, but adds heavy build and -# run dependencies, and this feature is often not needed. lie to autoconf -# so we can build consistent packages without pulling in a stack of gnome -# libraries; people wanting to use this can pkg_add graphviz. -CONFIGURE_ENV =ac_cv_path_DOT=${LOCALBASE}/bin/dot \ - ac_cv_path_DOTTY=${LOCALBASE}/bin/dotty \ - ac_cv_path_GV=echo gv +MODULES = devel/cmake \ + lang/python -REGRESS_DEPENDS=devel/dejagnu +REGRESS_DEPENDS = devel/dejagnu MAKE_FLAGS = OPTIMIZE_OPTION=${CFLAGS} \ VERBOSE=Yes \ @@ -49,35 +43,38 @@ MAKE_FLAGS =OPTIMIZE_OPTION=${CFLAGS} REGRESS_FLAGS =RUNTESTFLAGS= SEPARATE_BUILD = simple -USE_GMAKE =Yes USE_LIBTOOL = Yes -USE_GROFF =Yes MAKE_ENV = REQUIRES_RTTI=1 -# also supports cmake -CONFIGURE_STYLE = gnu -CONFIGURE_ARGS = --enable-bindings=no \ - --enable-libffi=no \ - --enable-optimized - -MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC}/autoconf +CONFIGURE_STYLE = cmake +CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ + -DCMAKE_BUILD_TYPE:String=Release CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include -SUBST_VARS += CLANG_INCLUDE_PATH +SUBST_VARS += CLANG_INCLUDE_PATH pre-configure: @perl -pi -e s,-lpthread,-pthread,g ${WRKSRC}/configure @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build - @ln -s ${MODPY_BIN} ${WRKDIR}/bin/python + -@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python + +post-build: + cd ${WRKSRC}/docs/CommandGuide for i in *.pod; do \ + pod2man --release
Re: UPDATE: llvm-3.0rc1 just for testing...
Hi, On Thursday, November 24, 2011 04:21 CET, Jonathan Gray j...@goblin.cx wrote: On Tue, Nov 15, 2011 at 09:33:21AM +, Stuart Henderson wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. I kind of recognized it earlier, but now I started measuring times, and for me, the clang 3.0 is dog slow. I compile sth. with clang 2.9, an WIP libobjc2 port (mostly C), and with clang 3.0 it takes more than two times the time to compile it. Also with other gnustep objective-c stuff, its about the same speed difference. clang 2.9 is much faster than gcc, but now clang 3.0 is much slower than gcc. someone else recognized this too? Sebastian any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. Why switch to cmake? There have been problems updating it in the past and gmake works fine. Anyway here is a quick rc4 port that includes a diff to ignore -Wbounded, this doesn't have your changes the Lexer.cpp diff isn't yet removed and the various Makefile changes aren't here. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- Makefile 16 Sep 2011 09:24:52 - 1.34 +++ Makefile 24 Nov 2011 03:03:55 - @@ -2,9 +2,8 @@ COMMENT =Low Level Virtual Machine (LLVM) compiler infrastructure -LLVM_V = 2.9 +LLVM_V = 3.0rc4 DISTNAME = llvm-${LLVM_V} -REVISION = 3 CATEGORIES = devel @@ -23,12 +22,14 @@ PERMIT_DISTFILES_FTP =Yes WANTLIB =c m pthread stdc++ -MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +#MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +MASTER_SITES = http://llvm.org/pre-releases/3.0/rc4/ -DISTFILES= ${DISTNAME}.tgz clang-${LLVM_V}.tgz +DISTFILES= ${DISTNAME}.src.tar.gz clang-${LLVM_V}.src.tar.gz +WRKDIST= ${WRKDIR}/llvm-${LLVM_V}.src post-extract: - @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang + @mv ${WRKDIR}/clang-${LLVM_V}.src ${WRKDIST}/tools/clang MODULES =lang/python @@ -62,7 +63,7 @@ CONFIGURE_ARGS =--enable-bindings=no \ MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC}/autoconf -CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include +CLANG_INCLUDE_PATH = lib/clang/${LLVM_V:C/rc.*$//}/include SUBST_VARS +=CLANG_INCLUDE_PATH pre-configure: Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo 9 Apr 2011 21:43:39 - 1.8 +++ distinfo 24 Nov 2011 03:03:55 - @@ -1,10 +1,10 @@ -MD5 (clang-2.9.tgz) = Y03hjQS3pN7RnsTBfSPPyg== -MD5 (llvm-2.9.tgz) = eTE4QS0q8sfH9UYV+JQ3cQ== -RMD160 (clang-2.9.tgz) = SrecvQ4q0loicubuL7v1RoGNvXM= -RMD160 (llvm-2.9.tgz) = yuqgZ/2h6zQZazVqCHZF+Dcxz7c= -SHA1 (clang-2.9.tgz) = X9O1zsBQ7BKFjBYCsjzwligq1KQ= -SHA1 (llvm-2.9.tgz) = UA9Yf4QBmaxTxPx1coOdCPqdkSM= -SHA256 (clang-2.9.tgz) = cMQfP3gqccuqe8jW6in85CY60+hVjf7MbcEc3vF5Cd8= -SHA256 (llvm-2.9.tgz) = ZhI2z6F0KLSM+py7mQn3VpxkuOzSGf2R28AOO1V7N3k= -SIZE (clang-2.9.tgz) = 6243772 -SIZE (llvm-2.9.tgz) = 9574781 +MD5 (clang-3.0rc4.src.tar.gz) = rvN4zb918DT+yAdgxO4Rcg== +MD5 (llvm-3.0rc4.src.tar.gz) = A61cynTmYq5lVxp6Hnr4pQ== +RMD160 (clang-3.0rc4.src.tar.gz) = /IvLmEtV0Kzbq4c/zxqeSqmbPuc= +RMD160 (llvm-3.0rc4.src.tar.gz) = cQISwvoRwBRxMPYErLatf04IN4E= +SHA1 (clang-3.0rc4.src.tar.gz) = sTFHq8zIOwUppDvEnH6/XSmnEQs= +SHA1 (llvm-3.0rc4.src.tar.gz) = LEKfb4RxNCrUNC5iCLCiyBqTYVA= +SHA256 (clang-3.0rc4.src.tar.gz) = pe0GN0jKIaPyMTNq9wiPColF/eNHgzIGXG47LKgUPtg= +SHA256 (llvm-3.0rc4.src.tar.gz) = eA6eT5RmbKebyPGju4IbHP7z6NS013t7gaFLR9a72CE= +SIZE (clang-3.0rc4.src.tar.gz) = 7308666 +SIZE (llvm-3.0rc4.src.tar.gz) = 10526647 Index: patches/patch-tools_clang_lib_Lex_Lexer_cpp === RCS file: /cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Lex_Lexer_cpp,v retrieving revision 1.6 diff -u -p -r1.6 patch-tools_clang_lib_Lex_Lexer_cpp --- patches/patch-tools_clang_lib_Lex_Lexer_cpp 13 Jan 2011 00:15:50 - 1.6 +++ patches/patch-tools_clang_lib_Lex_Lexer_cpp 24 Nov 2011 03:03:55 - @@ -1,7 +1,7 @@ $OpenBSD: patch-tools_clang_lib_Lex_Lexer_cpp,v 1.6 2011/01/13 00:15:50 jeremy Exp $ tools/clang/lib/Lex/Lexer.cpp.orig Tue Aug 31 09:42:00 2010 -+++ tools/clang/lib/Lex/Lexer.cppThu Jan 6 11:26:07 2011 -@@ -1334,6 +1334,7 @@ static bool isEndOfBlockCommentWithEscapedNewLine(cons +--- tools/clang/lib/Lex/Lexer.cpp.orig Sat
Re: UPDATE: llvm-3.0rc1 just for testing...
On Thursday, November 24, 2011 04:21 CET, Jonathan Gray j...@goblin.cx wrote: On Tue, Nov 15, 2011 at 09:33:21AM +, Stuart Henderson wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. Why switch to cmake? There have been problems updating it in the past and gmake works fine. Anyway here is a quick rc4 port that includes a diff to ignore -Wbounded, this doesn't have your changes the Lexer.cpp diff isn't yet removed and the various Makefile changes aren't here. This rc4 builds fine for me on i386, not like the rc3 from Sthen. Regression test passes with some failures: 1 warning(s) in tests. Testing Time: 424.34s Failing Tests (4): LLVM :: CodeGen/X86/vec_compare-2.ll LLVM :: Feature/load_module.ll LLVM :: MC/ARM/elf-reloc-01.ll LLVM :: Transforms/LoopStrengthReduce/pr2570.ll Expected Passes: 5588 Expected Failures : 48 Unsupported Tests : 15 Unexpected Failures: 4 Anyways, I used the rc1, and also tested with a svn trunk checkout past 3.0, to build all the x11/gnustep objective-c stuff, which worked well. I guess it will also not build on sparc64, see this bug I created in their bug tracker: http://llvm.org/bugs/show_bug.cgi?id=11273 Maybe now its possible to use gcc-4.6 from ports on sparc64 to build it successfully? cheers, Sebastian
Re: UPDATE: llvm-3.0rc1 just for testing...
On 2011/11/24 14:21, Jonathan Gray wrote: On Tue, Nov 15, 2011 at 09:33:21AM +, Stuart Henderson wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. Why switch to cmake? There have been problems updating it in the past and gmake works fine. The cmake build produces a correctly versioned liblibclang.so which the autoconf build doesn't +@lib lib/liblibclang.so.${LIBlibclang_VERSION} vs lib/libclang.so Anyway here is a quick rc4 port that includes a diff to ignore -Wbounded, I'll merge this in
Re: UPDATE: llvm-3.0rc1 just for testing...
On 2011/11/24 09:47, Sebastian Reitenbach wrote: This rc4 builds fine for me on i386, not like the rc3 from Sthen. rc4 builds fine on i386 with cmake too. I guess it will also not build on sparc64, see this bug I created in their bug tracker: I tested rc3 build on sparc64, that does work (but sparc64 is not targetted for code production so it's of limited use)
Re: UPDATE: llvm-3.0rc1 just for testing...
On Tue, Nov 15, 2011 at 09:33:21AM +, Stuart Henderson wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. Why switch to cmake? There have been problems updating it in the past and gmake works fine. Anyway here is a quick rc4 port that includes a diff to ignore -Wbounded, this doesn't have your changes the Lexer.cpp diff isn't yet removed and the various Makefile changes aren't here. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- Makefile16 Sep 2011 09:24:52 - 1.34 +++ Makefile24 Nov 2011 03:03:55 - @@ -2,9 +2,8 @@ COMMENT = Low Level Virtual Machine (LLVM) compiler infrastructure -LLVM_V = 2.9 +LLVM_V = 3.0rc4 DISTNAME = llvm-${LLVM_V} -REVISION = 3 CATEGORIES = devel @@ -23,12 +22,14 @@ PERMIT_DISTFILES_FTP = Yes WANTLIB = c m pthread stdc++ -MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +#MASTER_SITES =http://llvm.org/releases/${LLVM_V}/ +MASTER_SITES = http://llvm.org/pre-releases/3.0/rc4/ -DISTFILES= ${DISTNAME}.tgz clang-${LLVM_V}.tgz +DISTFILES= ${DISTNAME}.src.tar.gz clang-${LLVM_V}.src.tar.gz +WRKDIST= ${WRKDIR}/llvm-${LLVM_V}.src post-extract: - @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang + @mv ${WRKDIR}/clang-${LLVM_V}.src ${WRKDIST}/tools/clang MODULES = lang/python @@ -62,7 +63,7 @@ CONFIGURE_ARGS = --enable-bindings=no \ MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC}/autoconf -CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include +CLANG_INCLUDE_PATH = lib/clang/${LLVM_V:C/rc.*$//}/include SUBST_VARS += CLANG_INCLUDE_PATH pre-configure: Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo9 Apr 2011 21:43:39 - 1.8 +++ distinfo24 Nov 2011 03:03:55 - @@ -1,10 +1,10 @@ -MD5 (clang-2.9.tgz) = Y03hjQS3pN7RnsTBfSPPyg== -MD5 (llvm-2.9.tgz) = eTE4QS0q8sfH9UYV+JQ3cQ== -RMD160 (clang-2.9.tgz) = SrecvQ4q0loicubuL7v1RoGNvXM= -RMD160 (llvm-2.9.tgz) = yuqgZ/2h6zQZazVqCHZF+Dcxz7c= -SHA1 (clang-2.9.tgz) = X9O1zsBQ7BKFjBYCsjzwligq1KQ= -SHA1 (llvm-2.9.tgz) = UA9Yf4QBmaxTxPx1coOdCPqdkSM= -SHA256 (clang-2.9.tgz) = cMQfP3gqccuqe8jW6in85CY60+hVjf7MbcEc3vF5Cd8= -SHA256 (llvm-2.9.tgz) = ZhI2z6F0KLSM+py7mQn3VpxkuOzSGf2R28AOO1V7N3k= -SIZE (clang-2.9.tgz) = 6243772 -SIZE (llvm-2.9.tgz) = 9574781 +MD5 (clang-3.0rc4.src.tar.gz) = rvN4zb918DT+yAdgxO4Rcg== +MD5 (llvm-3.0rc4.src.tar.gz) = A61cynTmYq5lVxp6Hnr4pQ== +RMD160 (clang-3.0rc4.src.tar.gz) = /IvLmEtV0Kzbq4c/zxqeSqmbPuc= +RMD160 (llvm-3.0rc4.src.tar.gz) = cQISwvoRwBRxMPYErLatf04IN4E= +SHA1 (clang-3.0rc4.src.tar.gz) = sTFHq8zIOwUppDvEnH6/XSmnEQs= +SHA1 (llvm-3.0rc4.src.tar.gz) = LEKfb4RxNCrUNC5iCLCiyBqTYVA= +SHA256 (clang-3.0rc4.src.tar.gz) = pe0GN0jKIaPyMTNq9wiPColF/eNHgzIGXG47LKgUPtg= +SHA256 (llvm-3.0rc4.src.tar.gz) = eA6eT5RmbKebyPGju4IbHP7z6NS013t7gaFLR9a72CE= +SIZE (clang-3.0rc4.src.tar.gz) = 7308666 +SIZE (llvm-3.0rc4.src.tar.gz) = 10526647 Index: patches/patch-tools_clang_lib_Lex_Lexer_cpp === RCS file: /cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Lex_Lexer_cpp,v retrieving revision 1.6 diff -u -p -r1.6 patch-tools_clang_lib_Lex_Lexer_cpp --- patches/patch-tools_clang_lib_Lex_Lexer_cpp 13 Jan 2011 00:15:50 - 1.6 +++ patches/patch-tools_clang_lib_Lex_Lexer_cpp 24 Nov 2011 03:03:55 - @@ -1,7 +1,7 @@ $OpenBSD: patch-tools_clang_lib_Lex_Lexer_cpp,v 1.6 2011/01/13 00:15:50 jeremy Exp $ tools/clang/lib/Lex/Lexer.cpp.orig Tue Aug 31 09:42:00 2010 -+++ tools/clang/lib/Lex/Lexer.cpp Thu Jan 6 11:26:07 2011 -@@ -1334,6 +1334,7 @@ static bool isEndOfBlockCommentWithEscapedNewLine(cons +--- tools/clang/lib/Lex/Lexer.cpp.orig Sat Oct 15 12:18:56 2011 tools/clang/lib/Lex/Lexer.cpp Thu Nov 24 12:32:48 2011 +@@ -1853,6 +1853,7 @@ static bool isEndOfBlockCommentWithEscapedNewLine(cons return true; } Index: patches/patch-tools_clang_lib_Sema_AttributeList_cpp === RCS file: /cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Sema_AttributeList_cpp,v retrieving revision 1.1 diff -u -p -r1.1 patch-tools_clang_lib_Sema_AttributeList_cpp --- patches/patch-tools_clang_lib_Sema_AttributeList_cpp13 Jan 2011 00:15:50 - 1.1 +++ patches/patch-tools_clang_lib_Sema_AttributeList_cpp
Re: UPDATE: llvm-3.0rc1 just for testing...
Hi, On Tuesday, November 15, 2011 10:33 CET, Stuart Henderson s...@spacehopper.org wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. The rc3 fails to build for me on i386: [ 7%] Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86RecognizableInstr.cpp.o cd /home/ports/pobj/llvm-3.0rc3.src/build-i386/utils/TableGen /usr/bin/c++ -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DI_WAS_HERE -fPIC -DNDEBUG -I/home/ports/pobj/llvm-3.0rc3.src/build-i386/utils/TableGen -I/home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen -I/home/ports/pobj/llvm-3.0rc3.src/build-i386/include -I/home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/include-Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -o CMakeFiles/llvm-tblgen.dir/X86RecognizableInstr.cpp.o -c /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/X86RecognizableInstr.cpp In file included from /usr/include/g++/memory:60, from /usr/include/g++/string:48, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/X86DisassemblerShared.h:13, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/X86RecognizableInstr.cpp:17: /usr/include/g++/limits: In static member function 'static char std::numeric_limitschar::min()': /usr/include/g++/limits:375: warning: overflow in implicit constant conversion /usr/include/g++/limits: In static member function 'static wchar_t std::numeric_limitswchar_t::max()': /usr/include/g++/limits:530: warning: overflow in implicit constant conversion In file included from /usr/include/g++/bits/locale_facets.h:47, from /usr/include/g++/bits/basic_ios.h:44, from /usr/include/g++/ios:50, from /usr/include/g++/ostream:45, from /usr/include/g++/iterator:70, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/include/llvm/ADT/SmallVector.h:23, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/include/llvm/ADT/SmallSet.h:17, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/include/llvm/ADT/SetVector.h:23, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/SetTheory.h:51, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/CodeGenRegisters.h:18, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/CodeGenTarget.h:20, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/X86RecognizableInstr.h:22, from /home/ports/pobj/llvm-3.0rc3.src/llvm-3.0rc3.src/utils/TableGen/X86RecognizableInstr.cpp:18: /usr/include/g++/i386-unknown-openbsd5.0/bits/ctype_base.h: At global scope: /usr/include/g++/i386-unknown-openbsd5.0/bits/ctype_base.h:55: warning: overflow in implicit constant conversion Linking CXX executable ../../bin/llvm-tblgen cd /home/ports/pobj/llvm-3.0rc3.src/build-i386/utils/TableGen /usr/local/bin/cmake -E cmake_link_script CMakeFiles/llvm-tblgen.dir/link.txt --verbose=Yes /usr/bin/c++ -DI_WAS_HERE -fPIC -DNDEBUG CMakeFiles/llvm-tblgen.dir/ARMDecoderEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/AsmMatcherEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/AsmWriterEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/AsmWriterInst.cpp.o CMakeFiles/llvm-tblgen.dir/CallingConvEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/CodeEmitterGen.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenInstruction.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenRegisters.cpp.o CMakeFiles/llvm-tblgen.dir/CodeGenTarget.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcherGen.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o CMakeFiles/llvm-tblgen.dir/DAGISelMatcher.cpp.o CMakeFiles/llvm-tblgen.dir/DisassemblerEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/EDEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/FastISelEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/FixedLenDecoderEmi tter.cpp.o CMakeFiles/llvm-tblgen.dir/InstrEnumEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/InstrInfoEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/IntrinsicEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/RegisterInfoEmitter.cpp.o CMakeFiles/llvm-tblgen.dir/SetTheory.cpp.o CMakeFiles/llvm-tblgen.dir/StringMatcher.cpp.o CMakeFiles/llvm-tblgen.dir/SubtargetEmitter.cpp.o CMakeFiles/llvm
Re: UPDATE: llvm-3.0rc1 just for testing...
On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- Makefile16 Sep 2011 09:24:52 - 1.34 +++ Makefile15 Nov 2011 09:29:15 - @@ -1,10 +1,11 @@ # $OpenBSD: Makefile,v 1.34 2011/09/16 09:24:52 espie Exp $ -COMMENT = Low Level Virtual Machine (LLVM) compiler infrastructure +SHARED_LIBS += libclang 0.0 # 3.0 -LLVM_V = 2.9 -DISTNAME = llvm-${LLVM_V} -REVISION = 3 +COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools + +LLVM_V = 3.0 +DISTNAME = llvm-${LLVM_V}rc3.src CATEGORIES = devel @@ -23,14 +24,18 @@ PERMIT_DISTFILES_FTP = Yes WANTLIB = c m pthread stdc++ -MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +#MASTER_SITES =http://llvm.org/releases/${LLVM_V}/ +MASTER_SITES = http://llvm.org/pre-releases/3.0/rc3/ -DISTFILES= ${DISTNAME}.tgz clang-${LLVM_V}.tgz +DISTFILES =${DISTNAME}.tar.gz clang-${LLVM_V}rc3.src.tar.gz +WRKDIST = ${WRKDIR}/llvm-${LLVM_V}rc3.src post-extract: - @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang + @rm ${WRKDIST}/tools/clang + @mv ${WRKDIR}/clang-${LLVM_V}rc3.src ${WRKDIST}/tools/clang -MODULES = lang/python +MODULES = devel/cmake \ + lang/python # graphviz can be optionally used to draw graphs, but adds heavy build and # run dependencies, and this feature is often not needed. lie to autoconf @@ -49,18 +54,13 @@ MAKE_FLAGS =OPTIMIZE_OPTION=${CFLAGS} REGRESS_FLAGS =RUNTESTFLAGS= SEPARATE_BUILD = simple -USE_GMAKE =Yes USE_LIBTOOL = Yes -USE_GROFF =Yes MAKE_ENV = REQUIRES_RTTI=1 # also supports cmake -CONFIGURE_STYLE = gnu -CONFIGURE_ARGS = --enable-bindings=no \ - --enable-libffi=no \ - --enable-optimized - -MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC}/autoconf +CONFIGURE_STYLE = cmake +CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ + -DCMAKE_BUILD_TYPE:String=Release CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include SUBST_VARS += CLANG_INCLUDE_PATH @@ -70,14 +70,23 @@ pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build @ln -s ${MODPY_BIN} ${WRKDIR}/bin/python +post-build: + cd ${WRKSRC}/docs/CommandGuide for i in *.pod; do \ + pod2man --release=CVS --center=LLVM Command Guide \ + $$i man/man1/$${i%.pod}.1; \ + done + pod2man --release=CVS --center=LLVM Command Guide \ + ${WRKSRC}/tools/clang/docs/tools/clang.pod \ + ${WRKSRC}/docs/CommandGuide/man/man1/clang.1 + post-install: - @${INSTALL_DATA_DIR} ${PREFIX}/share/llvm - @${INSTALL_DATA_DIR} ${WRKINST}/${MODPY_SITEPKG} - @${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \ + ${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \ ${WRKSRC}/tools/clang/tools/scan-build/c++-analyzer \ ${WRKSRC}/tools/clang/tools/scan-build/scan-build ${PREFIX}/bin - @${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/sorttable.js \ + ${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/sorttable.js \ ${WRKSRC}/tools/clang/tools/scan-build/scanview.css \ ${PREFIX}/share/llvm + ${INSTALL_DATA} ${WRKSRC}/docs/CommandGuide/man/man1/* \ + ${PREFIX}/man/man1 .include bsd.port.mk Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo9 Apr 2011 21:43:39 - 1.8 +++ distinfo15 Nov 2011 09:29:15 - @@ -1,10 +1,10 @@ -MD5 (clang-2.9.tgz) = Y03hjQS3pN7RnsTBfSPPyg== -MD5 (llvm-2.9.tgz) = eTE4QS0q8sfH9UYV+JQ3cQ== -RMD160 (clang-2.9.tgz) = SrecvQ4q0loicubuL7v1RoGNvXM= -RMD160 (llvm-2.9.tgz) = yuqgZ/2h6zQZazVqCHZF+Dcxz7c= -SHA1 (clang-2.9.tgz) = X9O1zsBQ7BKFjBYCsjzwligq1KQ= -SHA1 (llvm-2.9.tgz) = UA9Yf4QBmaxTxPx1coOdCPqdkSM= -SHA256 (clang-2.9.tgz) = cMQfP3gqccuqe8jW6in85CY60+hVjf7MbcEc3vF5Cd8= -SHA256 (llvm-2.9.tgz) = ZhI2z6F0KLSM+py7mQn3VpxkuOzSGf2R28AOO1V7N3k= -SIZE (clang-2.9.tgz) = 6243772 -SIZE (llvm-2.9.tgz) = 9574781 +MD5 (clang-3.0rc3.src.tar.gz) = idnrV1x/UKcEGn70DlZdiw== +MD5 (llvm-3.0rc3.src.tar.gz) = hIxSHreenVZTq8dGSbOuRg== +RMD160 (clang-3.0rc3.src.tar.gz
Re: UPDATE: llvm-3.0rc1 just for testing...
On Tue, Nov 15, 2011 at 3:33 AM, Stuart Henderson s...@spacehopper.org wrote: On 2011-10-26, Sebastian Reitenbach sebas...@l00-bugdead-prods.de wrote: attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks release is scheduled for tomorrow; here is an updated diff for rc3, also switching the build to cmake. any opinions on splitting clang off into a separate subpackage? i could do so if it might be useful to someone, but haven't seen any point in this yet. Stuart, Its good that we are finally removing the Lex_Lexer SSE2 patch for i386. I have saved matthew@ diff to our base gcc which allows clang++ to compile and run programs without problems, can that go in with everybody's consent? thanks http://www.mail-archive.com/ports@openbsd.org/msg32672.html or http://marc.info/?l=openbsd-portsm=129783295016631w=2 (same post but different server) Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- Makefile 16 Sep 2011 09:24:52 - 1.34 +++ Makefile 15 Nov 2011 09:29:15 - @@ -1,10 +1,11 @@ # $OpenBSD: Makefile,v 1.34 2011/09/16 09:24:52 espie Exp $ -COMMENT = Low Level Virtual Machine (LLVM) compiler infrastructure +SHARED_LIBS += libclang 0.0 # 3.0 -LLVM_V = 2.9 -DISTNAME = llvm-${LLVM_V} -REVISION = 3 +COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools + +LLVM_V = 3.0 +DISTNAME = llvm-${LLVM_V}rc3.src CATEGORIES = devel @@ -23,14 +24,18 @@ PERMIT_DISTFILES_FTP = Yes WANTLIB = c m pthread stdc++ -MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +#MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +MASTER_SITES = http://llvm.org/pre-releases/3.0/rc3/ -DISTFILES= ${DISTNAME}.tgz clang-${LLVM_V}.tgz +DISTFILES = ${DISTNAME}.tar.gz clang-${LLVM_V}rc3.src.tar.gz +WRKDIST = ${WRKDIR}/llvm-${LLVM_V}rc3.src post-extract: - @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang + @rm ${WRKDIST}/tools/clang + @mv ${WRKDIR}/clang-${LLVM_V}rc3.src ${WRKDIST}/tools/clang -MODULES = lang/python +MODULES = devel/cmake \ + lang/python # graphviz can be optionally used to draw graphs, but adds heavy build and # run dependencies, and this feature is often not needed. lie to autoconf @@ -49,18 +54,13 @@ MAKE_FLAGS = OPTIMIZE_OPTION=${CFLAGS} REGRESS_FLAGS = RUNTESTFLAGS= SEPARATE_BUILD = simple -USE_GMAKE = Yes USE_LIBTOOL = Yes -USE_GROFF = Yes MAKE_ENV = REQUIRES_RTTI=1 # also supports cmake -CONFIGURE_STYLE = gnu -CONFIGURE_ARGS = --enable-bindings=no \ - --enable-libffi=no \ - --enable-optimized - -MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC}/autoconf +CONFIGURE_STYLE = cmake +CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ + -DCMAKE_BUILD_TYPE:String=Release CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include SUBST_VARS += CLANG_INCLUDE_PATH @@ -70,14 +70,23 @@ pre-configure: @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build @ln -s ${MODPY_BIN} ${WRKDIR}/bin/python +post-build: + cd ${WRKSRC}/docs/CommandGuide for i in *.pod; do \ + pod2man --release=CVS --center=LLVM Command Guide \ + $$i man/man1/$${i%.pod}.1; \ + done + pod2man --release=CVS --center=LLVM Command Guide \ + ${WRKSRC}/tools/clang/docs/tools/clang.pod \ + ${WRKSRC}/docs/CommandGuide/man/man1/clang.1 + post-install: - @${INSTALL_DATA_DIR} ${PREFIX}/share/llvm - @${INSTALL_DATA_DIR} ${WRKINST}/${MODPY_SITEPKG} - @${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \ + ${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \ ${WRKSRC}/tools/clang/tools/scan-build/c++-analyzer \ ${WRKSRC}/tools/clang/tools/scan-build/scan-build ${PREFIX}/bin - @${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/sorttable.js \ + ${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/sorttable.js \ ${WRKSRC}/tools/clang/tools/scan-build/scanview.css \ ${PREFIX}/share/llvm + ${INSTALL_DATA} ${WRKSRC}/docs/CommandGuide/man/man1/* \ + ${PREFIX}/man/man1 .include bsd.port.mk Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo 9 Apr 2011 21:43:39 - 1.8 +++ distinfo 15 Nov 2011 09:29:15 - @@ -1,10 +1,10 @@ -MD5 (clang-2.9.tgz) = Y03hjQS3pN7RnsTBfSPPyg== -MD5 (llvm-2.9.tgz) = eTE4QS0q8sfH9UYV+JQ3cQ== -RMD160 (clang
UPDATE: llvm-3.0rc1 just for testing...
Hi, attached patch to update llvm to 3.0 rc1. The 3.0 is supposed to be released in a couple of weeks, so I thought, good time to test, and report back regressions, so that they maybe get fixed for the release. report bugs/problems there: http://www.llvm.org/bugs/ I use it to test compiling x11/gnustep with it, instead of using gcc, and actually found some regressions. The port is ugly, so I don't ask whether this can go in, but I hope its maybe useful for someone. cheers, SebastianIndex: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.34 diff -u -r1.34 Makefile --- Makefile 16 Sep 2011 09:24:52 - 1.34 +++ Makefile 26 Oct 2011 11:46:10 - @@ -2,9 +2,8 @@ COMMENT = Low Level Virtual Machine (LLVM) compiler infrastructure -LLVM_V = 2.9 -DISTNAME = llvm-${LLVM_V} -REVISION = 3 +LLVM_V = 3.0rc1 +DISTNAME = llvm-${LLVM_V}.src CATEGORIES = devel @@ -23,11 +22,14 @@ WANTLIB = c m pthread stdc++ -MASTER_SITES = http://llvm.org/releases/${LLVM_V}/ +#MASTER_SITES = http://llvm.org/pre-releases/${LLVM_V}/ +MASTER_SITES = http://llvm.org/pre-releases/3.0/rc1/sources/ -DISTFILES= ${DISTNAME}.tgz clang-${LLVM_V}.tgz +DISTFILES= ${DISTNAME}.tar.gz clang-${LLVM_V}.src.tar.gz +WRKDIST = ${WRKDIR}/llvm-${LLVM_V} post-extract: + @rm ${WRKDIST}/tools/clang @mv ${WRKDIR}/clang-${LLVM_V} ${WRKDIST}/tools/clang MODULES = lang/python Index: distinfo === RCS file: /cvs/ports/devel/llvm/distinfo,v retrieving revision 1.8 diff -u -r1.8 distinfo --- distinfo 9 Apr 2011 21:43:39 - 1.8 +++ distinfo 26 Oct 2011 11:46:10 - @@ -1,10 +1,10 @@ -MD5 (clang-2.9.tgz) = Y03hjQS3pN7RnsTBfSPPyg== -MD5 (llvm-2.9.tgz) = eTE4QS0q8sfH9UYV+JQ3cQ== -RMD160 (clang-2.9.tgz) = SrecvQ4q0loicubuL7v1RoGNvXM= -RMD160 (llvm-2.9.tgz) = yuqgZ/2h6zQZazVqCHZF+Dcxz7c= -SHA1 (clang-2.9.tgz) = X9O1zsBQ7BKFjBYCsjzwligq1KQ= -SHA1 (llvm-2.9.tgz) = UA9Yf4QBmaxTxPx1coOdCPqdkSM= -SHA256 (clang-2.9.tgz) = cMQfP3gqccuqe8jW6in85CY60+hVjf7MbcEc3vF5Cd8= -SHA256 (llvm-2.9.tgz) = ZhI2z6F0KLSM+py7mQn3VpxkuOzSGf2R28AOO1V7N3k= -SIZE (clang-2.9.tgz) = 6243772 -SIZE (llvm-2.9.tgz) = 9574781 +MD5 (clang-3.0rc1.src.tar.gz) = xTkDnpi7VeZwjMKT8zmpKQ== +MD5 (llvm-3.0rc1.src.tar.gz) = 6UGBf/Y32MG19cKb01yiHw== +RMD160 (clang-3.0rc1.src.tar.gz) = 5zN4XLq59SmokiIRmV+P+0lFDuM= +RMD160 (llvm-3.0rc1.src.tar.gz) = hMmlkR4ODkJDeEucb2yOG/GK/Vk= +SHA1 (clang-3.0rc1.src.tar.gz) = vcujb6Bt/+S5I1sT6ndA8woEwj0= +SHA1 (llvm-3.0rc1.src.tar.gz) = BVou+Bzau44DJfTLpWNVK1e7DMA= +SHA256 (clang-3.0rc1.src.tar.gz) = 7OIKfSrMMTQ3heyQmxeigfMYrlyEcwbKOrBMqBgDlPY= +SHA256 (llvm-3.0rc1.src.tar.gz) = gA1nQT+EbnBZwFsXSDmEV+A6d4U5PAxWW8+1JI1Q7fQ= +SIZE (clang-3.0rc1.src.tar.gz) = 7230982 +SIZE (llvm-3.0rc1.src.tar.gz) = 10348118 Index: patches/patch-Makefile_config_in === RCS file: /cvs/ports/devel/llvm/patches/patch-Makefile_config_in,v retrieving revision 1.4 diff -u -r1.4 patch-Makefile_config_in --- patches/patch-Makefile_config_in 13 Jan 2011 00:15:50 - 1.4 +++ patches/patch-Makefile_config_in 26 Oct 2011 11:46:10 - @@ -1,6 +1,6 @@ $OpenBSD: patch-Makefile_config_in,v 1.4 2011/01/13 00:15:50 jeremy Exp $ Makefile.config.in.orig Tue Aug 3 15:53:22 2010 -+++ Makefile.config.in Thu Jan 6 11:26:07 2011 +--- Makefile.config.in.orig Thu Oct 13 19:27:34 2011 Makefile.config.in Tue Oct 25 01:14:45 2011 @@ -83,11 +83,11 @@ LLVMMAKE := $(LLVM_SRC_ROOT)/make PROJ_bindir := $(PROJ_prefix)/bin PROJ_libdir := $(PROJ_prefix)/lib Index: patches/patch-tools_clang_lib_CodeGen_CGObjCGNU_cpp === RCS file: patches/patch-tools_clang_lib_CodeGen_CGObjCGNU_cpp diff -N patches/patch-tools_clang_lib_CodeGen_CGObjCGNU_cpp --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_clang_lib_CodeGen_CGObjCGNU_cpp 26 Oct 2011 11:46:10 - @@ -0,0 +1,58 @@ +$OpenBSD$ + +fix bug in objc compilation + +--- tools/clang/lib/CodeGen/CGObjCGNU.cpp.orig Sat Oct 8 10:54:36 2011 tools/clang/lib/CodeGen/CGObjCGNU.cpp Tue Oct 25 01:15:53 2011 +@@ -1361,8 +1361,8 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure( + LongTy, // abi_version + IvarOffsets-getType(), // ivar_offsets + Properties-getType(), // properties +- Int64Ty,// strong_pointers +- Int64Ty,// weak_pointers ++ IntPtrTy, // strong_pointers ++ IntPtrTy, // weak_pointers + NULL); + llvm::Constant *Zero = llvm::ConstantInt::get(LongTy, 0); + // Fill in the structure +@@ -1723,12 +1723,14 @@ void CGObjCGNU::GenerateProtocolHolderCategory(void) { + /// bitfield / with the 63rd bit set will be 164. + llvm::Constant *CGObjCGNU::MakeBitField(llvm::SmallVectorImplbool bits) { + int bitCount