mirror of
https://github.com/apache/impala.git
synced 2025-12-19 09:58:28 -05:00
As part of moving to a newer protobuf, this updates the Kudu version
to get the fix for KUDU-3334. With this newer Kudu version, Clang
builds hit an error while linking:
lib/libLLVMCodeGen.a(TargetPassConfig.cpp.o):TargetPassConfig.cpp:
function llvm::TargetPassConfig::createRegAllocPass(bool):
error: relocation refers to global symbol "std::call_once<void (&)()>(std::once_flag&, void (&)())::{lambda()#2}::_FUN()",
which is defined in a discarded section
section group signature: "_ZZSt9call_onceIRFvvEJEEvRSt9once_flagOT_DpOT0_ENKUlvE0_clEv"
prevailing definition is from ../../build/debug/security/libsecurity.a(openssl_util.cc.o)
(This is from a newer binutils that will be pursued separately.)
As a hack to get around this error, this adds the calloncehack
shared library. The shared library publicly defines the symbol that
was coming from kudu_client. By linking it ahead of kudu_client, the
linker uses that rather than the one from kudu_client. This fixes
the Clang builds.
The new Kudu also requires a minor change to the flags for tserver
startup.
Testing:
- Ran debug tests and verified calloncehack is not used
- Ran ASAN tests
Change-Id: Ieccbe284f11445e1de792352ebc7c9e1fa2ca0c3
Reviewed-on: http://gerrit.cloudera.org:8080/18129
Reviewed-by: Wenzhe Zhou <wzhou@cloudera.com>
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
49 lines
1.8 KiB
CMake
49 lines
1.8 KiB
CMake
##############################################################################
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
##############################################################################
|
|
|
|
# CALLONCEHACK_ROOT hints the location
|
|
# Provides
|
|
# - CALLONCEHACK_SHARED_LIB,
|
|
# - CALLONCEHACK_INCLUDE_DIR,
|
|
# - CALLONCEHACK_FOUND
|
|
set(_CALLONCEHACK_SEARCH_DIR)
|
|
|
|
if (CALLONCEHACK_ROOT)
|
|
set(_CALLONCEHACK_SEARCH_DIR PATHS ${CALLONCEHACK_ROOT} NO_DEFAULT_PATH)
|
|
endif()
|
|
|
|
find_path(CALLONCEHACK_INCLUDE_DIR calloncehack.h
|
|
${_CALLONCEHACK_SEARCH_DIR} PATH_SUFFIXES include)
|
|
|
|
# Calloncehack is always a shared library
|
|
find_library(CALLONCEHACK_SHARED_LIB libcalloncehack.so ${_CALLONCEHACK_SEARCH_DIR} PATH_SUFFIXES lib)
|
|
|
|
if (CALLONCEHACK_INCLUDE_DIR AND CALLONCEHACK_SHARED_LIB)
|
|
set(CALLONCEHACK_FOUND TRUE)
|
|
message(STATUS "Found the calloncehack library: ${CALLONCEHACK_SHARED_LIB}")
|
|
else()
|
|
set(CALLONCEHACK_FOUND FALSE)
|
|
message(FATAL_ERROR "calloncehack not found in ${CALLONCEHACK_ROOT}")
|
|
endif()
|
|
|
|
mark_as_advanced(
|
|
CALLONCEHACK_INCLUDE_DIR
|
|
CALLONCEHACK_SHARED_LIB
|
|
)
|