size = ((len * sizeof (fptr_table[0]) + _dl_pagesize - 1) & -_dl_pagesize);
size = ((len * sizeof (fptr_table[0]) + GL(dl_pagesize) - 1) & -GL(dl_pagesize));
make_fptr_table (struct link_map *map){  const Elf64_Sym *symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);  const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);  Elf64_Addr *fptr_table;  size_t size;  size_t len;  /* XXX Apparently the only way to find out the size of the dynamic     symbol section is to assume that the string table follows right     afterwards...  */  len = ((strtab - (char *) symtab) / map->l_info[DT_SYMENT]->d_un.d_val);  size = ((len * sizeof (fptr_table[0]) + _dl_pagesize - 1) & -_dl_pagesize);  /* XXX We don't support here in the moment systems without MAP_ANON.     There probably are none for IA-64.  In case this is proven wrong     we will have to open /dev/null here and use the file descriptor     instead of the hard-coded -1.  */  fptr_table = __mmap (NULL, size, PROT_READ | PROT_WRITE,		       MAP_ANON | MAP_PRIVATE, -1, 0);  if (fptr_table == MAP_FAILED)    _dl_signal_error (errno, NULL, NULL, "cannot map pages for fptr table");  map->l_mach.fptr_table_len = len;  map->l_mach.fptr_table = fptr_table;  return fptr_table;}