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

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

?? dynamic-link.h

?? KPIT GNU Tools is a set of GNU development tools for Renesas microcontrollers.
?? 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.  */#ifndef __DYNAMIC_LINK_H__#define __DYNAMIC_LINK_H__#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 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;}# if ! ELF_MACHINE_NO_REL#  include "do-rel.h"# endif# if ! ELF_MACHINE_NO_RELA#  define DO_RELA#  include "do-rel.h"# endif#endif  /* __DYNAMIC_LINK_H__ */#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,		      \			      scope);					      \  } 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,		      \			      scope);					      \  } 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#  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 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一区二区三区免费野_久草精品视频
精品国产成人在线影院 | 成人在线一区二区三区| 国产精品视频在线看| 日韩福利视频网| 欧美丝袜第三区| 久久久久99精品一区| 五月激情六月综合| 91女神在线视频| 日韩一级完整毛片| 亚洲一区影音先锋| 成人一区二区三区| 精品久久久久久久久久久院品网 | 精品999在线播放| 一区二区视频在线看| 国产精品一区二区三区网站| 欧美视频一区二区在线观看| 国产精品乱码久久久久久| 欧美a一区二区| 欧美精品少妇一区二区三区 | 精品国产sm最大网站免费看| 亚洲福利一区二区三区| 北岛玲一区二区三区四区| 久久综合九色综合欧美98| 午夜激情久久久| 色老头久久综合| 中文字幕永久在线不卡| 豆国产96在线|亚洲| 欧美α欧美αv大片| 美女www一区二区| 欧美精品欧美精品系列| 五月天久久比比资源色| 91国产成人在线| 一区二区三区美女| 在线观看一区不卡| 一区二区三区毛片| 欧美日韩在线不卡| 日韩av在线播放中文字幕| 日韩欧美一区二区在线视频| 337p亚洲精品色噜噜| 亚洲国产成人va在线观看天堂| 在线一区二区观看| 亚洲一区视频在线观看视频| 欧美午夜片在线看| 日韩高清不卡一区二区三区| 67194成人在线观看| 极品瑜伽女神91| 欧美激情一区二区三区四区| 成人国产精品免费网站| 亚洲图片激情小说| 色婷婷综合在线| 性做久久久久久久免费看| 制服.丝袜.亚洲.另类.中文| 看片网站欧美日韩| 久久中文字幕电影| 国产一区二区三区电影在线观看| 国产视频一区在线播放| 成人国产在线观看| 视频在线观看91| 久久久久亚洲蜜桃| 一本大道久久a久久综合婷婷| 亚洲午夜免费电影| 日韩一级黄色大片| aaa亚洲精品一二三区| 亚洲色图视频网| 欧美久久久久久久久中文字幕| 精油按摩中文字幕久久| 亚洲欧美日韩小说| 欧美挠脚心视频网站| 国产精品一区二区久久不卡| 亚洲狠狠丁香婷婷综合久久久| 91精品免费在线观看| 成人午夜激情影院| 青椒成人免费视频| 亚洲人123区| 精品国产123| 欧美中文字幕一区二区三区亚洲| 久久99久国产精品黄毛片色诱| 自拍偷拍欧美精品| 精品精品国产高清a毛片牛牛| 91麻豆精品在线观看| 免费黄网站欧美| 国产精品久久久久久久久图文区 | 欧美乱妇15p| 99久久久精品免费观看国产蜜| 日本aⅴ免费视频一区二区三区| 国产欧美日韩精品一区| 欧美一区二区三区在线视频 | av影院午夜一区| 日韩精品1区2区3区| 亚洲欧美在线高清| 国产亚洲成av人在线观看导航| 欧美日韩国产另类不卡| 91在线码无精品| 国产一区二区0| 美女久久久精品| 热久久久久久久| 一区二区三区鲁丝不卡| 一本大道av一区二区在线播放| 久久99国产精品成人| 视频在线观看91| 亚洲一区二区四区蜜桃| 亚洲色图另类专区| 国产精品视频麻豆| 国产亚洲精品资源在线26u| 欧美一区二区日韩一区二区| 欧美体内she精高潮| 91在线一区二区三区| 国产91精品露脸国语对白| 寂寞少妇一区二区三区| 久久精品久久精品| 日本不卡一二三| 性欧美疯狂xxxxbbbb| 亚洲成人黄色影院| 日韩电影在线免费| 视频一区国产视频| 奇米亚洲午夜久久精品| 三级久久三级久久久| 日本欧美在线观看| 午夜电影一区二区三区| 亚洲激情图片小说视频| 亚洲自拍偷拍综合| 亚洲与欧洲av电影| 亚洲成av人影院在线观看网| 一区二区久久久久| 亚洲午夜电影网| 奇米影视一区二区三区| 久久91精品久久久久久秒播| 国产在线精品免费av| 国产成人一区在线| 91小视频在线免费看| 婷婷六月综合亚洲| 另类小说一区二区三区| 激情欧美日韩一区二区| www.99精品| 亚洲一级电影视频| 日本特黄久久久高潮| 国产一区二区看久久| 成人18精品视频| 欧美日韩一区三区| 精品久久人人做人人爰| 国产日产欧产精品推荐色 | 国产精品国产三级国产普通话99 | 午夜精品在线看| 久久成人免费网站| 成熟亚洲日本毛茸茸凸凹| 9i看片成人免费高清| 欧美午夜宅男影院| 久久久久久久久久看片| 一区二区三区中文字幕精品精品| 人人超碰91尤物精品国产| 成人激情免费视频| 91精品国产综合久久福利软件| 久久久777精品电影网影网 | 亚洲一区在线观看免费观看电影高清| 首页欧美精品中文字幕| 懂色av一区二区在线播放| 91久久国产综合久久| 久久亚洲捆绑美女| 一区二区高清在线| 国产精品一区二区黑丝| 欧美伊人久久久久久久久影院 | 亚洲成人精品一区二区| 中文字幕第一区二区| 亚洲一区影音先锋| 国产精品一区二区免费不卡| 欧美伊人久久大香线蕉综合69 | 国产精品麻豆久久久| 成人激情动漫在线观看| 欧美网站一区二区| 91精品国产麻豆| 9i看片成人免费高清| 欧美一区二区三区影视| 一区在线播放视频| 精品一区二区日韩| 欧美日韩精品福利| 国产伦精品一区二区三区视频青涩| 91美女片黄在线观看| 久久久久久久久久久99999| 亚洲午夜成aⅴ人片| 91视频www| 欧美国产欧美综合| 久久99国产精品久久99果冻传媒| 欧美日本精品一区二区三区| 国产精品福利影院| 国产乱国产乱300精品| 91精品中文字幕一区二区三区| 一区二区三区精品在线| 成人av电影免费观看| 国产日韩一级二级三级| 久久99久国产精品黄毛片色诱| 欧美精品三级日韩久久| 亚洲午夜av在线| 99视频精品全部免费在线| 国产色91在线| 亚洲国产精品av| 国产精品综合二区| 精品少妇一区二区三区| 日本不卡一二三区黄网| 91精品国产高清一区二区三区蜜臀 | 亚洲一区二区黄色|