mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #5885 from FnControlOption/patch-2
Use `getsegmentdata` instead of deprecated `get_etext`/`get_edata`
This commit is contained in:
+11
-1
@@ -435,10 +435,20 @@ mrb_ro_data_p(const char *p)
|
||||
#elif defined(__APPLE__)
|
||||
#define MRB_LINK_TIME_RO_DATA_P
|
||||
#include <mach-o/getsect.h>
|
||||
#include <crt_externs.h> // for _NSGetMachExecuteHeader
|
||||
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 */
|
||||
|
||||
Reference in New Issue
Block a user