Patch by Vladimir Marangozov, inspired by a bug report from Gary

Duzan, for AIX, to support C++ objects with static initializers, when
using the genuine IBM C++ compiler (namely xlC/xlC_r).

See accompanying patches to configure.in and acconfig.h.
This commit is contained in:
Guido van Rossum 1999-11-16 15:54:16 +00:00
parent ba98a42a0f
commit 001b9bebca
1 changed files with 7 additions and 1 deletions

View File

@ -181,6 +181,12 @@ typedef void (*dl_funcptr)();
#include <sys/ldr.h> #include <sys/ldr.h>
typedef void (*dl_funcptr)(); typedef void (*dl_funcptr)();
#define _DL_FUNCPTR_DEFINED #define _DL_FUNCPTR_DEFINED
#ifdef AIX_GENUINE_CPLUSPLUS
#include "/usr/lpp/xlC/include/load.h"
#define aix_load loadAndInit
#else
#define aix_load load
#endif
static int aix_getoldmodules(void **); static int aix_getoldmodules(void **);
static int aix_bindnewmodule(void *, void *); static int aix_bindnewmodule(void *, void *);
static void aix_loaderror(char *); static void aix_loaderror(char *);
@ -473,7 +479,7 @@ _PyImport_LoadDynamicModule(name, pathname, fp)
if (!staticmodlistptr) if (!staticmodlistptr)
if (aix_getoldmodules(&staticmodlistptr) == -1) if (aix_getoldmodules(&staticmodlistptr) == -1)
return NULL; return NULL;
p = (dl_funcptr) load(pathname, L_NOAUTODEFER, 0); p = (dl_funcptr) aix_load(pathname, L_NOAUTODEFER, 0);
if (p == NULL) { if (p == NULL) {
aix_loaderror(pathname); aix_loaderror(pathname);
return NULL; return NULL;