]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: do not include global_context.cc multiple times 32607/head
authorKefu Chai <kchai@redhat.com>
Sat, 11 Jan 2020 10:29:29 +0000 (18:29 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 11 Jan 2020 11:26:45 +0000 (19:26 +0800)
otherwise ODR is violated:

==449025==ERROR: AddressSanitizer: odr-violation (0x000000f03700):
  [1] size=8 'g_ceph_context' ../src/global/global_context.cc:24:14
  [2] size=8 'g_ceph_context' ../src/global/global_context.cc:24:14
These globals were registered at these points:
  [1]:
    #0 0x4779bd in __asan_register_globals (/var/ssd/ceph/clang-build/bin/ceph-conf+0x4779bd)
    #1 0x56e9cb in asan.module_ctor (/var/ssd/ceph/clang-build/bin/ceph-conf+0x56e9cb)

  [2]:
    #0 0x4779bd in __asan_register_globals (/var/ssd/ceph/clang-build/bin/ceph-conf+0x4779bd)
    #1 0x7fe5fed12aeb in asan.module_ctor (/var/ssd/ceph/clang-build/lib/libceph-common.so.2+0x2f34aeb)

==449025==HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_odr_violation=0

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/CMakeLists.txt
src/crimson/CMakeLists.txt
src/global/CMakeLists.txt
src/osd/CMakeLists.txt

index 76a2be02ec9c0833e2a108105aeafce3056f9ee6..7545df63babb119c41eed3a297ff0e9ec317e701 100644 (file)
@@ -300,6 +300,7 @@ endif()
 set(libcommon_files
   ${CMAKE_BINARY_DIR}/src/include/ceph_ver.h
   ceph_ver.c
+  global/global_context.cc
   xxHash/xxhash.c
   log/Log.cc
   mon/MonCap.cc
@@ -342,7 +343,6 @@ set(ceph_common_objs
   $<TARGET_OBJECTS:compressor_objs>
   $<TARGET_OBJECTS:common-objs>
   $<TARGET_OBJECTS:common_mountcephfs_objs>
-  $<TARGET_OBJECTS:global_common_objs>
   $<TARGET_OBJECTS:crush_objs>)
 set(ceph_common_deps
   json_spirit erasure_code arch crc32
index a373cb3ba516e71be62975e6cf1d8d4709b13fb0..25092fb84fe22cfeaa62dd3bbd7255ce83cb872e 100644 (file)
@@ -73,6 +73,7 @@ add_library(crimson-common STATIC
   ${PROJECT_SOURCE_DIR}/src/common/HeartbeatMap.cc
   ${PROJECT_SOURCE_DIR}/src/common/PluginRegistry.cc
   ${PROJECT_SOURCE_DIR}/src/common/RefCountedObj.cc
+  ${PROJECT_SOURCE_DIR}/src/global/global_context.cc
   ${PROJECT_SOURCE_DIR}/src/global/pidfile.cc
   ${PROJECT_SOURCE_DIR}/src/librbd/Features.cc
   ${PROJECT_SOURCE_DIR}/src/log/Log.cc
@@ -96,8 +97,7 @@ add_library(crimson-common STATIC
   $<TARGET_OBJECTS:crimson-auth>
   $<TARGET_OBJECTS:common_buffer_obj>
   $<TARGET_OBJECTS:common_mountcephfs_objs>
-  $<TARGET_OBJECTS:crimson-crush>
-  $<TARGET_OBJECTS:global_common_objs>)
+  $<TARGET_OBJECTS:crimson-crush>)
 
 target_compile_definitions(crimson-common PRIVATE
   "CEPH_LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\""
index 704e0c7dc425c28e48e3f8a913c2fd1958263935..7da1911707d31144d801ef7ac3e6496353204fcb 100644 (file)
@@ -2,17 +2,12 @@ set(libglobal_srcs
   global_init.cc
   pidfile.cc
   signal_handler.cc)
-set(global_common_files
-  global_context.cc)
-add_library(global_common_objs OBJECT ${global_common_files})
 add_library(libglobal_objs OBJECT ${libglobal_srcs})
 
 add_library(global-static STATIC
-  $<TARGET_OBJECTS:libglobal_objs>
-  $<TARGET_OBJECTS:global_common_objs>)
+  $<TARGET_OBJECTS:libglobal_objs>)
 target_link_libraries(global-static common)
 
 add_library(global STATIC
-  $<TARGET_OBJECTS:libglobal_objs>
-  $<TARGET_OBJECTS:global_common_objs>)
+  $<TARGET_OBJECTS:libglobal_objs>)
 target_link_libraries(global ceph-common ${EXTRALIBS})
index f5368319e0c6309b4b76a52a340b3ced0fea4a63..c993ac2ff1b64ffcd5e8a18fd496b51524ae1184 100644 (file)
@@ -43,8 +43,7 @@ if(HAS_VTA)
   set_source_files_properties(osdcap.cc
     PROPERTIES COMPILE_FLAGS -fno-var-tracking-assignments)
 endif()
-add_library(osd STATIC ${osd_srcs}
-  $<TARGET_OBJECTS:global_common_objs>)
+add_library(osd STATIC ${osd_srcs})
 target_link_libraries(osd
   PUBLIC dmclock::dmclock
   PRIVATE os heap_profiler cpu_profiler ${CMAKE_DL_LIBS})