From b5d884922053962c955df1ce54d9dabc98888272 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Sat, 9 Nov 2019 07:09:01 +0900 Subject: [PATCH] Revert "don't embed full-path." This reverts commit dfac2e9eb3d697e56d91151584f1d3cf9d2c79c9. It does not work if cwd is different from builddir... --- builtin.c | 2 +- builtin.h | 2 +- mini_builtin.c | 26 ++------------------------ tool/mk_builtin_loader.rb | 3 ++- 4 files changed, 6 insertions(+), 27 deletions(-) diff --git a/builtin.c b/builtin.c index d936d1ceb6..bcc5dc61a4 100644 --- a/builtin.c +++ b/builtin.c @@ -18,7 +18,7 @@ builtin_lookup(const char *feature, size_t *psize) } void -rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table) +rb_load_with_builtin_functions(const char *feature_name, const char *fname, const struct rb_builtin_function *table) { // search binary size_t size; diff --git a/builtin.h b/builtin.h index ee99e21dcc..ef6ff82236 100644 --- a/builtin.h +++ b/builtin.h @@ -12,7 +12,7 @@ struct rb_builtin_function { #define RB_BUILTIN_FUNCTION(_i, _name, _arity) { .name = #_name, .func_ptr = (void *)_name, .argc = _arity, .index = _i } -void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table); +void rb_load_with_builtin_functions(const char *feature_name, const char *fname, const struct rb_builtin_function *table); #ifndef VM_CORE_H_EC_DEFINED typedef struct rb_execution_context_struct rb_execution_context_t; diff --git a/mini_builtin.c b/mini_builtin.c index 060c955fcb..dc95919da2 100644 --- a/mini_builtin.c +++ b/mini_builtin.c @@ -36,23 +36,12 @@ read_file(const char *fname, size_t *psize) } static struct st_table *loaded_builtin_table; -static char srcdir[0x200]; -static const char fname[] = "mini_builtin.c"; - -static const char * -feature_path(const char *name) -{ - static char path[0x200]; - snprintf(path, 0x200-1, "%s%s.rb", srcdir, name); - // fprintf(stderr, "srcdir:%s, path:%s, PATH_SEP_CHAR:%c\n", srcdir, path, PATH_SEP_CHAR); - return path; -} void -rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table) +rb_load_with_builtin_functions(const char *feature_name, const char *fname, const struct rb_builtin_function *table) { size_t fsize; - const char *code = read_file(feature_path(feature_name), &fsize); + const char *code = read_file(fname, &fsize); VALUE code_str = rb_utf8_str_new_static(code, fsize); VALUE name_str = rb_sprintf("", feature_name); rb_obj_hide(code_str); @@ -97,15 +86,4 @@ Init_builtin(void) { rb_define_singleton_method(rb_cRubyVM, "each_builtin", each_builtin, 0); loaded_builtin_table = st_init_strtable(); - - // check srcdir - // assume __FILE__ encoding is ASCII compatible. - int pos = strlen(__FILE__) - strlen(fname); - if (pos < 0) rb_bug("strlen(%s) - strlen(%s) < 0", __FILE__, fname); - - if (strcmp(__FILE__ + pos, fname) != 0) { - rb_bug("%s does not terminate with %s\n", __FILE__, fname); - } - strncpy(srcdir, __FILE__, 0x200-1); - srcdir[pos] = 0; } diff --git a/tool/mk_builtin_loader.rb b/tool/mk_builtin_loader.rb index f00e2fe26f..87b5e2ab76 100644 --- a/tool/mk_builtin_loader.rb +++ b/tool/mk_builtin_loader.rb @@ -67,9 +67,10 @@ def mk_builtin_header file f.puts "COMPILER_WARNING_POP" + path = File.expand_path(file) f.puts f.puts " // load" - f.puts " rb_load_with_builtin_functions(\"#{base}\", #{table});" + f.puts " rb_load_with_builtin_functions(\"#{base}\", \"#{file}\", #{table});" f.puts "}" }