From e6c0f324aebd7a38a1bc4772b184f69c4f074b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Wed, 28 Dec 2022 08:50:59 -0800 Subject: [PATCH 1/2] Use getsegmentdata instead of deprecated get_etext/get_edata --- include/mruby/value.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/mruby/value.h b/include/mruby/value.h index 39b1ef967..4c35d2e7b 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -435,10 +435,20 @@ mrb_ro_data_p(const char *p) #elif defined(__APPLE__) #define MRB_LINK_TIME_RO_DATA_P #include +#include static inline mrb_bool mrb_ro_data_p(const char *p) { - return (char*)get_etext() < p && p < (char*)get_edata(); +#ifdef __LP64__ + struct mach_header_64 *mhp; +#else + struct mach_header *mhp; +#endif + mhp = _NSGetMachExecuteHeader(); + unsigned long textsize, datasize; + char *text = (char*)getsegmentdata(mhp, SEG_TEXT, &textsize); + char *data = (char*)getsegmentdata(mhp, SEG_DATA, &datasize); + return text + textsize < p && p < data + datasize; } #endif /* Linux or macOS */ #endif /* MRB_NO_DEFAULT_RO_DATA_P */ From 8c23385f62584a9e4fe084377447bfc53f1c0b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Thu, 29 Dec 2022 08:08:55 -0800 Subject: [PATCH 2/2] Add reason for include --- include/mruby/value.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mruby/value.h b/include/mruby/value.h index 4c35d2e7b..6666a9c14 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -435,7 +435,7 @@ mrb_ro_data_p(const char *p) #elif defined(__APPLE__) #define MRB_LINK_TIME_RO_DATA_P #include -#include +#include // for _NSGetMachExecuteHeader static inline mrb_bool mrb_ro_data_p(const char *p) {