Распечатка 10.5 Распознавание символов совместно используемой библиотеки

Предыдущая  Содержание  Следующая V*D*V

Распечатка 10.5

 

static unsigned long

calc_reloc(unsigned long r, struct lib_info *p, int curid,

           int internalp)

{

  …

  …

#ifdef CONFIG_BINFMT_SHARED_FLAT

  if (r == 0)

    id = curid;   /* 0 - всегда ссылка на себя */

  else {

    id = (r >> 24) & 0xff; /* Получаем ID для перемещения */

    r &= 0x00ffffff;       /* Приводим ID в порядок */

  }

  if (id >= MAX_SHARED_LIBS) {

    printk("BINFMT_FLAT: reference 0x%x to shared library %d",

           (unsigned) r, id);

    goto failed;

  }

  if (curid != id) {

    …

    …

  }else if ( ! p->lib_list[id].loaded &&

             load_flat_shared_library(id, p) > (unsigned long) -4096) {

    printk("BINFMT_FLAT: failed to load library %d", id);

    goto failed;

  }

  …

  …

#else

  id = 0;

#endif

  …

  …

}

Предыдущая  Содержание  Следующая