On Tue, Feb 16, 2016 at 08:08:13PM +0000, Miod Vallat wrote:
> Actually, I had forgotten to disable the stack protector, and guess
> what? Disabling it produces a working libstdc++, at least for that
> simple use case; I have not tried to build cmake.
> 
> Therefore I suggest the following diff until someone with enough love
> for the utter crap known as `arm' comes with a real compiler fix:
> 
> Index: Makefile
> ===================================================================
> RCS file: /OpenBSD/src/gnu/lib/libstdc++-v3/Makefile,v
> retrieving revision 1.8
> diff -u -p -r1.8 Makefile
> --- Makefile  14 May 2015 02:56:01 -0000      1.8
> +++ Makefile  16 Feb 2016 20:04:20 -0000
> @@ -17,6 +17,9 @@ CFLAGS+=    -frandom-seed=RepeatabilityCons
>  CXXFLAGS+=   -frandom-seed=RepeatabilityConsideredGood
>  CXXFLAGS+=   -fno-implicit-templates -ffunction-sections -fdata-sections \
>               -Wno-deprecated
> +.if ${MACHINE_ARCH} == "arm"
> +CXXFLAGS+=   -fno-stack-protector
> +.endif
>  
>  DPADD=               ${LIBM}
>  LDADD=               -lm
> 

After building src/xenocara and prequisite ports it seems cmake
still has issues:

c++  -O2 -pipe  -I/usr/ports/pobj/cmake-3.4.3/build-arm/Bootstrap.cmk 
-I/usr/ports/pobj/cmake-3.4.3/cmake-3.4.3/Source   
-I/usr/ports/pobj/cmake-3.4.3/build-arm/Bootstrap.cmk  cmake.o cmakemain.o 
cmcmd.o cmCommandArgumentLexer.o cmCommandArgumentParser.o 
cmCommandArgumentParserHelper.o cmCommonTargetGenerator.o 
cmCPackPropertiesGenerator.o cmDefinitions.o cmDepends.o cmDependsC.o 
cmDocumentationFormatter.o cmPolicies.o cmProperty.o cmPropertyMap.o 
cmPropertyDefinition.o cmPropertyDefinitionMap.o cmMakeDepend.o cmMakefile.o 
cmExportFileGenerator.o cmExportInstallFileGenerator.o 
cmExportTryCompileFileGenerator.o cmExportSet.o cmExportSetMap.o 
cmExternalMakefileProjectGenerator.o cmGeneratorExpressionEvaluationFile.o 
cmGeneratedFileStream.o cmGeneratorTarget.o cmGeneratorExpressionContext.o 
cmGeneratorExpressionDAGChecker.o cmGeneratorExpressionEvaluator.o 
cmGeneratorExpressionLexer.o cmGeneratorExpressionNode.o 
cmGeneratorExpressionParser.o cmGeneratorExpression.o cmGlobalCommonGenerator.o 
cmGlobalGenerator.o cmInstallDirectoryGenerator.o cmLocalCommonGenerator.o 
cmLocalGenerator.o cmInstalledFile.o cmInstallGenerator.o 
cmInstallExportGenerator.o cmInstallFilesGenerator.o cmInstallScriptGenerator.o 
cmInstallTargetGenerator.o cmScriptGenerator.o cmSourceFile.o 
cmSourceFileLocation.o cmState.o cmSystemTools.o cmTestGenerator.o cmVersion.o 
cmFileTimeComparison.o cmGlobalUnixMakefileGenerator3.o 
cmLocalUnixMakefileGenerator3.o cmMakefileExecutableTargetGenerator.o 
cmMakefileLibraryTargetGenerator.o cmMakefileTargetGenerator.o 
cmMakefileUtilityTargetGenerator.o cmOutputConverter.o cmOSXBundleGenerator.o 
cmNewLineStyle.o cmBootstrapCommands1.o cmBootstrapCommands2.o 
cmCommandsForBootstrap.o cmTarget.o cmTest.o cmCustomCommand.o 
cmCustomCommandGenerator.o cmCacheManager.o cmListFileCache.o 
cmComputeLinkDepends.o cmComputeLinkInformation.o cmOrderDirectories.o 
cmComputeTargetDepends.o cmComputeComponentGraph.o cmExprLexer.o cmExprParser.o 
cmExprParserHelper.o cmGlobalNinjaGenerator.o cmLocalNinjaGenerator.o 
cmNinjaTargetGenerator.o cmNinjaNormalTargetGenerator.o 
cmNinjaUtilityTargetGenerator.o cmListFileLexer.o Directory.o EncodingCXX.o 
FStream.o Glob.o RegularExpression.o SystemTools.o EncodingC.o ProcessUNIX.o 
String.o System.o Terminal.o -o cmake
cmCommandArgumentParserHelper.o: In function 
`cmCommandArgumentParserHelper::AddString(std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)':
cmCommandArgumentParserHelper.cxx:(.text+0x208): warning: warning: strcpy() is 
almost always misused, please use strlcpy()
cmBootstrapCommands2.o: In function 
`cmStringCommand::HandleRandomCommand(std::vector<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::allocator<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > > const&)':
cmBootstrapCommands2.cxx:(.text+0x43a0): warning: warning: rand() may return 
deterministic values, is that what you want?
cmCommandArgumentParserHelper.o: In function 
`cmCommandArgumentParserHelper::CombineUnions(char*, char*)':
cmCommandArgumentParserHelper.cxx:(.text+0x35c): warning: warning: strcat() is 
almost always misused, please use strlcat()
cmMakefile.o: In function `cmMakefile::AddDefaultDefinitions()':
cmMakefile.cxx:(.text+0x81c4): warning: warning: sprintf() is often misused, 
please use snprintf()
loading initial cache file 
/usr/ports/pobj/cmake-3.4.3/build-arm/Bootstrap.cmk/InitialCacheFlags.cmake
CMake Error: Error processing file: 
/usr/ports/pobj/cmake-3.4.3/build-arm/Bootstrap.cmk/InitialCacheFlags.cmake
assertion "cmSystemTools::FileExists(currentStart.c_str(), true)" failed: file 
"/usr/ports/pobj/cmake-3.4.3/cmake-3.4.3/Source/cmMakefile.cxx", line 1652, 
function "Configure"
Abort trap (core dumped) 
---------------------------------------------
Error when bootstrapping CMake:
Problem while running initial CMake
---------------------------------------------
*** Error 11 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2750 
'/usr/ports/pobj/cmake-3.4.3/build-arm/.configure_done')

gdb ./Bootstrap.cmk/cmake cmake.core

#0  0x4271fb9c in thrkill () at <stdin>:2
#1  0x427162f8 in *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:52
#2  0x42691cd4 in *_libc___assert2 (file=0xbffc98b8 "034iB230230034iBqBt\006", 
line=Variable "line" is not available.
) at /usr/src/lib/libc/gen/assert.c:52
#3  0x42691cd4 in *_libc___assert2 (file=0xbffc98b8 "034iB230230034iBqBt\006", 
line=Variable "line" is not available.
) at /usr/src/lib/libc/gen/assert.c:52
Previous frame identical to this frame (corrupt stack?)

Changing cmake itself to build with -fno-stack-protector fixes the cmake 
bootstrap.
So we likely need it disabled in both places until it is figured out.

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/cmake/Makefile,v
retrieving revision 1.141
diff -u -p -r1.141 Makefile
--- Makefile    28 Jan 2016 11:28:02 -0000      1.141
+++ Makefile    18 Feb 2016 03:30:24 -0000
@@ -6,7 +6,7 @@ COMMENT =       portable build system
 
 VER =          3.4.3
 DISTNAME =     cmake-${VER}
-REVISION =     0
+REVISION =     1
 CATEGORIES =   devel
 
 HOMEPAGE =     http://www.cmake.org/
@@ -20,12 +20,6 @@ PERMIT_PACKAGE_CDROM =       Yes
 
 WANTLIB += archive c curl expat form jsoncpp m ncurses pthread stdc++ z
 
-# XXX: On arm libstdc++ from base (and especially iostream) seems
-# to be broken, so use g++ from ports.
-MODULES =              gcc4
-MODGCC4_ARCHS =                arm
-MODGCC4_LANGS =                c++
-
 # XXX: Ninja is broken on m88k
 .if ${MACHINE_ARCH} != "m88k"
 BUILD_DEPENDS =                devel/ninja>=1.5.1
@@ -49,6 +43,10 @@ CONFIGURE_ARGS =     --prefix=${PREFIX} \
                        --sphinx-man \
                        --system-libs \
                        --verbose
+
+.if ${MACHINE_ARCH} == "arm"
+CXXFLAGS+=-fno-stack-protector
+.endif
 
 CONFIGURE_ENV +=       MAKE=${MAKE_PROGRAM}
 


Reply via email to