From: Maksim Kokryashkin via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: tarantool-patches@dev.tarantool.org, sergos@tarantool.org, skaplun@tarantool.org Cc: Maksim Kokryashkin <max.kokryashkin@gmail.com> Subject: [Tarantool-patches] [PATCH luajit 2/6] OSX: Fix build by hardcoding external frame unwinding. Date: Mon, 26 Sep 2022 18:54:59 +0300 [thread overview] Message-ID: <623a3c7c7aa9e8c5a2fdb68384c278825016f72e.1664207262.git.max.kokryashkin@gmail.com> (raw) In-Reply-To: <cover.1664207262.git.max.kokryashkin@gmail.com> 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)
next prev parent reply other threads:[~2022-09-26 15:56 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-09-26 15:54 [Tarantool-patches] [PATCH luajit 0/6] Fix external unwinding on M1 Maksim Kokryashkin via Tarantool-patches 2022-09-26 15:54 ` [Tarantool-patches] [PATCH luajit 1/6] Cleanup and enable external unwinding for more platforms Maksim Kokryashkin via Tarantool-patches 2022-09-28 8:20 ` sergos via Tarantool-patches 2022-10-03 7:36 ` Sergey Kaplun via Tarantool-patches 2022-09-26 15:54 ` Maksim Kokryashkin via Tarantool-patches [this message] 2022-10-03 10:54 ` [Tarantool-patches] [PATCH luajit 2/6] OSX: Fix build by hardcoding external frame unwinding Sergey Kaplun via Tarantool-patches 2022-10-03 15:58 ` sergos via Tarantool-patches 2022-09-26 15:55 ` [Tarantool-patches] [PATCH luajit 3/6] OSX/ARM64: Disable external unwinding for now Maksim Kokryashkin via Tarantool-patches 2022-10-03 11:08 ` Sergey Kaplun via Tarantool-patches 2022-10-04 8:26 ` sergos via Tarantool-patches 2022-09-26 15:55 ` [Tarantool-patches] [PATCH luajit 4/6] ARM64: Reorder interpreter stack frame and fix unwinding Maksim Kokryashkin via Tarantool-patches 2022-10-04 15:48 ` sergos via Tarantool-patches 2022-09-26 15:55 ` [Tarantool-patches] [PATCH luajit 5/6] OSX/ARM64: Disable unwind info Maksim Kokryashkin via Tarantool-patches 2022-10-04 15:52 ` sergos via Tarantool-patches 2022-09-26 15:55 ` [Tarantool-patches] [PATCH luajit 6/6] OSX/ARM64: Fix external unwinding Maksim Kokryashkin via Tarantool-patches 2022-10-04 16:05 ` sergos via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 0/6] Fix external unwinding on M1 Maksim Kokryashkin via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 1/6] Cleanup and enable external unwinding for more platforms Maksim Kokryashkin via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 2/6] OSX: Fix build by hardcoding external frame unwinding Maksim Kokryashkin via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 3/6] OSX/ARM64: Disable external unwinding for now Maksim Kokryashkin via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 4/6] ARM64: Reorder interpreter stack frame and fix unwinding Maksim Kokryashkin via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 5/6] OSX/ARM64: Disable unwind info Maksim Kokryashkin via Tarantool-patches 2022-10-06 9:48 ` [Tarantool-patches] [PATCH luajit v2 6/6] OSX/ARM64: Fix external unwinding Maksim Kokryashkin via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=623a3c7c7aa9e8c5a2fdb68384c278825016f72e.1664207262.git.max.kokryashkin@gmail.com \ --to=tarantool-patches@dev.tarantool.org \ --cc=max.kokryashkin@gmail.com \ --cc=sergos@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit 2/6] OSX: Fix build by hardcoding external frame unwinding.' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox