1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* dln.c (dln_{exit,loaderror,memerror,notimplement}): renamed as

independent names.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-09-28 13:46:18 +00:00
parent b957eb25ff
commit fc831f638a
2 changed files with 44 additions and 19 deletions

View file

@ -1,4 +1,7 @@
Mon Sep 28 22:33:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
Mon Sep 28 22:46:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* dln.c (dln_{exit,loaderror,memerror,notimplement}): renamed as
independent names.
* dln.c (aix_loaderror): needs format string.

58
dln.c
View file

@ -9,7 +9,18 @@
**********************************************************************/
#ifdef RUBY_EXPORT
#include "ruby/ruby.h"
#define dln_notimplement rb_notimplement
#define dln_memerror rb_memerror
#define dln_exit rb_exit
#define dln_loaderror rb_loaderror
#else
#define dln_notimplement --->>> dln not implemented <<<---
#define dln_memerror abort
#define dln_exit exit
static void dln_loaderror(const char *format, ...);
#endif
#include "dln.h"
#ifdef HAVE_STDLIB_H
@ -77,6 +88,18 @@ char *getenv();
# include <image.h>
#endif
#ifndef dln_loaderror
static void
dln_loaderror(const char *format, ...)
{
va_list ap;
va_start(ap, format);
vfprintf(stderr, format, ap);
va_end(ap);
abort();
}
#endif
#ifndef NO_DLN_LOAD
#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined(_AIX) && !defined(MACOSX_DYLD) && !defined(_UNICOSMP)
@ -119,7 +142,7 @@ init_funcname_len(char **buf, const char *file)
char *tmp = ALLOCA_N(char, len+1);\
if (!tmp) {\
free(*buf);\
rb_memerror();\
dln_memerror();\
}\
strlcpy(tmp, *buf, len + 1);\
free(*buf);\
@ -451,7 +474,7 @@ dln_undefined(void)
if (undef_tbl->num_entries > 0) {
fprintf(stderr, "dln: Calling undefined function\n");
dln_print_undef();
rb_exit(1);
dln_exit(1);
}
}
@ -1190,8 +1213,7 @@ aix_loaderror(const char *pathname)
ERRBUF_APPEND("\n");
}
errbuf[strlen(errbuf)-1] = '\0'; /* trim off last newline */
rb_loaderror("%s", errbuf);
return;
dln_loaderror("%s", errbuf);
}
#endif
@ -1201,7 +1223,7 @@ void*
dln_load(const char *file)
{
#ifdef NO_DLN_LOAD
rb_raise(rb_eLoadError, "this executable file can't load extension libraries");
dln_loaderror("this executable file can't load extension libraries");
#else
#if !defined(_AIX) && !defined(NeXT)
@ -1215,7 +1237,7 @@ dln_load(const char *file)
void (*init_fct)();
char *buf;
if (strlen(file) >= MAXPATHLEN) rb_loaderror("filename too long");
if (strlen(file) >= MAXPATHLEN) dln_loaderror("filename too long");
/* Load the file as an object one */
init_funcname(&buf, file);
@ -1229,7 +1251,7 @@ dln_load(const char *file)
}
if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) {
rb_loaderror("%s - %s\n%s", dln_strerror(), buf, file);
dln_loaderror("%s - %s\n%s", dln_strerror(), buf, file);
}
/* Call the init code */
@ -1299,14 +1321,14 @@ dln_load(const char *file)
lib = shl_load(file, flags, 0);
if (lib == NULL) {
extern int errno;
rb_loaderror("%s - %s", strerror(errno), file);
dln_loaderror("%s - %s", strerror(errno), file);
}
shl_findsym(&lib, buf, TYPE_PROCEDURE, (void*)&init_fct);
if (init_fct == NULL) {
shl_findsym(&lib, buf, TYPE_UNDEFINED, (void*)&init_fct);
if (init_fct == NULL) {
errno = ENOSYM;
rb_loaderror("%s - %s", strerror(ENOSYM), file);
dln_loaderror("%s - %s", strerror(ENOSYM), file);
}
}
(*init_fct)();
@ -1359,14 +1381,14 @@ dln_load(const char *file)
if(rld_load(s, NULL, object_files, NULL) == 0) {
NXFlush(s);
NXClose(s);
rb_loaderror("Failed to load %.200s", file);
dln_loaderror("Failed to load %.200s", file);
}
/* lookup the initial function */
if(rld_lookup(s, buf, &init_address) == 0) {
NXFlush(s);
NXClose(s);
rb_loaderror("Failed to lookup Init function %.200s", file);
dln_loaderror("Failed to lookup Init function %.200s", file);
}
NXFlush(s);
@ -1391,14 +1413,14 @@ dln_load(const char *file)
dyld_result = NSCreateObjectFileImageFromFile(file, &obj_file);
if (dyld_result != NSObjectFileImageSuccess) {
rb_loaderror("Failed to load %.200s", file);
dln_loaderror("Failed to load %.200s", file);
}
NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW);
/* lookup the initial function */
if(!NSIsSymbolNameDefined(buf)) {
rb_loaderror("Failed to lookup Init function %.200s",file);
dln_loaderror("Failed to lookup Init function %.200s",file);
}
init_fct = NSAddressOfSymbol(NSLookupAndBindSymbol(buf));
(*init_fct)();
@ -1418,7 +1440,7 @@ dln_load(const char *file)
/* load extention module */
img_id = load_add_on(file);
if (img_id <= 0) {
rb_loaderror("Failed to load add_on %.200s error_code=%x",
dln_loaderror("Failed to load add_on %.200s error_code=%x",
file, img_id);
}
@ -1442,12 +1464,12 @@ dln_load(const char *file)
if ((B_BAD_IMAGE_ID == err_stat) || (B_BAD_INDEX == err_stat)) {
unload_add_on(img_id);
rb_loaderror("Failed to lookup Init function %.200s", file);
dln_loaderror("Failed to lookup Init function %.200s", file);
}
else if (B_NO_ERROR != err_stat) {
char errmsg[] = "Internal of BeOS version. %.200s (symbol_name = %s)";
unload_add_on(img_id);
rb_loaderror(errmsg, strerror(err_stat), buf);
dln_loaderror(errmsg, strerror(err_stat), buf);
}
/* call module initialize function. */
@ -1457,14 +1479,14 @@ dln_load(const char *file)
#endif /* __BEOS__*/
#ifndef DLN_DEFINED
rb_notimplement();
dln_notimplement();
#endif
#endif /* USE_DLN_A_OUT */
#endif
#if !defined(_AIX) && !defined(NeXT)
failed:
rb_loaderror("%s - %s", error, file);
dln_loaderror("%s - %s", error, file);
#endif
#endif /* NO_DLN_LOAD */