From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 385DF6FC93; Mon, 26 Sep 2022 18:56:11 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 385DF6FC93 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1664207771; bh=9vDRUU6ryttx3i77Ca8zZGYmv746oG/uZdUXITYgdnk=; h=To:Cc:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=LCUg4NnaoJkFtjjvmqEFgiW9VgimHY4oyiglQJfI3gKo0XOmX0wMHQiOOK6/bQWQq ACEqvTLwdTaEbvaDB3tVdFFtgkh0h8i2fCfQInygMK8l56pbD4XzN7TV19BVmRu2Iu r77pPK2F1Xo3nFU/pGMXwV1c8IEEk1cGU3tOO7E4= Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 729D16FC93 for ; Mon, 26 Sep 2022 18:55:13 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 729D16FC93 Received: by mail-lf1-f47.google.com with SMTP id w8so11532335lft.12 for ; Mon, 26 Sep 2022 08:55:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=kDtzhk8ya3UeOqUCyLSLFAnJHFmzm1bXUAxE72iDMQw=; b=WrHFSsFfZ6CohtTNoyVAOyXVg14Lfjnq9pa0MU73BHs5zSx2j+Z2L0NzbvL97DbLXD pORq9OOxe+qC5cNjy5QNY9RfVsowrSiKmEWRqi605Dxt3U36T8YdPyA8ZBhV4fz4MVQf 9MbHkssloPqhK4FK71J5FgtBNEWk2iIqD3TsMBXje/diI8zeLCcWQfdTqQQKrz3Sw36b rDwCh9Tncf1QyF8fNbnVrY9qM5w+SMgt0/FbfpMlbosXr2MEHSgPyw3pAotRE4DrkSOj 66Uv1KKlRnl0ByxQdZY1RooFbUUaqmk2YL1nyZKNB1xBLpUJN2yrNHK6gEbrqpD4lCys M32g== X-Gm-Message-State: ACrzQf2CfM9hsPVvPOdvv2o+k8If/OF5+I4JIL+C7k4Isnkvw0Z0+Kk9 6e99a1s2jSz/FANpzP3MvMCrtUiwK2QmIfCO X-Google-Smtp-Source: AMsMyM5idVAfICYvjB5V0nnOOj3OsOP235MrEHpspSi5UVLH8/j/2whpls0mFcml2ZJzV/9+PMLtKw== X-Received: by 2002:a05:6512:3d1d:b0:499:aefe:c71b with SMTP id d29-20020a0565123d1d00b00499aefec71bmr8889978lfv.589.1664207712641; Mon, 26 Sep 2022 08:55:12 -0700 (PDT) Received: from localhost.localdomain (128-69-252-100.broadband.corbina.ru. [128.69.252.100]) by smtp.gmail.com with ESMTPSA id v6-20020a056512348600b0048af9576d30sm2574400lfr.83.2022.09.26.08.55.11 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 26 Sep 2022 08:55:12 -0700 (PDT) To: tarantool-patches@dev.tarantool.org, sergos@tarantool.org, skaplun@tarantool.org Cc: Maksim Kokryashkin Date: Mon, 26 Sep 2022 18:54:59 +0300 Message-Id: <623a3c7c7aa9e8c5a2fdb68384c278825016f72e.1664207262.git.max.kokryashkin@gmail.com> X-Mailer: git-send-email 2.32.1 (Apple Git-133) In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH luajit 2/6] OSX: Fix build by hardcoding external frame unwinding. X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maksim Kokryashkin via Tarantool-patches Reply-To: Maksim Kokryashkin Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Apparently they can't even get 'grep' right, let alone a keyboard. (cherry picked from commit d4a554d6ee1507f7313641b26ed09bf1b518fa1f) MacOS uses BSD grep, which is slightly different from GNU grep. Because of that, the shell script determining whether external unwinding is possible doesn't work right. External unwinding is possible on MacOS, so this patch enables it by default. Maxim Kokryashkin: * added the description for the problem Needed for tarantool/tarantool#6096 Needed for tarantool/tarantool#7230 --- .github/workflows/macos-x86_64.yml | 20 +------------------- cmake/SetTargetFlags.cmake | 28 ++++++++++++++++------------ src/Makefile.original | 15 ++++++++------- 3 files changed, 25 insertions(+), 38 deletions(-) diff --git a/.github/workflows/macos-x86_64.yml b/.github/workflows/macos-x86_64.yml index 840806e3..dafd1796 100644 --- a/.github/workflows/macos-x86_64.yml +++ b/.github/workflows/macos-x86_64.yml @@ -35,7 +35,7 @@ jobs: fail-fast: false matrix: BUILDTYPE: [Debug, Release] - GC64: [ON, OFF] + GC64: ON include: - BUILDTYPE: Debug CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug -DLUA_USE_ASSERT=ON -DLUA_USE_APICHECK=ON @@ -69,15 +69,6 @@ jobs: - name: test run: cmake --build . --parallel --target test - test-tarantool-debug-wo-GC64: - name: Tarantool Debug GC64:OFF - needs: test-luajit - uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master - with: - GC64: OFF - buildtype: Debug - host: macos-11 - revision: ${{ github.sha }} test-tarantool-debug-w-GC64: name: Tarantool Debug GC64:ON needs: test-luajit @@ -87,15 +78,6 @@ jobs: buildtype: Debug host: macos-11 revision: ${{ github.sha }} - test-tarantool-release-wo-GC64: - name: Tarantool Release GC64:OFF - needs: test-luajit - uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master - with: - GC64: OFF - buildtype: RelWithDebInfo - host: macos-11 - revision: ${{ github.sha }} test-tarantool-release-w-GC64: name: Tarantool Release GC64:ON needs: test-luajit diff --git a/cmake/SetTargetFlags.cmake b/cmake/SetTargetFlags.cmake index 36896aff..a5a3407f 100644 --- a/cmake/SetTargetFlags.cmake +++ b/cmake/SetTargetFlags.cmake @@ -15,18 +15,22 @@ endif() LuaJITTestArch(TESTARCH "${TARGET_C_FLAGS}") LuaJITArch(LUAJIT_ARCH "${TESTARCH}") -string(FIND ${TARGET_C_FLAGS} "LJ_NO_UNWIND 1" UNWIND_POS) -if(UNWIND_POS EQUAL -1) - execute_process( - COMMAND bash -c "exec 2>/dev/null; echo 'extern void b(void);int a(void){b();return 0;}' | ${CMAKE_C_COMPILER} -c -x c - -o tmpunwind.o && grep -qa -e eh_frame -e __unwind_info tmpunwind.o && echo E; rm -f tmpunwind.o" - WORKING_DIRECTORY ${LUAJIT_SOURCE_DIR} - OUTPUT_VARIABLE TESTUNWIND - RESULT_VARIABLE TESTUNWIND_RC - ) - if(TESTUNWIND_RC EQUAL 0) - string(FIND "${TESTUNWIND}" "E" UNW_TEST_POS) - if(NOT UNW_TEST_POS EQUAL -1) - AppendFlags(TARGET_C_FLAGS -DLUAJIT_UNWIND_EXTERNAL) +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + AppendFlags(TARGET_C_FLAGS -DLUAJIT_UNWIND_EXTERNAL) +else() + string(FIND ${TARGET_C_FLAGS} "LJ_NO_UNWIND 1" UNWIND_POS) + if(UNWIND_POS EQUAL -1) + execute_process( + COMMAND bash -c "exec 2>/dev/null; echo 'extern void b(void);int a(void){b();return 0;}' | ${CMAKE_C_COMPILER} -c -x c - -o tmpunwind.o && grep -qa -e eh_frame -e __unwind_info tmpunwind.o && echo E; rm -f tmpunwind.o" + WORKING_DIRECTORY ${LUAJIT_SOURCE_DIR} + OUTPUT_VARIABLE TESTUNWIND + RESULT_VARIABLE TESTUNWIND_RC + ) + if(TESTUNWIND_RC EQUAL 0) + string(FIND "${TESTUNWIND}" "E" UNW_TEST_POS) + if(NOT UNW_TEST_POS EQUAL -1) + AppendFlags(TARGET_C_FLAGS -DLUAJIT_UNWIND_EXTERNAL) + endif() endif() endif() endif() diff --git a/src/Makefile.original b/src/Makefile.original index c9609700..d1373b40 100644 --- a/src/Makefile.original +++ b/src/Makefile.original @@ -320,18 +320,12 @@ else ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector 2>/dev/null || echo 1)) TARGET_XCFLAGS+= -fno-stack-protector endif -ifeq (,$(findstring LJ_NO_UNWIND 1,$(TARGET_TESTARCH))) - # Find out whether the target toolchain always generates unwind tables. - TARGET_TESTUNWIND=$(shell exec 2>/dev/null; echo 'extern void b(void);int a(void){b();return 0;}' | $(TARGET_CC) -c -x c - -o tmpunwind.o && grep -qa -e eh_frame -e __unwind_info tmpunwind.o && echo E; rm -f tmpunwind.o) - ifneq (,$(findstring E,$(TARGET_TESTUNWIND))) - TARGET_XCFLAGS+= -DLUAJIT_UNWIND_EXTERNAL - endif -endif ifeq (Darwin,$(TARGET_SYS)) ifeq (,$(MACOSX_DEPLOYMENT_TARGET)) export MACOSX_DEPLOYMENT_TARGET=10.4 endif TARGET_STRIP+= -x + TARGET_XCFLAGS+= -DLUAJIT_UNWIND_EXTERNAL TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC TARGET_DYNXLDOPTS= TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER) @@ -345,6 +339,13 @@ ifeq (iOS,$(TARGET_SYS)) TARGET_XCFLAGS+= -fno-omit-frame-pointer endif else + ifeq (,$(findstring LJ_NO_UNWIND 1,$(TARGET_TESTARCH))) + # Find out whether the target toolchain always generates unwind tables. + TARGET_TESTUNWIND=$(shell exec 2>/dev/null; echo 'extern void b(void);int a(void){b();return 0;}' | $(TARGET_CC) -c -x c - -o tmpunwind.o && grep -qa -e eh_frame -e __unwind_info tmpunwind.o && echo E; rm -f tmpunwind.o) + ifneq (,$(findstring E,$(TARGET_TESTUNWIND))) + TARGET_XCFLAGS+= -DLUAJIT_UNWIND_EXTERNAL + endif + endif ifneq (SunOS,$(TARGET_SYS)) ifneq (PS3,$(TARGET_SYS)) TARGET_XLDFLAGS+= -Wl,-E -- 2.32.1 (Apple Git-133)