先日のおちていたところ。

dln.cの

  1350          void (*init_fct)();
  1351
  1352          init_fct = (void(*)())load((char*)file, 1, 0);
  1353          if (init_fct == NULL) {
  1354              aix_loaderror(file);
  1355          }
  1356          if (loadbind(0, (void*)dln_load, (void*)init_fct) == -1) {
  1357              aix_loaderror(file);
  1358          }
  1359          (*init_fct)();
  1360          return (void*)init_fct;
  1361      }

の1359だった。load()をみると、

Return Values

Upon successful completion, the load and loadAndInit subroutines return the pointer to function for the entry point of the module. If the module has no entry point, the address of the data section of the module is returned.

とかいっている。1353行の判断じゃだめだってことだ。どうすりゃいいんだ。スルーしているloadbind()も気になる。どうマニュアル読んでもよく理解できないけど、必要そうに思えないし、消しても動く。で、そもそも、くだんのチケットと関係ないと。これはあとだな。