32-bit powerpc system-clang based builds of devel/llvm40 and devel/llvm50: fails via "Host compiler appears to require libatomic, but cannot find it"

2017-12-05 Thread Mark Millard
[I experiment with system-clang based
buildworld and/or buildkernel based
TARGET_ARCH=powerpc64 and
TARGET_ARCH=powerpc environments.]

For TARGET_ARCH=powerpc devel/llvm40 and
devel/llvm50 get failure reports like:

-- Looking for __atomic_load_8 in atomic - not found
CMake Error at cmake/modules/CheckAtomic.cmake:74 (message):
  Host compiler appears to require libatomic, but cannot find it.
Call Stack (most recent call first):
  cmake/config-ix.cmake:307 (include)
  CMakeLists.txt:582 (include)


I had tried to avoid any need for 8-Byte atomics
(among other things) by avoiding LIT, LLD, and LLDB:

# more /usr/local/etc/poudriere.d/options/devel_llvm50/options
# This file is auto-generated by 'make config'.
# Options for llvm50-5.0.0_1
_OPTIONS_READ=llvm50-5.0.0_1
_FILE_COMPLETE_OPTIONS_LIST=CLANG DOCS EXTRAS LIT LLD LLDB
OPTIONS_FILE_SET+=CLANG
OPTIONS_FILE_SET+=DOCS
OPTIONS_FILE_SET+=EXTRAS
OPTIONS_FILE_UNSET+=LIT
OPTIONS_FILE_UNSET+=LLD
OPTIONS_FILE_UNSET+=LLDB

# more /usr/local/etc/poudriere.d/options/devel_llvm40/options
# This file is auto-generated by 'make config'.
# Options for llvm40-4.0.1_1
_OPTIONS_READ=llvm40-4.0.1_1
_FILE_COMPLETE_OPTIONS_LIST=CLANG DOCS EXTRAS LIT LLD LLDB
OPTIONS_FILE_SET+=CLANG
OPTIONS_FILE_SET+=DOCS
OPTIONS_FILE_SET+=EXTRAS
OPTIONS_FILE_UNSET+=LIT
OPTIONS_FILE_UNSET+=LLD
OPTIONS_FILE_UNSET+=LLDB

For clang-based buildworld avoiding such things
prevents running into the 8-Byte atomics based
build failures:

WITH_LIBCPLUSPLUS=
WITH_BINUTILS_BOOTSTRAP=
WITH_ELFTOOLCHAIN_BOOTSTRAP=
#WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITH_LLD=
# lldb requires missing atomic 8-byte operations for powerpc (non-64)
WITHOUT_LLDB=
#
WITH_BOOT=

(Note: buildkernel currently fails.)

# clang++ --version
FreeBSD clang version 5.0.0 (tags/RELEASE_500/final 312559) (based on LLVM 
5.0.0svn)
Target: powerpc-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin

# uname -apKU
FreeBSD FBSDG4S 12.0-CURRENT FreeBSD 12.0-CURRENT  r326192M  powerpc powerpc 
1200054 1200054

# svnlite info /usr/ports/ | grep "Re[plv]"
Relative URL: ^/head
Repository Root: https://svn.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 455204
Last Changed Rev: 455204


===
Mark Millard
markmi at dsl-only.net

___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


[Bug 223776] ports-mgmt/pkg: lld confuses shared library tracking

2017-12-05 Thread bugzilla-noreply
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=223776

--- Comment #3 from Ed Maste  ---
This should be fixed in pkg 1.10.3

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Re: 32-bit powerpc system-clang based builds of devel/llvm40 and devel/llvm50: fails via "Host compiler appears to require libatomic, but cannot find it"

2017-12-05 Thread Roman Divacky
The cmake test just tries to compile:

#include 
std::atomic x;
int main() {
  return x;
}

What happens if you try to compile this small code with your host compiler?

Roman

On Tue, Dec 05, 2017 at 10:42:49AM -0800, Mark Millard wrote:
> [I experiment with system-clang based
> buildworld and/or buildkernel based
> TARGET_ARCH=powerpc64 and
> TARGET_ARCH=powerpc environments.]
> 
> For TARGET_ARCH=powerpc devel/llvm40 and
> devel/llvm50 get failure reports like:
> 
> -- Looking for __atomic_load_8 in atomic - not found
> CMake Error at cmake/modules/CheckAtomic.cmake:74 (message):
>   Host compiler appears to require libatomic, but cannot find it.
> Call Stack (most recent call first):
>   cmake/config-ix.cmake:307 (include)
>   CMakeLists.txt:582 (include)
> 
> 
> I had tried to avoid any need for 8-Byte atomics
> (among other things) by avoiding LIT, LLD, and LLDB:
> 
> # more /usr/local/etc/poudriere.d/options/devel_llvm50/options
> # This file is auto-generated by 'make config'.
> # Options for llvm50-5.0.0_1
> _OPTIONS_READ=llvm50-5.0.0_1
> _FILE_COMPLETE_OPTIONS_LIST=CLANG DOCS EXTRAS LIT LLD LLDB
> OPTIONS_FILE_SET+=CLANG
> OPTIONS_FILE_SET+=DOCS
> OPTIONS_FILE_SET+=EXTRAS
> OPTIONS_FILE_UNSET+=LIT
> OPTIONS_FILE_UNSET+=LLD
> OPTIONS_FILE_UNSET+=LLDB
> 
> # more /usr/local/etc/poudriere.d/options/devel_llvm40/options
> # This file is auto-generated by 'make config'.
> # Options for llvm40-4.0.1_1
> _OPTIONS_READ=llvm40-4.0.1_1
> _FILE_COMPLETE_OPTIONS_LIST=CLANG DOCS EXTRAS LIT LLD LLDB
> OPTIONS_FILE_SET+=CLANG
> OPTIONS_FILE_SET+=DOCS
> OPTIONS_FILE_SET+=EXTRAS
> OPTIONS_FILE_UNSET+=LIT
> OPTIONS_FILE_UNSET+=LLD
> OPTIONS_FILE_UNSET+=LLDB
> 
> For clang-based buildworld avoiding such things
> prevents running into the 8-Byte atomics based
> build failures:
> 
> WITH_LIBCPLUSPLUS=
> WITH_BINUTILS_BOOTSTRAP=
> WITH_ELFTOOLCHAIN_BOOTSTRAP=
> #WITH_CLANG_BOOTSTRAP=
> WITH_CLANG=
> WITH_CLANG_IS_CC=
> WITH_CLANG_FULL=
> WITH_CLANG_EXTRAS=
> WITH_LLD=
> # lldb requires missing atomic 8-byte operations for powerpc (non-64)
> WITHOUT_LLDB=
> #
> WITH_BOOT=
> 
> (Note: buildkernel currently fails.)
> 
> # clang++ --version
> FreeBSD clang version 5.0.0 (tags/RELEASE_500/final 312559) (based on LLVM 
> 5.0.0svn)
> Target: powerpc-unknown-freebsd12.0
> Thread model: posix
> InstalledDir: /usr/bin
> 
> # uname -apKU
> FreeBSD FBSDG4S 12.0-CURRENT FreeBSD 12.0-CURRENT  r326192M  powerpc powerpc 
> 1200054 1200054
> 
> # svnlite info /usr/ports/ | grep "Re[plv]"
> Relative URL: ^/head
> Repository Root: https://svn.freebsd.org/ports
> Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
> Revision: 455204
> Last Changed Rev: 455204
> 
> 
> ===
> Mark Millard
> markmi at dsl-only.net
> 
> ___
> freebsd-toolchain@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
> To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Re: 32-bit powerpc system-clang based builds of devel/llvm40 and devel/llvm50: fails via "Host compiler appears to require libatomic, but cannot find it"

2017-12-05 Thread Mark Millard
On 2017-Dec-5, at 12:39 PM, Roman Divacky  wrote:

> The cmake test just tries to compile:
> 
> #include 
> std::atomic x;
> int main() {
>  return x;
> }
> 
> What happens if you try to compile this small code with your host compiler?
> 
> Roman

[I later show that it seems to be testing
with: std::atomic x (0) instead
and is also using a line the example does
not have (devel/llvm50 example):

  uint64_t i = x.load(std::memory_order_relaxed);
.]

# uname -apKU
FreeBSD FBSDG4S 12.0-CURRENT FreeBSD 12.0-CURRENT  r326192M  powerpc powerpc 
1200054 1200054

# more cpp_atomic.cpp 
#include 
std::atomic x;
int main() {
 return x;
}

# clang++ -v cpp_atomic.cpp
FreeBSD clang version 5.0.0 (tags/RELEASE_500/final 312559) (based on LLVM 
5.0.0svn)
Target: powerpc-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin
 "/usr/bin/clang++" -cc1 -triple powerpc-unknown-freebsd12.0 -emit-obj 
-mrelax-all -disable-free -main-file-name cpp_atomic.cpp -mrelocation-model 
static -mthread-model posix -mdisable-fp-elim -masm-verbose 
-mconstructor-aliases -target-cpu ppc -mfloat-abi hard -v -dwarf-column-info 
-debugger-tuning=gdb -resource-dir /usr/lib/clang/5.0.0 -internal-isystem 
/usr/include/c++/v1 -fdeprecated-macro -fdebug-compilation-dir /root/c_tests 
-ferror-limit 19 -fmessage-length 200 -fno-signed-char -fobjc-runtime=gnustep 
-fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o 
/tmp/cpp_atomic-3b1ae2.o -x c++ cpp_atomic.cpp
clang -cc1 version 5.0.0 based upon LLVM 5.0.0svn default target 
powerpc-unknown-freebsd12.0
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/v1
 /usr/lib/clang/5.0.0/include
 /usr/include
End of search list.
 "/usr/bin/ld" --eh-frame-hdr -dynamic-linker /libexec/ld-elf.so.1 
--enable-new-dtags -m elf32ppc_fbsd -o a.out /usr/lib/crt1.o /usr/lib/crti.o 
/usr/lib/crtbegin.o -L/usr/lib /tmp/cpp_atomic-3b1ae2.o -lc++ -lm -lgcc 
--as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed 
/usr/lib/crtend.o /usr/lib/crtn.o

# ./a.out
#

So, the example works fine.

Nothing about that example program would seem to
match the note:

-- Looking for __atomic_load_8 in atomic

I would guess that the __atomic_load_8 test
is somewhat different. . .

Looking at an expansion of a wrkdirs' .tbz that
poudriere produced, CheckAtomic.cmake has . . .

. . .
# Check for 64 bit atomic operations.
if(MSVC)
  set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
else()
  check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
endif()

# If not, check if the library exists, and atomics work with it.
if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
  check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
  if(HAVE_CXX_LIBATOMICS64)
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
  message(FATAL_ERROR "Host compiler must support std::atomic!")
endif()
  else()
message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot 
find it.")
  endif()
endif()
. . .

>From this I get:

A) check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
   set: NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB

B) check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
   set: NOT HAVE_CXX_LIBATOMICS64

For (A), looking at the test code (found by
name-text matching):

function(check_working_cxx_atomics64 varname)
  set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
  set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
  CHECK_CXX_SOURCE_COMPILES("
#include 
#include 
std::atomic x (0);
int main() {
  uint64_t i = x.load(std::memory_order_relaxed);
  return 0;
}
" ${varname})
  set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
endfunction(check_working_cxx_atomics64)

I see:

#include 
#include 
std::atomic x (0);
int main() {
  uint64_t i = x.load(std::memory_order_relaxed);
  return 0;
}

Trying that example I see:

/tmp/cpp_atomic_64_test-1fa999.o: In function `main':
cpp_atomic_64_test.cpp:(.text+0xa8): undefined reference to `__atomic_load_8'
clang++: error: linker command failed with exit code 1 (use -v to see 
invocation)

Details:

# more cpp_atomic_64_test.cpp 
#include 
#include 
std::atomic x (0);
int main() {
  uint64_t i = x.load(std::memory_order_relaxed);
  return 0;
}

# clang++ -v cpp_atomic_64_test.cpp 
FreeBSD clang version 5.0.0 (tags/RELEASE_500/final 312559) (based on LLVM 
5.0.0svn)
Target: powerpc-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin
 "/usr/bin/clang++" -cc1 -triple powerpc-unknown-freebsd12.0 -emit-obj 
-mrelax-all -disable-free -main-file-name cpp_atomic_64_test.cpp 
-mrelocation-model static -mthread-model posix -mdisable-fp-elim -masm-verbose 
-mconstructor-aliases -target-cpu ppc -mfloat-abi hard -v -dwarf-column-info 
-debugger-tuning=gdb -resource-dir /usr/lib/clang/5.0.0 -internal-isystem 
/usr/include/c++/v1 -fdeprecated-macro -fdebug-compilatio

powerpc64 & system-clang vs. building the likes of lang/gcc7 (at least): vec_step name pollution causes compile failures, should gcc7 source code avoid the name?

2017-12-05 Thread Mark Millard
[I experiment with clang-based worlds and kernels
on powerpc64 and powerpc. But I'm not sure that
such is the only type of context is required to
see the below problem.]

Attempting to build lang/gcc7 on a system-clang based
powerpc64 (world and kernel) gets:


/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3835:27: 
error: expected unqualified-id
  tree new_vec, vec_init, vec_step, t;
  ^
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3835:26: 
error: expected ';' at end of declaration
  tree new_vec, vec_init, vec_step, t;
 ^
 ;

Well, it turns out that vec_step has the following
potential naming conflicts, one for powerpc64 FreeBSD
specifics, and one for clang specifics (for support of
OpenCL). . .

For powerpc64:

/usr/src/contrib/gcc/config/rs6000/altivec.h:#define vec_step(x) 
__builtin_vec_step (* (__typeof__ (x) *) 0)

(I'm point the above out despite my clang-based context.)

For clang:

/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// vec_step and we 
are at the start of an expression or a parenthesized
/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// [OpenCL 1.1 
6.11.12] vec_step built-in function:
/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:///   
vec_step ( expressions )
/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:///   
vec_step ( type-name )
/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp: "Not a 
typeof/sizeof/alignof/vec_step expression!");
/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp: "Not a 
sizeof/alignof/vec_step expression!");
/usr/src/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp:  // [OpenCL 1.1 
6.11.12] "The vec_step built-in function takes a built-in
/usr/src/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h:  /// \brief Build a 
new sizeof, alignof or vec_step expression with a
/usr/src/contrib/llvm/tools/clang/include/clang/AST/Expr.h:/// vec_step (OpenCL 
1.1 6.11.12).
/usr/src/contrib/llvm/tools/clang/include/clang/ASTMatchers/ASTMatchers.h:/// 
\brief Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL)
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:  
"invalid application of '%select{sizeof|alignof|vec_step}0' to a "
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:  
"invalid application of '%select{sizeof|alignof|vec_step}0' to a void "
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:  
"invalid application of 
'%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a void 
type">;
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:  
"invalid application of 
'%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to an "
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:  
"invalid application of 
'%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a "
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:  
"'vec_step' requires built-in scalar or vector type, %0 invalid">;
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def:KEYWORD(vec_step
, KEYOPENCL|KEYALTIVEC|KEYZVECTOR)

(The lists were extracted from a: grep -r "\" /usr/src/*
Some material was omitted from the reported matches.)


Given the clang extension for having vec_step for OpenCL,
it might be best if lang/gcc7 was updated to avoid the
name (upstream as well). devel/llvm50 likely has the
same vec_step as system-clang. I'm not sure about
devel/llvm40 .

This might be true of some other lang/gcc*'s: I just
happen to build lang/gcc7 but not the others (generally).

Context details:

# uname -apKU
FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT  r326192M  powerpc powerpc64 
1200054 1200054

# svnlite info /usr/ports/ | grep "Re[plv]"
Relative URL: ^/head
Repository Root: svn://svn0.us-west.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 455204
Last Changed Rev: 455204

(Last before FLAVORS is enabled.)

===
Mark Millard
markmi at dsl-only.net

___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"