From owner-freebsd-toolchain@freebsd.org Mon Jul 4 13:11:10 2016 Return-Path: Delivered-To: freebsd-toolchain@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 134FEB919A3 for ; Mon, 4 Jul 2016 13:11:10 +0000 (UTC) (envelope-from wjw@digiware.nl) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id F0E1B24B1 for ; Mon, 4 Jul 2016 13:11:09 +0000 (UTC) (envelope-from wjw@digiware.nl) Received: by mailman.ysv.freebsd.org (Postfix) id EC320B919A2; Mon, 4 Jul 2016 13:11:09 +0000 (UTC) Delivered-To: toolchain@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EBD79B919A1 for ; Mon, 4 Jul 2016 13:11:09 +0000 (UTC) (envelope-from wjw@digiware.nl) Received: from smtp.digiware.nl (unknown [IPv6:2001:4cb8:90:ffff::3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8661024B0 for ; Mon, 4 Jul 2016 13:11:06 +0000 (UTC) (envelope-from wjw@digiware.nl) Received: from rack1.digiware.nl (localhost.digiware.nl [127.0.0.1]) by smtp.digiware.nl (Postfix) with ESMTP id EEEC0153402; Mon, 4 Jul 2016 15:11:01 +0200 (CEST) X-Virus-Scanned: amavisd-new at digiware.com Received: from smtp.digiware.nl ([127.0.0.1]) by rack1.digiware.nl (rack1.digiware.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v-l5pjm5xzGE; Mon, 4 Jul 2016 15:10:40 +0200 (CEST) Received: from [192.168.101.139] (unknown [176.74.240.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.digiware.nl (Postfix) with ESMTPSA id 8B8D1153413 for ; Mon, 4 Jul 2016 15:10:40 +0200 (CEST) Subject: Fwd: Cmake, Clang and plugins References: To: toolchain@freebsd.org From: Willem Jan Withagen X-Forwarded-Message-Id: Message-ID: <2aeb6176-09a3-0bf6-3bd1-1f68a0b859be@digiware.nl> Date: Mon, 4 Jul 2016 15:10:40 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2016 13:11:10 -0000 Hi, I asked this on the Ceph list. But probably there is a bigger chance of getting an answer if I ask here. Ceph is moving to Cmake, and foor Clang not all flags seem to be as they should. What flags are all required during building for dynamic loading: - compilation of src-files - assembling libs. - buidling the actual .so file Thanx, --WjW -------- Forwarded Message -------- Subject: Cmake, Clang and plugins Date: Mon, 4 Jul 2016 13:09:15 +0200 From: Willem Jan Withagen To: Ceph Development Hi, I'm being pestered by: dlopen(/home/wjw/Ceph/work.cmake/ceph/build/lib/libec_jerasure.so): /home/wjw/Ceph/work.cmake/ceph/build/lib/libec_jerasure.so: Undefined symbol "ceph_arch_neon" if I try to run anything that want as plugin. Now the question is: what extra bui;ding/linker options would this require to actually fix this? Symbol analysis is below. --WjW The complaint is right because: # nm /home/wjw/Ceph/work.cmake/ceph/build/lib/libec_jerasure.so | grep arch U ceph_arch_intel_pclmul U ceph_arch_intel_sse2 U ceph_arch_intel_sse3 U ceph_arch_intel_sse41 U ceph_arch_intel_sse42 U ceph_arch_intel_ssse3 U ceph_arch_neon U ceph_arch_probe So it is not in the plugin .so. But looking at the components it should be there: # nm /home/wjw/Ceph/work.cmake/ceph/build/lib/libcommon.a | grep arch 0000000000003d00 T _ZN12CrushWrapper20get_parent_hierarchyEi 0000000000000950 T _ZNK12CrushWrapper19_search_item_existsEi 0000000000000050 t _Z19ceph_crc32c_aarch64jPKhj U ceph_arch_aarch64_crc32 U ceph_arch_intel_sse42 U ceph_arch_probe 0000000000000020 T _Z24ceph_resolve_file_searchRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERS5_ 0000000000000020 T _ZN4ceph14ResolvHWrapper12__res_searchEPKciiPhi U __res_search 0000000000000004 B ceph_arch_aarch64_crc32 0000000000000000 T ceph_arch_arm_probe 0000000000000000 B ceph_arch_neon 0000000000000000 B ceph_arch_intel_pclmul 0000000000000000 T ceph_arch_intel_probe 0000000000000014 B ceph_arch_intel_sse2 0000000000000010 B ceph_arch_intel_sse3 0000000000000008 B ceph_arch_intel_sse41 0000000000000004 B ceph_arch_intel_sse42 000000000000000c B ceph_arch_intel_ssse3 U ceph_arch_arm_probe U ceph_arch_intel_probe 0000000000000000 T ceph_arch_probe 0000000000000000 B ceph_arch_probed U _Z24ceph_resolve_file_searchRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERS5_ It is in the library where it should be, but it is both defined and and unresolved... Looking at the .libs version from then automake build: The libcommin.a library is more or less equal. # nm /home/wjw/Ceph/work/ceph/src/.libs/libcommon.a | grep arch 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000000 W _ZN5boost7phoenix8functionINS0_4impl13binary_searchEEC2ERKS3_ 0000000000000000 W _ZN5boost7phoenix8functionINS0_4impl6searchEEC2ERKS3_ 0000000000000083 b _ZN5boost7phoenixL13binary_searchE 000000000000007e b _ZN5boost7phoenixL6searchE 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000120 T _Z24ceph_resolve_file_searchRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERS5_ 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000070 T _ZN4ceph14ResolvHWrapper13__res_nsearchEP11__res_statePKciiPhi 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ U __res_nsearch 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000080 t _Z19ceph_crc32c_aarch64jPKhj U ceph_arch_aarch64_crc32 U ceph_arch_intel_sse42 U ceph_arch_probe 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ U _Z24ceph_resolve_file_searchRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERS5_ 0000000000000000 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ 0000000000008e20 T _ZN12CrushWrapper20get_parent_hierarchyEi 0000000000001230 T _ZNK12CrushWrapper19_search_item_existsEi 0000000000000004 B ceph_arch_aarch64_crc32 0000000000000000 T ceph_arch_arm_probe 0000000000000000 B ceph_arch_neon 0000000000000000 B ceph_arch_intel_pclmul 0000000000000000 T ceph_arch_intel_probe 0000000000000014 B ceph_arch_intel_sse2 0000000000000010 B ceph_arch_intel_sse3 0000000000000008 B ceph_arch_intel_sse41 0000000000000004 B ceph_arch_intel_sse42 000000000000000c B ceph_arch_intel_ssse3 U ceph_arch_arm_probe U ceph_arch_intel_probe 0000000000000000 T ceph_arch_probe 0000000000000000 B ceph_arch_probed And the libec_jearasure.so is also suspiciously similar: # nm /home/wjw/Ceph/work/ceph/src/.libs/libec_jerasure.so | grep arch 0000000000118220 T _ZN12CrushWrapper20get_parent_hierarchyEi 0000000000110630 T _ZNK12CrushWrapper19_search_item_existsEi 0000000000161820 W _ZNSt3__18__searchIPFbccEPKcS4_EET0_S5_S5_T1_S6_T_NS_26random_access_iterator_tagES8_ U ceph_arch_intel_pclmul U ceph_arch_intel_sse2 U ceph_arch_intel_sse3 U ceph_arch_intel_sse41 U ceph_arch_intel_sse42 U ceph_arch_intel_ssse3 U ceph_arch_neon U ceph_arch_probe But it works in the automake build. Not in the cmake build.