diff --git a/deps/Versions.make b/deps/Versions.make index e25ed29d5e8dc..37c2c0e79518b 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -101,6 +101,7 @@ SUITESPARSE_JLL_NAME := SuiteSparse # unwind UNWIND_VER := 1.3.2 UNWIND_JLL_NAME := LibUnwind +UNWIND_JLL_VER := 1.3.2+1 # zlib ZLIB_VER := 1.2.11 diff --git a/deps/checksums/unwind b/deps/checksums/unwind index 1ec7c6189c85a..30c56c0aece7a 100644 --- a/deps/checksums/unwind +++ b/deps/checksums/unwind @@ -1,26 +1,26 @@ LibOSXUnwind.v0.0.6+1.x86_64-apple-darwin.tar.gz/md5/fd98df2005d13aa16341c5aecba1af70 LibOSXUnwind.v0.0.6+1.x86_64-apple-darwin.tar.gz/sha512/2d2263c3e5f095ad9eba7fea7cb882a19fece8a10486489d0a15b8e81ea0f8626804c4822b8c92a26a608d568c0ff1a4e976ea6d746be47ac1a70891455162a6 -LibUnwind.v1.3.2+0.aarch64-linux-gnu.tar.gz/md5/36281b8ba75cab684c843585dc949b72 -LibUnwind.v1.3.2+0.aarch64-linux-gnu.tar.gz/sha512/7f5224fe3bfd9dd579fa2efb40b65ca785da3f7ddee1bd41e072f7f5be1ce8fa24c2eab71a1233406ce532ba9f900d1f0e288f84631684b3cbc8a0f3a8347e41 -LibUnwind.v1.3.2+0.aarch64-linux-musl.tar.gz/md5/ba21435b80f4f50fbb13cf4653e3fac3 -LibUnwind.v1.3.2+0.aarch64-linux-musl.tar.gz/sha512/25cfe1f1cbfe2b9ee748348e2b0df0fba3607dedbcf88f864e88a15544bfe0781de502157353915b62387abdb467c40e51b08e847f0d2cc096a3d2d13f061559 -LibUnwind.v1.3.2+0.armv6l-linux-gnueabihf.tar.gz/md5/81fc18e166b8de9de171ca202ee43816 -LibUnwind.v1.3.2+0.armv6l-linux-gnueabihf.tar.gz/sha512/e41f0224d79dc5725b327ad7f24eb09aef0fc687842d43eecc8ac60c4dcdc1d2877d45c88015d0e32014f8bef38712f540c27093d135dd0bc7e7eafb6bd64b18 -LibUnwind.v1.3.2+0.armv6l-linux-musleabihf.tar.gz/md5/69da77d1e7124dee0c60d4fc15cf0040 -LibUnwind.v1.3.2+0.armv6l-linux-musleabihf.tar.gz/sha512/a1c6d70971a7375c26ce761039f06a940db140b06028534557f3b608363af0da9d7ef570d5f3b388f84d9649d378293bb6b59d44cf34ebf24f0a260a6824f142 -LibUnwind.v1.3.2+0.armv7l-linux-gnueabihf.tar.gz/md5/b7a6b251f30cd6d1fc890a8be4a19476 -LibUnwind.v1.3.2+0.armv7l-linux-gnueabihf.tar.gz/sha512/d143588edb96b31de4d1347ddc867e5982ccee8a39a35f705114f6fa12aca054f14a05a24ca0850be26c62a92a4c52837e898765b3fa8fa6e5259e45eebbe281 -LibUnwind.v1.3.2+0.armv7l-linux-musleabihf.tar.gz/md5/bdfa9757e7631387cb64f3897e1847fc -LibUnwind.v1.3.2+0.armv7l-linux-musleabihf.tar.gz/sha512/54f8529bb836cddff61e0112294ae3165eb6498b0c881b59047a40e180785f63c01e4ad82bcffb045b783e015c255c7b0e2f8ec43411ff647f860ef25551f540 -LibUnwind.v1.3.2+0.i686-linux-gnu.tar.gz/md5/17b1c29c3387dc3b685e75ce402caad6 -LibUnwind.v1.3.2+0.i686-linux-gnu.tar.gz/sha512/e8551b4771acf7eb31fc5db3423905b17c545aa0895b5e5369c56186841631f188186e585f0384cfca62269e1b2fffe9d9b24274d51e1ccad9bc89c3dbf6072b -LibUnwind.v1.3.2+0.i686-linux-musl.tar.gz/md5/df7e34217c1dc931c88e573179218cf6 -LibUnwind.v1.3.2+0.i686-linux-musl.tar.gz/sha512/995318e65520eae55647b2d1065f5ac5bb15cdf7b4980000b17338c59e1657e408ba711c622b450df96712a5c1c75c85c03d7952a1fd7f0b65712fa9ac6ffbab -LibUnwind.v1.3.2+0.powerpc64le-linux-gnu.tar.gz/md5/775e9c77ff9de48d40b2a2f18e5f081e -LibUnwind.v1.3.2+0.powerpc64le-linux-gnu.tar.gz/sha512/3f4d12ba171227c11ad0e774e003742c1cd69d7e0e8ae571accea561ff930ae6aec119fc8b539caf52960886cde3978912e03d663aa7fb6416978e304767dde8 -LibUnwind.v1.3.2+0.x86_64-linux-gnu.tar.gz/md5/d63ca2bc34d4bc87498d28b47e530f54 -LibUnwind.v1.3.2+0.x86_64-linux-gnu.tar.gz/sha512/2e95d1648414fa9bccf6012a9f6690cf3c209dbb138bf59da76be538793c5caca319eed3b063f18725212844e21bd67157da2aec49ec9424e38664c23dde9f45 -LibUnwind.v1.3.2+0.x86_64-linux-musl.tar.gz/md5/56a9c951e75e38bf5787c928862924cf -LibUnwind.v1.3.2+0.x86_64-linux-musl.tar.gz/sha512/8ea0c4d0e412a3792c6d33fe6dab6ae9f4c4103341842e42a9ae7efcb31c29d977970caa383373c6694d6cd8736ce75c727fa2af8f59bc3eff8d8f93ac0b9c89 -LibUnwind.v1.3.2+0.x86_64-unknown-freebsd.tar.gz/md5/10507e55604be0137c4531b5e35fbafc -LibUnwind.v1.3.2+0.x86_64-unknown-freebsd.tar.gz/sha512/a795c02b48a3b44d6b7df0b07ed31f44c3c1e189b0732a5a41ce6f2eac952da4cc376eefab17c283a20a84aae4c3dc6618e58ca86003390b4ab396d085fa83c4 +LibUnwind.v1.3.2+1.aarch64-linux-gnu.tar.gz/md5/78febd8157b976e174543b29bc5a4b06 +LibUnwind.v1.3.2+1.aarch64-linux-gnu.tar.gz/sha512/d5e78761537e8ab0416d64b36606cc3788b857ef25804d7ddfe69d3a10941b726bc7236e5e60caaccf6acb4dc6db23dd762d078172d9e08a44b67a061438818e +LibUnwind.v1.3.2+1.aarch64-linux-musl.tar.gz/md5/912d7aa8d01c8a54a77735bd77203194 +LibUnwind.v1.3.2+1.aarch64-linux-musl.tar.gz/sha512/8ce4fd189edf2ffb7643c2a9052240ffd544835d1a8af0555461013fbb7da5efa2f304bbbe5e2a326b436df9ebff41b30683aaa09c8d195bf2d7df73dd618eab +LibUnwind.v1.3.2+1.armv6l-linux-gnueabihf.tar.gz/md5/c5bb0cb99f9f5cd305cbfe9da0d763f3 +LibUnwind.v1.3.2+1.armv6l-linux-gnueabihf.tar.gz/sha512/40f192a5ac259eab510c5bfba2cb75f4d53860123c586072405a0523140c9bb49b47f84f1dbc3e202ca00f933cce1895326ad0621cf9a42485c13a4d5c116b56 +LibUnwind.v1.3.2+1.armv6l-linux-musleabihf.tar.gz/md5/050cfe9c1afe7365c8034ce1391479fd +LibUnwind.v1.3.2+1.armv6l-linux-musleabihf.tar.gz/sha512/7dfaebe6037a7b7a83b6bd7791e1da81e0977e1da2e9e8c39588351768e7485763f159e40ccd0b6354c3ddc114b1dedff6b5561c3df2a2b191d7713a59352b2d +LibUnwind.v1.3.2+1.armv7l-linux-gnueabihf.tar.gz/md5/434526e6ceced6128721fa7e7f7400a3 +LibUnwind.v1.3.2+1.armv7l-linux-gnueabihf.tar.gz/sha512/5e2d179d60f807ab0612719f2a3a36b57f20df611f1ee71f0b0ae2abb78f6abbbcf4fd079e34487e688919972a8017d4a55af3120bcc0ecbaa5628173a747c93 +LibUnwind.v1.3.2+1.armv7l-linux-musleabihf.tar.gz/md5/1661c9c1e936fb1d2d4db6121819209c +LibUnwind.v1.3.2+1.armv7l-linux-musleabihf.tar.gz/sha512/97a56b8a94e95f78bc3733983299a9fdaf0ae21cbbd883b1bf2d5d50529fd882e7a4af934f340a6831331195ed2c253c5046be615ce3ef458e2d4910bcd62678 +LibUnwind.v1.3.2+1.i686-linux-gnu.tar.gz/md5/9538a9cc93e7365072b12535c8fff75c +LibUnwind.v1.3.2+1.i686-linux-gnu.tar.gz/sha512/7b04bac8659d9720935e5dde9635219f8192b273fc20f9f34828c1df3d6651681feb50b5a99e994e820511c6bd9a03be845d8fd9e8b28e7cb35c334232851c0f +LibUnwind.v1.3.2+1.i686-linux-musl.tar.gz/md5/d79e221ad860420a641b89442fa83bfc +LibUnwind.v1.3.2+1.i686-linux-musl.tar.gz/sha512/8fc501a70d2f6e7e185506a45cc92020c175d34d09abec0d286cca72c80b8aa424ae112584e098edd6bc21020aed111a3e2a899d5c75ef5f6aa840072e8b9dee +LibUnwind.v1.3.2+1.powerpc64le-linux-gnu.tar.gz/md5/cc4265ff601f1bcc1476ec7d1364459e +LibUnwind.v1.3.2+1.powerpc64le-linux-gnu.tar.gz/sha512/04e688a0f52b6bf454b03dceee4ee04f90a6bcb63f443496ffaf457ae84cac63f45a542d31e499a5d85bec7d1b0fbc2f56f21db2483643882427f2f414b1250c +LibUnwind.v1.3.2+1.x86_64-linux-gnu.tar.gz/md5/c10f0be2a0733fe6937dd3562c96ca86 +LibUnwind.v1.3.2+1.x86_64-linux-gnu.tar.gz/sha512/25beda337dedad841729241019bc46e7aeb60c9fc08182dd1c200aa007ba489dd3d885d30d223addafca6637b2ca195e265f102aa5c80c39e077cf63fc31c2c3 +LibUnwind.v1.3.2+1.x86_64-linux-musl.tar.gz/md5/94d108503eadc43542feb6f348e4b049 +LibUnwind.v1.3.2+1.x86_64-linux-musl.tar.gz/sha512/ed1013fbb43a270a7e663aae083d84a9aeee4a7db0e7db08db6433fe6a4dc1455b8188583ddcccc441c8f25681e80036132194b1c3e948faf0bcad4cb667a8cd +LibUnwind.v1.3.2+1.x86_64-unknown-freebsd.tar.gz/md5/7592a48d5aec6f654d1da25a7045e8d7 +LibUnwind.v1.3.2+1.x86_64-unknown-freebsd.tar.gz/sha512/8e1d6e21fe49c06c4c6a31ae1a53d6bae844e93409535877b02b76b98bcec4959bbc902aa4c6e16534887958bc80e209e06ed9ca03a065cbff4ce1efcf048898 diff --git a/deps/patches/libunwind-rsp-cfa.patch b/deps/patches/libunwind-rsp-cfa.patch new file mode 100644 index 0000000000000..286686e8e8e20 --- /dev/null +++ b/deps/patches/libunwind-rsp-cfa.patch @@ -0,0 +1,308 @@ +commit e17f29435c902f80ed119ae33506fca1b57584f7 +Author: Keno Fischer +Date: Sat Feb 6 18:13:16 2021 -0500 + + x86_64: Stop aliasing RSP and CFA + + RSP and CFA are different concepts. RSP refers to the physical + register, CFA is a virtual register that serves as the base + address for various other saved registers. It is true that + in many frames these are set to alias, however this is not + a requirement. For example, a function that performs a stack + switch would likely change the rsp in the middle of the function, + but would keep the CFA at the original RSP such that saved registers + may be appropriately recovered. + + We are seeing incorrect unwinds in the Julia runtime when running + julia under rr. This is because injects code (with correct CFI) + that performs just such a stack switch [1]. GDB manages to unwind + this correctly, but libunwind incorrectly sets the rsp to the CFA + address, causing a misunwind. + + Tested on x86_64, patches for other architectures are ported, but + not tested. + + [1] https://github.com/rr-debugger/rr/blob/469c22059a4a1798d33a8a224457faf22b2c178c/src/preload/syscall_hook.S#L454 + +diff --git a/include/dwarf.h b/include/dwarf.h +index fab93c61..b845e2eb 100644 +--- a/include/dwarf.h ++++ b/include/dwarf.h +@@ -227,6 +227,7 @@ typedef enum + DWARF_WHERE_REG, /* register saved in another register */ + DWARF_WHERE_EXPR, /* register saved */ + DWARF_WHERE_VAL_EXPR, /* register has computed value */ ++ DWARF_WHERE_CFA, /* register is set to the computed cfa value */ + } + dwarf_where_t; + +@@ -309,7 +310,7 @@ typedef struct dwarf_cursor + void *as_arg; /* argument to address-space callbacks */ + unw_addr_space_t as; /* reference to per-address-space info */ + +- unw_word_t cfa; /* canonical frame address; aka frame-/stack-pointer */ ++ unw_word_t cfa; /* canonical frame address; aka frame-pointer */ + unw_word_t ip; /* instruction pointer */ + unw_word_t args_size; /* size of arguments */ + unw_word_t eh_args[UNW_TDEP_NUM_EH_REGS]; +diff --git a/include/libunwind-aarch64.h b/include/libunwind-aarch64.h +index 85812e15..e1f69a5c 100644 +--- a/include/libunwind-aarch64.h ++++ b/include/libunwind-aarch64.h +@@ -146,12 +146,10 @@ typedef enum + UNW_AARCH64_FPSR, + UNW_AARCH64_FPCR, + +- /* For AArch64, the CFA is the value of SP (x31) at the call site of the +- previous frame. */ +- UNW_AARCH64_CFA = UNW_AARCH64_SP, +- + UNW_TDEP_LAST_REG = UNW_AARCH64_FPCR, + ++ UNW_AARCH64_CFA, ++ + UNW_TDEP_IP = UNW_AARCH64_X30, + UNW_TDEP_SP = UNW_AARCH64_SP, + UNW_TDEP_EH = UNW_AARCH64_X0, +diff --git a/include/libunwind-arm.h b/include/libunwind-arm.h +index 6709b7ab..58d93926 100644 +--- a/include/libunwind-arm.h ++++ b/include/libunwind-arm.h +@@ -42,7 +42,7 @@ extern "C" { + require recompiling all users of this library. Stack allocation is + relatively cheap and unwind-state copying is relatively rare, so we + want to err on making it rather too big than too small. */ +- ++ + /* FIXME for ARM. Too big? What do other things use for similar tasks? */ + #define UNW_TDEP_CURSOR_LEN 4096 + +@@ -69,7 +69,7 @@ typedef enum + UNW_ARM_R13, + UNW_ARM_R14, + UNW_ARM_R15, +- ++ + /* VFPv2 s0-s31 (obsolescent numberings). */ + UNW_ARM_S0 = 64, + UNW_ARM_S1, +@@ -103,7 +103,7 @@ typedef enum + UNW_ARM_S29, + UNW_ARM_S30, + UNW_ARM_S31, +- ++ + /* FPA register numberings. */ + UNW_ARM_F0 = 96, + UNW_ARM_F1, +@@ -113,7 +113,7 @@ typedef enum + UNW_ARM_F5, + UNW_ARM_F6, + UNW_ARM_F7, +- ++ + /* iWMMXt GR register numberings. */ + UNW_ARM_wCGR0 = 104, + UNW_ARM_wCGR1, +@@ -123,7 +123,7 @@ typedef enum + UNW_ARM_wCGR5, + UNW_ARM_wCGR6, + UNW_ARM_wCGR7, +- ++ + /* iWMMXt register numberings. */ + UNW_ARM_wR0 = 112, + UNW_ARM_wR1, +@@ -141,9 +141,9 @@ typedef enum + UNW_ARM_wR13, + UNW_ARM_wR14, + UNW_ARM_wR15, +- ++ + /* Two-byte encodings from here on. */ +- ++ + /* SPSR. */ + UNW_ARM_SPSR = 128, + UNW_ARM_SPSR_FIQ, +@@ -151,7 +151,7 @@ typedef enum + UNW_ARM_SPSR_ABT, + UNW_ARM_SPSR_UND, + UNW_ARM_SPSR_SVC, +- ++ + /* User mode registers. */ + UNW_ARM_R8_USR = 144, + UNW_ARM_R9_USR, +@@ -160,7 +160,7 @@ typedef enum + UNW_ARM_R12_USR, + UNW_ARM_R13_USR, + UNW_ARM_R14_USR, +- ++ + /* FIQ registers. */ + UNW_ARM_R8_FIQ = 151, + UNW_ARM_R9_FIQ, +@@ -169,23 +169,23 @@ typedef enum + UNW_ARM_R12_FIQ, + UNW_ARM_R13_FIQ, + UNW_ARM_R14_FIQ, +- ++ + /* IRQ registers. */ + UNW_ARM_R13_IRQ = 158, + UNW_ARM_R14_IRQ, +- ++ + /* ABT registers. */ + UNW_ARM_R13_ABT = 160, + UNW_ARM_R14_ABT, +- ++ + /* UND registers. */ + UNW_ARM_R13_UND = 162, + UNW_ARM_R14_UND, +- ++ + /* SVC registers. */ + UNW_ARM_R13_SVC = 164, + UNW_ARM_R14_SVC, +- ++ + /* iWMMXt control registers. */ + UNW_ARM_wC0 = 192, + UNW_ARM_wC1, +diff --git a/src/aarch64/Gregs.c b/src/aarch64/Gregs.c +index a8843734..4b8a684d 100644 +--- a/src/aarch64/Gregs.c ++++ b/src/aarch64/Gregs.c +@@ -84,12 +84,13 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + case UNW_AARCH64_X27: + case UNW_AARCH64_X28: + case UNW_AARCH64_X29: ++ case UNW_AARCH64_SP: + case UNW_AARCH64_PC: + case UNW_AARCH64_PSTATE: + loc = c->dwarf.loc[reg]; + break; + +- case UNW_AARCH64_SP: ++ case UNW_AARCH64_CFA: + if (write) + return -UNW_EREADONLYREG; + *valp = c->dwarf.cfa; +diff --git a/src/arm/Gregs.c b/src/arm/Gregs.c +index 0d52f0b2..021a79ba 100644 +--- a/src/arm/Gregs.c ++++ b/src/arm/Gregs.c +@@ -29,7 +29,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + int write) + { + dwarf_loc_t loc = DWARF_NULL_LOC; +- ++ + switch (reg) + { + case UNW_ARM_R15: +@@ -48,11 +48,11 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + case UNW_ARM_R10: + case UNW_ARM_R11: + case UNW_ARM_R12: ++ case UNW_ARM_R13: + case UNW_ARM_R14: + loc = c->dwarf.loc[reg - UNW_ARM_R0]; + break; + +- case UNW_ARM_R13: + case UNW_ARM_CFA: + if (write) + return -UNW_EREADONLYREG; +diff --git a/src/dwarf/Gparser.c b/src/dwarf/Gparser.c +index 7d255aee..986c4a89 100644 +--- a/src/dwarf/Gparser.c ++++ b/src/dwarf/Gparser.c +@@ -500,6 +500,8 @@ setup_fde (struct dwarf_cursor *c, dwarf_state_record_t *sr) + memset (sr, 0, sizeof (*sr)); + for (i = 0; i < DWARF_NUM_PRESERVED_REGS + 2; ++i) + set_reg (sr, i, DWARF_WHERE_SAME, 0); ++ // SP defaults to CFA (but is overridable) ++ set_reg (sr, UNW_TDEP_SP, DWARF_WHERE_CFA, 0); + + struct dwarf_cie_info *dci = c->pi.unwind_info; + sr->rs_current.ret_addr_column = dci->ret_addr_column; +@@ -826,6 +828,10 @@ apply_reg_state (struct dwarf_cursor *c, struct dwarf_reg_state *rs) + case DWARF_WHERE_SAME: + break; + ++ case DWARF_WHERE_CFA: ++ new_loc[i] = DWARF_VAL_LOC (c, cfa); ++ break; ++ + case DWARF_WHERE_CFAREL: + new_loc[i] = DWARF_MEM_LOC (c, cfa + rs->reg.val[i]); + break; +diff --git a/src/hppa/Gregs.c b/src/hppa/Gregs.c +index da0542c8..7b18968a 100644 +--- a/src/hppa/Gregs.c ++++ b/src/hppa/Gregs.c +@@ -42,7 +42,6 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + break; + + case UNW_HPPA_CFA: +- case UNW_HPPA_SP: + if (write) + return -UNW_EREADONLYREG; + *valp = c->dwarf.cfa; +diff --git a/src/mips/Gregs.c b/src/mips/Gregs.c +index 95194022..be581d31 100644 +--- a/src/mips/Gregs.c ++++ b/src/mips/Gregs.c +@@ -31,7 +31,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + int write) + { + dwarf_loc_t loc = DWARF_NULL_LOC; +- ++ + switch (reg) + { + case UNW_MIPS_R0: +diff --git a/src/x86/Gregs.c b/src/x86/Gregs.c +index 4a959261..9446d6c6 100644 +--- a/src/x86/Gregs.c ++++ b/src/x86/Gregs.c +@@ -53,7 +53,6 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + break; + + case UNW_X86_CFA: +- case UNW_X86_ESP: + if (write) + return -UNW_EREADONLYREG; + *valp = c->dwarf.cfa; +@@ -81,6 +80,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + case UNW_X86_ECX: loc = c->dwarf.loc[ECX]; break; + case UNW_X86_EBX: loc = c->dwarf.loc[EBX]; break; + ++ case UNW_X86_ESP: loc = c->dwarf.loc[ESP]; break; + case UNW_X86_EBP: loc = c->dwarf.loc[EBP]; break; + case UNW_X86_ESI: loc = c->dwarf.loc[ESI]; break; + case UNW_X86_EDI: loc = c->dwarf.loc[EDI]; break; +diff --git a/src/x86_64/Gregs.c b/src/x86_64/Gregs.c +index baf8a24f..dff5bcbe 100644 +--- a/src/x86_64/Gregs.c ++++ b/src/x86_64/Gregs.c +@@ -79,7 +79,6 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + break; + + case UNW_X86_64_CFA: +- case UNW_X86_64_RSP: + if (write) + return -UNW_EREADONLYREG; + *valp = c->dwarf.cfa; +@@ -107,6 +106,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, + case UNW_X86_64_RCX: loc = c->dwarf.loc[RCX]; break; + case UNW_X86_64_RBX: loc = c->dwarf.loc[RBX]; break; + ++ case UNW_X86_64_RSP: loc = c->dwarf.loc[RSP]; break; + case UNW_X86_64_RBP: loc = c->dwarf.loc[RBP]; break; + case UNW_X86_64_RSI: loc = c->dwarf.loc[RSI]; break; + case UNW_X86_64_RDI: loc = c->dwarf.loc[RDI]; break; diff --git a/deps/unwind.mk b/deps/unwind.mk index c51adfe63dce0..0c9f1e9aa0643 100644 --- a/deps/unwind.mk +++ b/deps/unwind.mk @@ -24,7 +24,11 @@ $(SRCCACHE)/libunwind-$(UNWIND_VER)/libunwind-static-arm.patch-applied: $(SRCCAC cd $(SRCCACHE)/libunwind-$(UNWIND_VER) && patch -p1 -f < $(SRCDIR)/patches/libunwind-static-arm.patch echo 1 > $@ -$(BUILDDIR)/libunwind-$(UNWIND_VER)/build-configured: $(SRCCACHE)/libunwind-$(UNWIND_VER)/source-extracted $(SRCCACHE)/libunwind-$(UNWIND_VER)/libunwind-static-arm.patch-applied +$(SRCCACHE)/libunwind-$(UNWIND_VER)/libunwind-rsp-cfa.patch-applied: $(SRCCACHE)/libunwind-$(UNWIND_VER)/libunwind-static-arm.patch-applied + cd $(SRCCACHE)/libunwind-$(UNWIND_VER) && patch -p1 -f -u < $(SRCDIR)/patches/libunwind-rsp-cfa.patch + echo 1 > $@ + +$(BUILDDIR)/libunwind-$(UNWIND_VER)/build-configured: $(SRCCACHE)/libunwind-$(UNWIND_VER)/source-extracted $(SRCCACHE)/libunwind-$(UNWIND_VER)/libunwind-rsp-cfa.patch-applied mkdir -p $(dir $@) cd $(dir $@) && \ $(dir $<)/configure $(CONFIGURE_COMMON) CPPFLAGS="$(CPPFLAGS) $(LIBUNWIND_CPPFLAGS)" CFLAGS="$(CFLAGS) $(LIBUNWIND_CFLAGS)" --enable-shared --disable-minidebuginfo --disable-tests