workaround_an_undefined_symbol_error.patch 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
  2. From: Richard Townsend <[email protected]>
  3. Date: Wed, 24 Apr 2019 13:57:36 +0100
  4. Subject: Workaround an undefined symbol error
  5. Previously, builds configured with dcheck_always_on=true would error
  6. with messages like this in the log:
  7. lld-link: error: undefined symbol: public: bool __cdecl
  8. v8::internal::CPURegister::IsZero(void) const
  9. By moving some functions out of the the arm64-assembler header file,
  10. this error no longer seems to happen.
  11. diff --git a/src/codegen/arm64/assembler-arm64.cc b/src/codegen/arm64/assembler-arm64.cc
  12. index 2e21ab913d7b5ebc62857883ce3907c451b56399..e6a6b39086b2d5a6bf39b5a88df970cec662edf5 100644
  13. --- a/src/codegen/arm64/assembler-arm64.cc
  14. +++ b/src/codegen/arm64/assembler-arm64.cc
  15. @@ -3600,6 +3600,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift,
  16. ImmMoveWide(static_cast<int>(imm)) | ShiftMoveWide(shift));
  17. }
  18. +Instr Assembler::RmNot31(CPURegister rm) {
  19. + DCHECK_NE(rm.code(), kSPRegInternalCode);
  20. + DCHECK(!rm.IsZero());
  21. + return Rm(rm);
  22. +}
  23. +
  24. +Instr Assembler::RdSP(Register rd) {
  25. + DCHECK(!rd.IsZero());
  26. + return (rd.code() & kRegCodeMask) << Rd_offset;
  27. +}
  28. +
  29. +Instr Assembler::RnSP(Register rn) {
  30. + DCHECK(!rn.IsZero());
  31. + return (rn.code() & kRegCodeMask) << Rn_offset;
  32. +}
  33. +
  34. void Assembler::AddSub(const Register& rd, const Register& rn,
  35. const Operand& operand, FlagsUpdate S, AddSubOp op) {
  36. DCHECK_EQ(rd.SizeInBits(), rn.SizeInBits());
  37. diff --git a/src/codegen/arm64/assembler-arm64.h b/src/codegen/arm64/assembler-arm64.h
  38. index f787bad464f82db2d138507832be7beafad658b5..bbbe52001634550052eac8b5b2712ae656575923 100644
  39. --- a/src/codegen/arm64/assembler-arm64.h
  40. +++ b/src/codegen/arm64/assembler-arm64.h
  41. @@ -2095,11 +2095,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
  42. return rm.code() << Rm_offset;
  43. }
  44. - static Instr RmNot31(CPURegister rm) {
  45. - DCHECK_NE(rm.code(), kSPRegInternalCode);
  46. - DCHECK(!rm.IsZero());
  47. - return Rm(rm);
  48. - }
  49. + static Instr RmNot31(CPURegister rm);
  50. static Instr Ra(CPURegister ra) {
  51. DCHECK_NE(ra.code(), kSPRegInternalCode);
  52. @@ -2123,15 +2119,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
  53. // These encoding functions allow the stack pointer to be encoded, and
  54. // disallow the zero register.
  55. - static Instr RdSP(Register rd) {
  56. - DCHECK(!rd.IsZero());
  57. - return (rd.code() & kRegCodeMask) << Rd_offset;
  58. - }
  59. -
  60. - static Instr RnSP(Register rn) {
  61. - DCHECK(!rn.IsZero());
  62. - return (rn.code() & kRegCodeMask) << Rn_offset;
  63. - }
  64. + static Instr RdSP(Register rd);
  65. + static Instr RnSP(Register rn);
  66. // Flags encoding.
  67. inline static Instr Flags(FlagsUpdate S);