summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-08-25 16:37:01 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-08-26 16:06:01 +0900
commite9c6e52f5b8aa42cb4a8d67d5a98ee8daf74e997 (patch)
treef7d6bb62faa7bed51b632725d9b6fddef5f55831 /include
parentd00ae8d1666ae466a24b56ef35f18b4d66e80c62 (diff)
downloadmruby-e9c6e52f5b8aa42cb4a8d67d5a98ee8daf74e997.tar.gz
mruby-e9c6e52f5b8aa42cb4a8d67d5a98ee8daf74e997.zip
value.h: reconstruct `mrb_ro_data_p()`.
* use predefined `mrb_ro_data_p()` for user-mode Linux and macOS * define `MRB_LINK_TIME_RO_DATA_P` if predefined one is used * configure macro `MRB_USE_LINK_TIME_RO_DATA_P` is no longer used * contributions for new platforms are welcome
Diffstat (limited to 'include')
-rw-r--r--include/mrbconf.h6
-rw-r--r--include/mruby/value.h11
2 files changed, 4 insertions, 13 deletions
diff --git a/include/mrbconf.h b/include/mrbconf.h
index 7b29cb0ba..eda158d5e 100644
--- a/include/mrbconf.h
+++ b/include/mrbconf.h
@@ -113,11 +113,7 @@
/* number of object per heap page */
//#define MRB_HEAP_PAGE_SIZE 1024
-/* if __ehdr_start is available, mruby can reduce memory used by symbols */
-//#define MRB_USE_LINK_TIME_RO_DATA_P
-
-/* if MRB_USE_LINK_TIME_RO_DATA_P does not work,
- you can try mrb_ro_data_p() that you have implemented yourself in any file;
+/* you can provide and use mrb_ro_data_p() for your platform.
prototype is `mrb_bool mrb_ro_data_p(const char *ptr)` */
//#define MRB_USE_CUSTOM_RO_DATA_P
diff --git a/include/mruby/value.h b/include/mruby/value.h
index d139413a9..22a826385 100644
--- a/include/mruby/value.h
+++ b/include/mruby/value.h
@@ -408,17 +408,11 @@ mrb_undef_value(void)
return v;
}
-#if defined(MRB_USE_ETEXT_EDATA) && !defined(MRB_USE_LINK_TIME_RO_DATA_P)
-# ifdef __GNUC__
-# warning MRB_USE_ETEXT_EDATA is deprecated. Define MRB_USE_LINK_TIME_RO_DATA_P instead.
-# endif
-# define MRB_USE_LINK_TIME_RO_DATA_P
-#endif
-
#if defined(MRB_USE_CUSTOM_RO_DATA_P)
/* If you define `MRB_USE_CUSTOM_RO_DATA_P`, you must implement `mrb_ro_data_p()`. */
mrb_bool mrb_ro_data_p(const char *p);
-#elif defined(MRB_USE_LINK_TIME_RO_DATA_P) || defined(__linux__)
+#elif (defined(__linux__) && !defined(__KERNEL__))
+#define MRB_LINK_TIME_RO_DATA_P
extern char __ehdr_start[];
extern char __init_array_start[];
@@ -428,6 +422,7 @@ mrb_ro_data_p(const char *p)
return __ehdr_start < p && p < __init_array_start;
}
#elif defined(__APPLE__)
+#define MRB_LINK_TIME_RO_DATA_P
#include <mach-o/getsect.h>
static inline mrb_bool
mrb_ro_data_p(const char *p)