亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dynamic-link.h

?? 用于嵌入式Linux系統的標準C的庫函數
?? H
字號:
/* Inline functions for dynamic linking.   Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.   This file is part of the GNU C Library.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2.1 of the License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  */#include <elf.h>#include <machine/dl-machine.h>#include <assert.h>#ifndef VERSYMIDX# define VERSYMIDX(sym)	(DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))#endif/* Global read-only variable defined in rtld.c which is nonzero if we   shall give more warning messages.  */extern int _dl_verbose __attribute__ ((unused));/* Read the dynamic section at DYN and fill in INFO with indices DT_*.  */static inline void __attribute__ ((unused))elf_get_dynamic_info (struct link_map *l){  ElfW(Dyn) *dyn = l->l_ld;  ElfW(Addr) l_addr;  ElfW(Dyn) **info;  if (! dyn)    return;  l_addr = l->l_addr;  info = l->l_info;  while (dyn->d_tag != DT_NULL)    {      if (dyn->d_tag < DT_NUM)	info[dyn->d_tag] = dyn;      else if (dyn->d_tag >= DT_LOPROC &&	       dyn->d_tag < DT_LOPROC + DT_THISPROCNUM)	info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;      else if ((Elf32_Word) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)	info[VERSYMIDX (dyn->d_tag)] = dyn;      else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)	info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM	     + DT_VERSIONTAGNUM] = dyn;      else	assert (! "bad dynamic tag");      ++dyn;    }#ifndef DL_RO_DYN_SECTION  if (info[DT_PLTGOT] != NULL)    info[DT_PLTGOT]->d_un.d_ptr += l_addr;  if (info[DT_STRTAB] != NULL)    info[DT_STRTAB]->d_un.d_ptr += l_addr;  if (info[DT_SYMTAB] != NULL)    info[DT_SYMTAB]->d_un.d_ptr += l_addr;# if ! ELF_MACHINE_NO_RELA  if (info[DT_RELA] != NULL)    {      assert (info[DT_RELAENT]->d_un.d_val == sizeof (ElfW(Rela)));      info[DT_RELA]->d_un.d_ptr += l_addr;    }# endif# if ! ELF_MACHINE_NO_REL  if (info[DT_REL] != NULL)    {      assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));      info[DT_REL]->d_un.d_ptr += l_addr;    }# endif#endif  if (info[DT_PLTREL] != NULL)    {# if ELF_MACHINE_NO_RELA      assert (info[DT_PLTREL]->d_un.d_val == DT_REL);# elif ELF_MACHINE_NO_REL      assert (info[DT_PLTREL]->d_un.d_val == DT_RELA);# else      assert (info[DT_PLTREL]->d_un.d_val == DT_REL	      || info[DT_PLTREL]->d_un.d_val == DT_RELA);# endif    }#ifndef DL_RO_DYN_SECTION  if (info[DT_JMPREL] != NULL)    info[DT_JMPREL]->d_un.d_ptr += l_addr;  if (info[VERSYMIDX (DT_VERSYM)] != NULL)    info[VERSYMIDX (DT_VERSYM)]->d_un.d_ptr += l_addr;#endif  if (info[DT_FLAGS] != NULL)    {      /* Flags are used.  Translate to the old form where available.	 Since these l_info entries are only tested for NULL pointers it	 is ok if they point to the DT_FLAGS entry.  */      ElfW(Word) flags = info[DT_FLAGS]->d_un.d_val;      if (flags & DF_SYMBOLIC)	info[DT_SYMBOLIC] = info[DT_FLAGS];      if (flags & DF_TEXTREL)	info[DT_TEXTREL] = info[DT_FLAGS];      if (flags & DF_BIND_NOW)	info[DT_BIND_NOW] = info[DT_FLAGS];    }  if (info[VERSYMIDX (DT_FLAGS_1)] != NULL)    l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val;  if (info[DT_RUNPATH] != NULL)    /* If both RUNPATH and RPATH are given, the latter is ignored.  */    info[DT_RPATH] = NULL;}#ifdef RESOLVE/* Get the definitions of `elf_dynamic_do_rel' and `elf_dynamic_do_rela'.   These functions are almost identical, so we use cpp magic to avoid   duplicating their code.  It cannot be done in a more general function   because we must be able to completely inline.  *//* On some machines, notably SPARC, DT_REL* includes DT_JMPREL in its   range.  Note that according to the ELF spec, this is completely legal!   But conditionally define things so that on machines we know this will   not happen we do something more optimal.  */# ifdef ELF_MACHINE_PLTREL_OVERLAP#  define _ELF_DYNAMIC_DO_RELOC(RELOC, reloc, map, do_lazy, test_rel) \  do {									      \    struct { ElfW(Addr) start, size; int lazy; } ranges[3];		      \    int ranges_index;							      \									      \    ranges[0].lazy = ranges[2].lazy = 0;				      \    ranges[1].lazy = 1;							      \    ranges[0].size = ranges[1].size = ranges[2].size = 0;		      \									      \    if ((map)->l_info[DT_##RELOC])					      \      {									      \	ranges[0].start = D_PTR ((map), l_info[DT_##RELOC]);		      \	ranges[0].size = (map)->l_info[DT_##RELOC##SZ]->d_un.d_val;	      \      }									      \									      \     if ((do_lazy)							      \	&& (map)->l_info[DT_PLTREL]					      \	&& (!test_rel || (map)->l_info[DT_PLTREL]->d_un.d_val == DT_##RELOC)) \      {									      \	ranges[1].start = D_PTR ((map), l_info[DT_JMPREL]);		      \	ranges[1].size = (map)->l_info[DT_PLTRELSZ]->d_un.d_val;	      \	ranges[2].start = ranges[1].start + ranges[1].size;		      \	ranges[2].size = ranges[0].start + ranges[0].size - ranges[2].start;  \	ranges[0].size = ranges[1].start - ranges[0].start;		      \      }									      \									      \    for (ranges_index = 0; ranges_index < 3; ++ranges_index)		      \      elf_dynamic_do_##reloc ((map),					      \			      ranges[ranges_index].start,		      \			      ranges[ranges_index].size,		      \			      ranges[ranges_index].lazy);		      \  } while (0)# else#  define _ELF_DYNAMIC_DO_RELOC(RELOC, reloc, map, do_lazy, test_rel) \  do {									      \    struct { ElfW(Addr) start, size; int lazy; } ranges[2];		      \    int ranges_index;							      \    ranges[0].lazy = 0;							      \    ranges[0].size = ranges[1].size = 0;				      \    ranges[0].start = 0;						      \									      \    if ((map)->l_info[DT_##RELOC])					      \      {									      \        ranges[0].start = D_PTR ((map), l_info[DT_##RELOC]);		      \        ranges[0].size = (map)->l_info[DT_##RELOC##SZ]->d_un.d_val;	      \      }									      \    if ((map)->l_info[DT_PLTREL]					      \	&& (!test_rel || (map)->l_info[DT_PLTREL]->d_un.d_val == DT_##RELOC)) \      {									      \	ElfW(Addr) start = D_PTR ((map), l_info[DT_JMPREL]);		      \									      \	if ((do_lazy)							      \	    /* This test does not only detect whether the relocation	      \	       sections are in the right order, it also checks whether	      \	       there is a DT_REL/DT_RELA section.  */			      \	    || ranges[0].start + ranges[0].size != start)		      \	  {								      \	    ranges[1].start = start;					      \	    ranges[1].size = (map)->l_info[DT_PLTRELSZ]->d_un.d_val;	      \	    ranges[1].lazy = (do_lazy);					      \	  }								      \	else								      \	  /* Combine processing the sections.  */			      \	  ranges[0].size += (map)->l_info[DT_PLTRELSZ]->d_un.d_val;	      \      }									      \									      \    for (ranges_index = 0; ranges_index < 2; ++ranges_index)		      \      elf_dynamic_do_##reloc ((map),					      \			      ranges[ranges_index].start,		      \			      ranges[ranges_index].size,		      \			      ranges[ranges_index].lazy);		      \  } while (0)# endif# if ELF_MACHINE_NO_REL || ELF_MACHINE_NO_RELA#  define _ELF_CHECK_REL 0# else#  define _ELF_CHECK_REL 1# endif# if ! ELF_MACHINE_NO_REL#  include "do-rel.h"#  define ELF_DYNAMIC_DO_REL(map, lazy) \  _ELF_DYNAMIC_DO_RELOC (REL, rel, map, lazy, _ELF_CHECK_REL)# else#  define ELF_DYNAMIC_DO_REL(map, lazy) /* Nothing to do.  */# endif# if ! ELF_MACHINE_NO_RELA#  define DO_RELA#  include "do-rel.h"#  define ELF_DYNAMIC_DO_RELA(map, lazy) \  _ELF_DYNAMIC_DO_RELOC (RELA, rela, map, lazy, _ELF_CHECK_REL)# else#  define ELF_DYNAMIC_DO_RELA(map, lazy) /* Nothing to do.  */# endif/* This can't just be an inline function because GCC is too dumb   to inline functions containing inlines themselves.  */# define ELF_DYNAMIC_RELOCATE(map, lazy, consider_profile) \  do {									      \    int edr_lazy = elf_machine_runtime_setup ((map), (lazy),		      \					      (consider_profile));	      \    ELF_DYNAMIC_DO_REL ((map), edr_lazy);				      \    ELF_DYNAMIC_DO_RELA ((map), edr_lazy);				      \  } while (0)#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久88色综合天天| 日韩亚洲欧美综合| 欧美一区二区三区电影| 国产丝袜美腿一区二区三区| 亚洲第一二三四区| 成人午夜电影小说| 欧美精品 日韩| 亚洲欧美偷拍另类a∨色屁股| 日日摸夜夜添夜夜添亚洲女人| 国产高清不卡一区二区| 4438成人网| 一区二区在线免费观看| 国产美女娇喘av呻吟久久| 欧美日韩国产在线播放网站| 国产精品午夜在线观看| 久久99深爱久久99精品| 欧美日韩中文精品| 最新中文字幕一区二区三区| 精品一区二区三区久久久| 成人免费高清视频| 久久久三级国产网站| 亚洲摸摸操操av| 成人在线视频首页| 国产亚洲欧洲997久久综合| 免费成人在线网站| 欧美三级电影精品| 日本一区二区电影| 久久99精品视频| 一区二区三区视频在线看| 亚洲欧洲www| 激情五月婷婷综合网| 肉肉av福利一精品导航| 欧美在线不卡视频| 亚洲免费成人av| 91免费版在线| 亚洲欧美一区二区不卡| 色狠狠桃花综合| 亚洲理论在线观看| 色八戒一区二区三区| 自拍偷拍国产亚洲| 色94色欧美sute亚洲线路一ni | 亚洲一区在线观看网站| av网站一区二区三区| 1024成人网色www| 97成人超碰视| 亚洲高清免费视频| 日韩欧美一区中文| 国产综合久久久久久鬼色| 久久久久久97三级| 成人av电影在线网| 一区二区三区国产精华| 欧美日韩久久不卡| 卡一卡二国产精品| 久久久精品一品道一区| 成人app网站| 亚洲一区二区三区四区在线| 欧美日本视频在线| 日韩综合在线视频| 久久亚洲二区三区| 成人久久18免费网站麻豆 | 免播放器亚洲一区| 精品久久人人做人人爽| 成人免费黄色在线| 亚洲一区二区三区四区中文字幕| 69久久夜色精品国产69蝌蚪网| 另类成人小视频在线| 国产农村妇女精品| 在线视频一区二区免费| 另类小说图片综合网| 中文字幕中文在线不卡住| 欧美老女人第四色| 春色校园综合激情亚洲| 亚洲高清三级视频| 久久女同精品一区二区| 91视频免费观看| 美国十次综合导航| 中文字幕日韩一区| 欧美裸体一区二区三区| 国产激情一区二区三区桃花岛亚洲| 亚洲精品一二三| 精品久久人人做人人爰| 欧美亚洲综合一区| 国产精品中文欧美| 日韩影院精彩在线| 国产精品欧美精品| 欧美xingq一区二区| 色综合一个色综合亚洲| 久久99国内精品| 偷拍亚洲欧洲综合| 中文字幕久久午夜不卡| 日韩一级在线观看| 色婷婷激情综合| 国产69精品一区二区亚洲孕妇| 香蕉av福利精品导航| 亚洲国产电影在线观看| 欧美一区二区三区日韩| 色8久久人人97超碰香蕉987| 国产激情偷乱视频一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 国产精品久久久久久久久图文区| 日韩欧美一级片| 欧美日韩国产在线播放网站| 91亚洲精品乱码久久久久久蜜桃| 国产乱子轮精品视频| 日韩国产欧美在线观看| 亚洲一区二区三区四区五区中文| 一区二区中文视频| 久久久不卡网国产精品一区| 欧美成人vr18sexvr| 欧美二区乱c少妇| 欧美性猛交一区二区三区精品| 波多野结衣91| 粉嫩绯色av一区二区在线观看 | 在线免费观看一区| av激情亚洲男人天堂| 国产成人精品网址| 国产精品69久久久久水密桃| 久久不见久久见免费视频1| 日韩国产高清在线| 偷窥少妇高潮呻吟av久久免费| 亚洲二区在线视频| 亚洲综合成人网| 亚洲午夜激情av| 亚洲一区在线观看视频| 亚洲动漫第一页| 亚洲gay无套男同| 日韩电影在线一区| 蜜桃91丨九色丨蝌蚪91桃色| 美女精品自拍一二三四| 美女网站一区二区| 久久精品国产99国产| 国产麻豆91精品| 成人av影院在线| 91官网在线免费观看| 欧美亚洲禁片免费| 日韩欧美二区三区| 国产丝袜美腿一区二区三区| 国产精品视频在线看| 亚洲精品五月天| 婷婷久久综合九色国产成人| 蜜臀a∨国产成人精品| 韩国理伦片一区二区三区在线播放| 极品少妇xxxx偷拍精品少妇| 成人福利视频在线看| 色94色欧美sute亚洲13| 欧美一级免费观看| 久久久久久久久蜜桃| 亚洲视频 欧洲视频| 午夜欧美大尺度福利影院在线看| 麻豆精品在线观看| 成人黄页毛片网站| 欧美日韩国产在线观看| 2022国产精品视频| 亚洲三级久久久| 男人的j进女人的j一区| 成人综合在线网站| 欧美日韩国产综合视频在线观看| 久久综合九色综合欧美就去吻| 一区免费观看视频| 久久国产尿小便嘘嘘尿| 99综合影院在线| 欧美一区二区三区小说| 国产精品高潮呻吟| 久久爱www久久做| 91免费观看在线| 久久美女艺术照精彩视频福利播放 | 久久综合久久综合亚洲| 亚洲色欲色欲www在线观看| 日韩av一区二| 91原创在线视频| 精品三级在线观看| 亚洲成人福利片| 成人av网站大全| 亚洲精品在线免费播放| 一区二区久久久| 成人免费av资源| 欧美xxxxx牲另类人与| 香港成人在线视频| 91丨九色porny丨蝌蚪| 久久久99久久| 蜜桃久久久久久久| 欧美午夜电影一区| 亚洲国产精品av| 国产在线视频一区二区三区| 欧美亚一区二区| 亚洲欧洲成人自拍| 成人在线视频一区| 精品国产a毛片| 日本不卡的三区四区五区| 色播五月激情综合网| 欧美国产日产图区| 国产成人精品影院| 日韩欧美中文一区| 日韩主播视频在线| 欧美日韩精品欧美日韩精品一综合| 亚洲色图视频网站| 91视视频在线直接观看在线看网页在线看| 欧美精品一区二区在线播放| 午夜精品福利一区二区蜜股av| 91久久一区二区|