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 7A2BF9B0E00; Tue, 19 Mar 2024 19:28:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 7A2BF9B0E00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1710865710; bh=mnIV6nkPdUKrcjuHN7pFceui+3U7wc1QHLNaimSZTe0=; h=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=X5ywL3/nYyjS0K0+3GrUQXi0QJ0imaGP+zdQvp8eVGsojhnEzjn4RoC4H5NprMJTc eZhoSwCm/aWfgTafKYIV3+4FbKrT4BgwlGFsqj5mujoiswM5ag6MI9gzvCkINvzj/B DFidV9gxbrppR/7QJ6CZhQCJYyviW7eQHCwGRZLI= Received: from smtp30.i.mail.ru (smtp30.i.mail.ru [95.163.41.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 EA1239B0E00 for ; Tue, 19 Mar 2024 19:28:28 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org EA1239B0E00 Received: by smtp30.i.mail.ru with esmtpa (envelope-from ) id 1rmcKB-0000000DFMq-0rrU; Tue, 19 Mar 2024 19:28:27 +0300 Date: Tue, 19 Mar 2024 19:28:25 +0300 To: Sergey Bronnikov Message-ID: References: <9a71bf0765acd6ab019de4ae9f491a6c7bcb463d.1710416150.git.sergeyb@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD987C0EE6E7F0A597DF2E6F6001F0923FF54E1DF110EA51DBE182A05F538085040CE9F64F7B9858DA7AC8EDD30083ED68EFE1E1DE673820AD66903D86D9187BAB1CFEC41F7248C3CD5 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE76ABD3380F320B62CEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F79006371AB0416A4896C0B38638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D8BC19D413DF53AB598F73BFA60AE146D98A096C1EE51E7694CC7F00164DA146DAFE8445B8C89999728AA50765F79006372A3B24BF85B2E607389733CBF5DBD5E9C8A9BA7A39EFB766F5D81C698A659EA7CC7F00164DA146DA9985D098DBDEAEC8062BEEFFB5F8EA3EF6B57BC7E6449061A352F6E88A58FB86F5D81C698A659EA73AA81AA40904B5D9A18204E546F3947C67F1C1C3ABB44F3A6E0066C2D8992A164AD6D5ED66289B523666184CF4C3C14F6136E347CC761E07725E5C173C3A84C3302A61B22DEE7324BA3038C0950A5D36B5C8C57E37DE458B330BD67F2E7D9AF16D1867E19FE14079C09775C1D3CA48CF27ED053E960B195E1DD303D21008E298D5E8D9A59859A8B6B372FE9A2E580EFC725E5C173C3A84C3BE90F13D913F449135872C767BF85DA2F004C90652538430E4A6367B16DE6309 X-C1DE0DAB: 0D63561A33F958A5ADCDA98D962F6C4E5002B1117B3ED696407E52ABEA70AF9F92212597CCBD6D77823CB91A9FED034534781492E4B8EEAD37F46C620FF2CAEEBDAD6C7F3747799A X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CFF1F4FA8454B96FB31D51E265EAB1F5AA28BAF1B8C4875C97E24DA58CE1F1C7AB24CDA40E848992A8E1E51F4E63A65834A3EB8EAF98867868073052BE5FC0C2ACA779DFD8818215BCC226CC413062362A913E6812662D5F2A54F6898A6FDCBDC72A617DFBE5FEC2C6383653B6C8D9AE0FD16FCAA6493B703A X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojipsw8XZ5OuiPvRFFf/cTcQ== X-Mailru-Sender: 7940E2A4EB16C9976F80DCDCD59EC227E2FD4A3903DF51A7AC8EDD30083ED68EFE1E1DE673820AD6E2527C969975515CFF9FCECFB8D89CB6C77752E0C033A69E235A20A81F3B0E39AB3C5F247CB2F7F93A5DB60FBEB33A8A0DA7A0AF5A3A8387 X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH luajit 1/2] OSX/iOS/ARM64: Fix generation of Mach-O object files. 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: Maxim Kokryashkin via Tarantool-patches Reply-To: Maxim Kokryashkin Cc: Sergey Bronnikov , tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Hi, Sergey! Thanks for the fixes! Please consider my answers below. On Tue, Mar 19, 2024 at 11:19:19AM +0300, Sergey Bronnikov wrote: > Max, > > thanks for review! see comments below > > > On 3/18/24 15:53, Maxim Kokryashkin wrote: > > Hi, Sergey, thanks for the patch! > > Please consider my comments below. > > On Thu, Mar 14, 2024 at 02:39:49PM +0300, Sergey Bronnikov wrote: > > > .github/workflows/exotic-builds-testing.yml | 5 +- > > > src/jit/bcsave.lua | 6 +- > > > .../lj-366-strtab-correct-size.test.lua | 10 +- > > > ...generation_of_mach-o_object_files.test.lua | 271 ++++++++++++++++++ > > > test/tarantool-tests/utils/tools.lua | 8 + > > > 5 files changed, 287 insertions(+), 13 deletions(-) > > > create mode 100644 test/tarantool-tests/lj-865-fix_generation_of_mach-o_object_files.test.lua > > > > > > diff --git a/.github/workflows/exotic-builds-testing.yml b/.github/workflows/exotic-builds-testing.yml > > > index a9ba5fd5..df4bc2e9 100644 > > > --- a/.github/workflows/exotic-builds-testing.yml > > > +++ b/.github/workflows/exotic-builds-testing.yml > > > @@ -32,6 +32,7 @@ jobs: > > > fail-fast: false > > > matrix: > > > BUILDTYPE: [Debug, Release] > > > + OS: [Linux, macOS] > > > ARCH: [ARM64, x86_64] > > > GC64: [ON, OFF] > > > FLAVOR: [checkhook, dualnum, gdbjit, nojit, nounwind] > > > @@ -50,13 +51,15 @@ jobs: > > > FLAVORFLAGS: -DLUAJIT_USE_GDBJIT=ON > > https://github.com/tarantool/luajit/actions/runs/8279362128 > > > - FLAVOR: nounwind > > > FLAVORFLAGS: -DLUAJIT_NO_UNWIND=ON > > > + - FLAVOR: avx512 > > > + CMAKEFLAGS: -DCMAKE_C_FLAGS=skylake-avx512 -DCMAKE_C_COMPILER=gcc > > > exclude: > > > - ARCH: ARM64 > > > GC64: OFF > > > # DUALNUM is default for ARM64, no need for additional testing. > > > - FLAVOR: dualnum > > > ARCH: ARM64 > > > - runs-on: [self-hosted, regular, Linux, '${{ matrix.ARCH }}'] > > > + runs-on: [self-hosted, regular, Linux, '${{ matrix.ARCH }}', '${ matrix.OS }'] > > The matrix.OS variable should be wrapped with double curly braces, > > instead of singular ones. So, it should be like this: > > | '${{ matrix.OS }}' > > Fixed, thanks! > > > > Currently, exotic build testing fails to start because of this mistake. > > https://github.com/tarantool/luajit/actions/runs/8279362128 That's unfortunate, but the workflow run still fails to start. It seems like double quotation marks are required around the computed properties. At least, they are mentioned specifically in the documentation: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on So both variables should actually be: | "${{ matrix.OS }}", "${{ matrix.ARCH }}" > > > name: > > > > LuaJIT ${{ matrix.FLAVOR }} > > > (Linux/${{ matrix.ARCH }}) > > > diff --git a/src/jit/bcsave.lua b/src/jit/bcsave.lua > > > index a287d675..7aec1555 100644 > > > --- a/src/jit/bcsave.lua > > > +++ b/src/jit/bcsave.lua > > > @@ -446,18 +446,18 @@ typedef struct { > > > uint32_t value; > > > } mach_nlist; > > > typedef struct { > > > - uint32_t strx; > > > + int32_t strx; > > > uint8_t type, sect; > > > uint16_t desc; > > > uint64_t value; > > > } mach_nlist_64; > > > typedef struct > > > { > > > - uint32_t magic, nfat_arch; > > > + int32_t magic, nfat_arch; > > > } mach_fat_header; > > > typedef struct > > > { > > > - uint32_t cputype, cpusubtype, offset, size, align; > > > + int32_t cputype, cpusubtype, offset, size, align; > > > } mach_fat_arch; > > > typedef struct { > > > struct { > > > diff --git a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > > > index 8a97a441..0bb92da6 100644 > > > --- a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > > > +++ b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > > Let's move this update to a separate patch alongside with the added > > utility function. Currently, this change in unrelated test file is > > a bit confusing. > > > Moved to a separate patch: > > > commit 138bcda850ed4aad4bbbae4d30315d9a0934cb26 > Author: Sergey Bronnikov > Date:   Tue Mar 19 09:56:51 2024 +0300 > >     test: introduce a helper read_file > >     The test `lj-366-strtab-correct-size.test.lua` has a test helper >     `read_file` that read a file's content and returns it. Typo: s/read/reads/ >     This helper will be useful for a test upcoming in the next commit, >     so it is moved to a test tools. Typo: s/to a/to/ > > diff --git a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > index 8a97a441..0bb92da6 100644 > --- a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > +++ b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > @@ -138,14 +138,6 @@ local function create_obj_file(name) >    return elf_filename >  end > > --- Reads a file located in a specified path and returns its content. > -local function read_file(path) > -  local file = assert(io.open(path), 'cannot open an object file') > -  local content = file:read('*a') > -  file:close() > -  return content > -end > - >  -- Parses a buffer in an ELF format and returns an offset and a size of > strtab >  -- and symtab sections. >  local function read_elf(elf_content) > @@ -172,7 +164,7 @@ end >  test:plan(3) > >  local elf_filename = create_obj_file(MODULE_NAME) > -local elf_content = read_file(elf_filename) > +local elf_content = require('utils').tools.read_file(elf_filename) >  assert(#elf_content ~= 0, 'cannot read an object file') > >  local strtab, symtab = read_elf(elf_content) > diff --git a/test/tarantool-tests/utils/tools.lua > b/test/tarantool-tests/utils/tools.lua > index f35c6922..26b8c08d 100644 > --- a/test/tarantool-tests/utils/tools.lua > +++ b/test/tarantool-tests/utils/tools.lua > @@ -12,4 +12,12 @@ function M.profilename(name) >    return (arg[0]:gsub('^(.+)/([^/]+)%.test%.lua$', replacepattern)) >  end > > +-- Reads a file located in a specified path and returns its content. > +function M.read_file(path) > +  local file = assert(io.open(path), 'cannot open an object file') > +  local content = file:read('*a') > +  file:close() > +  return content > +end > + >  return M > > > > > @@ -138,14 +138,6 @@ local function create_obj_file(name) > > > return elf_filename > > > end > > > > > > --- Reads a file located in a specified path and returns its content. > > > -local function read_file(path) > > > - local file = assert(io.open(path), 'cannot open an object file') > > > - local content = file:read('*a') > > > - file:close() > > > - return content > > > -end > > > - > > > -- Parses a buffer in an ELF format and returns an offset and a size of strtab > > > -- and symtab sections. > > > local function read_elf(elf_content) > > > @@ -172,7 +164,7 @@ end > > > test:plan(3) > > > > > > local elf_filename = create_obj_file(MODULE_NAME) > > > -local elf_content = read_file(elf_filename) > > > +local elf_content = require('utils').tools.read_file(elf_filename) > > > assert(#elf_content ~= 0, 'cannot read an object file') > > > > > > local strtab, symtab = read_elf(elf_content) The newly added patch LGTM. > > > diff --git a/test/tarantool-tests/lj-865-fix_generation_of_mach-o_object_files.test.lua b/test/tarantool-tests/lj-865-fix_generation_of_mach-o_object_files.test.lua > > > new file mode 100644 > > > index 00000000..0519e134 > > > --- /dev/null > > > +++ b/test/tarantool-tests/lj-865-fix_generation_of_mach-o_object_files.test.lua > > > @@ -0,0 +1,271 @@ > > Side note: I feel like the comments for the sections are not elaborate > > enough for unprepared reader. I think you should briefly desribe the > > basic structure of a FAT object (FAT header, then array of per-segment > > headers, then object files) > Added a short description and an ASCII scheme. The scheme is very nice and informative, thanks! Regards, Maxim Kokryashkin