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

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

?? dl-machine.h

?? glibc 2.9,最新版的C語言庫函數
?? H
字號:
/* Machine-dependent ELF dynamic relocation inline functions.  PowerPC version.   Copyright (C) 1995-2002, 2003, 2005, 2006 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 dl_machine_h#define dl_machine_h#define ELF_MACHINE_NAME "powerpc"#include <assert.h>#include <dl-tls.h>/* Translate a processor specific dynamic tag to the index   in l_info array.  */#define DT_PPC(x) (DT_PPC_##x - DT_LOPROC + DT_NUM)/* Return nonzero iff ELF header is compatible with the running host.  */static inline intelf_machine_matches_host (const Elf32_Ehdr *ehdr){  return ehdr->e_machine == EM_PPC;}/* Return the value of the GOT pointer.  */static inline Elf32_Addr * __attribute__ ((const))ppc_got (void){  Elf32_Addr *got;#ifdef HAVE_ASM_PPC_REL16  asm ("bcl 20,31,1f\n"       "1:	mflr %0\n"       "	addis %0,%0,_GLOBAL_OFFSET_TABLE_-1b@ha\n"       "	addi %0,%0,_GLOBAL_OFFSET_TABLE_-1b@l\n"       : "=b" (got) : : "lr");#else  asm (" bl _GLOBAL_OFFSET_TABLE_-4@local"       : "=l" (got));#endif  return got;}/* Return the link-time address of _DYNAMIC, stored as   the first value in the GOT. */static inline Elf32_Addr __attribute__ ((const))elf_machine_dynamic (void){  return *ppc_got ();}/* Return the run-time load address of the shared object.  */static inline Elf32_Addr __attribute__ ((const))elf_machine_load_address (void){  Elf32_Addr *branchaddr;  Elf32_Addr runtime_dynamic;  /* This is much harder than you'd expect.  Possibly I'm missing something.     The 'obvious' way:       Apparently, "bcl 20,31,$+4" is what should be used to load LR       with the address of the next instruction.       I think this is so that machines that do bl/blr pairing don't       get confused.     asm ("bcl 20,31,0f ;"	  "0: mflr 0 ;"	  "lis %0,0b@ha;"	  "addi %0,%0,0b@l;"	  "subf %0,%0,0"	  : "=b" (addr) : : "r0", "lr");     doesn't work, because the linker doesn't have to (and in fact doesn't)     update the @ha and @l references; the loader (which runs after this     code) will do that.     Instead, we use the following trick:     The linker puts the _link-time_ address of _DYNAMIC at the first     word in the GOT. We could branch to that address, if we wanted,     by using an @local reloc; the linker works this out, so it's safe     to use now. We can't, of course, actually branch there, because     we'd cause an illegal instruction exception; so we need to compute     the address ourselves. That gives us the following code: */  /* Get address of the 'b _DYNAMIC@local'...  */  asm ("bcl 20,31,0f;"       "b _DYNAMIC@local;"       "0:"       : "=l" (branchaddr));  /* So now work out the difference between where the branch actually points,     and the offset of that location in memory from the start of the file.  */  runtime_dynamic = ((Elf32_Addr) branchaddr		     + ((Elf32_Sword) (*branchaddr << 6 & 0xffffff00) >> 6));  return runtime_dynamic - elf_machine_dynamic ();}#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) /* nothing *//* The PLT uses Elf32_Rela relocs.  */#define elf_machine_relplt elf_machine_rela/* Mask identifying addresses reserved for the user program,   where the dynamic linker should not map anything.  */#define ELF_MACHINE_USER_ADDRESS_MASK	0xf0000000UL/* The actual _start code is in dl-start.S.  Use a really   ugly bit of assembler to let dl-start.o see _dl_start.  */#define RTLD_START asm (".globl _dl_start");/* Decide where a relocatable object should be loaded.  */extern ElfW(Addr)__elf_preferred_address(struct link_map *loader, size_t maplength,			ElfW(Addr) mapstartpref);#define ELF_PREFERRED_ADDRESS(loader, maplength, mapstartpref) \  __elf_preferred_address (loader, maplength, mapstartpref)/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so   PLT entries should not be allowed to define the value.   ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one   of the main executable's symbols, as for a COPY reloc.  *//* We never want to use a PLT entry as the destination of a   reloc, when what is being relocated is a branch. This is   partly for efficiency, but mostly so we avoid loops.  */#if !defined RTLD_BOOTSTRAP || USE___THREAD#define elf_machine_type_class(type)			\  ((((type) == R_PPC_JMP_SLOT				\    || (type) == R_PPC_REL24				\    || ((type) >= R_PPC_DTPMOD32 /* contiguous TLS */	\	&& (type) <= R_PPC_DTPREL32)			\    || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT)	\   | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))#else#define elf_machine_type_class(type) \  ((((type) == R_PPC_JMP_SLOT				\    || (type) == R_PPC_REL24				\    || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT)	\   | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))#endif/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */#define ELF_MACHINE_JMP_SLOT	R_PPC_JMP_SLOT/* The PowerPC never uses REL relocations.  */#define ELF_MACHINE_NO_REL 1/* Set up the loaded object described by MAP so its unrelocated PLT   entries will jump to the on-demand fixup code in dl-runtime.c.   Also install a small trampoline to be used by entries that have   been relocated to an address too far away for a single branch.  */extern int __elf_machine_runtime_setup (struct link_map *map,					int lazy, int profile);static inline intelf_machine_runtime_setup (struct link_map *map,			   int lazy, int profile){  if (map->l_info[DT_JMPREL] == 0)    return lazy;  if (map->l_info[DT_PPC(GOT)] == 0)    /* Handle old style PLT.  */    return __elf_machine_runtime_setup (map, lazy, profile);  /* New style non-exec PLT consisting of an array of addresses.  */  map->l_info[DT_PPC(GOT)]->d_un.d_ptr += map->l_addr;  if (lazy)    {      Elf32_Addr *plt, *got, glink;      Elf32_Word num_plt_entries;      void (*dlrr) (void);      extern void _dl_runtime_resolve (void);      extern void _dl_prof_resolve (void);      if (__builtin_expect (!profile, 1))	dlrr = _dl_runtime_resolve;      else	{	  if (GLRO(dl_profile) != NULL	      &&_dl_name_match_p (GLRO(dl_profile), map))	    GL(dl_profile_map) = map;	  dlrr = _dl_prof_resolve;	}      got = (Elf32_Addr *) map->l_info[DT_PPC(GOT)]->d_un.d_ptr;      glink = got[1];      got[1] = (Elf32_Addr) dlrr;      got[2] = (Elf32_Addr) map;      /* Relocate everything in .plt by the load address offset.  */      plt = (Elf32_Addr *) D_PTR (map, l_info[DT_PLTGOT]);      num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val			 / sizeof (Elf32_Rela));      /* If a library is prelinked but we have to relocate anyway,	 we have to be able to undo the prelinking of .plt section.	 The prelinker saved us at got[1] address of .glink	 section's start.  */      if (glink)	{	  glink += map->l_addr;	  while (num_plt_entries-- != 0)	    *plt++ = glink, glink += 4;	}      else	while (num_plt_entries-- != 0)	  *plt++ += map->l_addr;    }  return lazy;}/* Change the PLT entry whose reloc is 'reloc' to call the actual routine.  */extern Elf32_Addr __elf_machine_fixup_plt (struct link_map *map,					   const Elf32_Rela *reloc,					   Elf32_Addr *reloc_addr,					   Elf32_Addr finaladdr);static inline Elf32_Addrelf_machine_fixup_plt (struct link_map *map, lookup_t t,		       const Elf32_Rela *reloc,		       Elf32_Addr *reloc_addr, Elf64_Addr finaladdr){  if (map->l_info[DT_PPC(GOT)] == 0)    /* Handle old style PLT.  */    return __elf_machine_fixup_plt (map, reloc, reloc_addr, finaladdr);  *reloc_addr = finaladdr;  return finaladdr;}/* Return the final value of a plt relocation.  */static inline Elf32_Addrelf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,		       Elf32_Addr value){  return value + reloc->r_addend;}/* Names of the architecture-specific auditing callback functions.  */#define ARCH_LA_PLTENTER ppc32_gnu_pltenter#define ARCH_LA_PLTEXIT ppc32_gnu_pltexit#endif /* dl_machine_h */#ifdef RESOLVE_MAP/* Do the actual processing of a reloc, once its target address   has been determined.  */extern void __process_machine_rela (struct link_map *map,				    const Elf32_Rela *reloc,				    struct link_map *sym_map,				    const Elf32_Sym *sym,				    const Elf32_Sym *refsym,				    Elf32_Addr *const reloc_addr,				    Elf32_Addr finaladdr,				    int rinfo) attribute_hidden;/* Call _dl_signal_error when a resolved value overflows a relocated area.  */extern void _dl_reloc_overflow (struct link_map *map,				const char *name,				Elf32_Addr *const reloc_addr,				const Elf32_Sym *refsym) attribute_hidden;/* Perform the relocation specified by RELOC and SYM (which is fully resolved).   LOADADDR is the load address of the object; INFO is an array indexed   by DT_* of the .dynamic section info.  */auto inline void __attribute__ ((always_inline))elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,		  const Elf32_Sym *sym, const struct r_found_version *version,		  void *const reloc_addr_arg){  Elf32_Addr *const reloc_addr = reloc_addr_arg;  const Elf32_Sym *const refsym = sym;  Elf32_Addr value;  const int r_type = ELF32_R_TYPE (reloc->r_info);  struct link_map *sym_map = NULL;#ifndef RESOLVE_CONFLICT_FIND_MAP  if (r_type == R_PPC_RELATIVE)    {      *reloc_addr = map->l_addr + reloc->r_addend;      return;    }  if (__builtin_expect (r_type == R_PPC_NONE, 0))    return;  /* binutils on ppc32 includes st_value in r_addend for relocations     against local symbols.  */  if (__builtin_expect (ELF32_ST_BIND (sym->st_info) == STB_LOCAL, 0)      && sym->st_shndx != SHN_UNDEF)    value = map->l_addr;  else    {      sym_map = RESOLVE_MAP (&sym, version, r_type);      value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;    }  value += reloc->r_addend;#else  value = reloc->r_addend;#endif  /* A small amount of code is duplicated here for speed.  In libc,     more than 90% of the relocs are R_PPC_RELATIVE; in the X11 shared     libraries, 60% are R_PPC_RELATIVE, 24% are R_PPC_GLOB_DAT or     R_PPC_ADDR32, and 16% are R_PPC_JMP_SLOT (which this routine     wouldn't usually handle).  As an bonus, doing this here allows     the switch statement in __process_machine_rela to work.  */  switch (r_type)    {    case R_PPC_GLOB_DAT:    case R_PPC_ADDR32:      *reloc_addr = value;      break;#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \    && !defined RESOLVE_CONFLICT_FIND_MAP# ifdef RTLD_BOOTSTRAP#  define NOT_BOOTSTRAP 0# else#  define NOT_BOOTSTRAP 1# endif    case R_PPC_DTPMOD32:      if (!NOT_BOOTSTRAP)	/* During startup the dynamic linker is always index 1.  */	*reloc_addr = 1;      else if (sym_map != NULL)	/* Get the information from the link map returned by the	   RESOLVE_MAP function.  */	*reloc_addr = sym_map->l_tls_modid;      break;    case R_PPC_DTPREL32:      /* During relocation all TLS symbols are defined and used.	 Therefore the offset is already correct.  */      if (NOT_BOOTSTRAP && sym_map != NULL)	*reloc_addr = TLS_DTPREL_VALUE (sym, reloc);      break;    case R_PPC_TPREL32:      if (!NOT_BOOTSTRAP || sym_map != NULL)	{	  if (NOT_BOOTSTRAP)	    CHECK_STATIC_TLS (map, sym_map);	  *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);	}      break;#endif    case R_PPC_JMP_SLOT:#ifdef RESOLVE_CONFLICT_FIND_MAP      RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);#endif      if (map->l_info[DT_PPC(GOT)] != 0)	{	  *reloc_addr = value;	  break;	}      /* FALLTHROUGH */    default:      __process_machine_rela (map, reloc, sym_map, sym, refsym,			      reloc_addr, value, r_type);    }}auto inline void __attribute__ ((always_inline))elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,			   void *const reloc_addr_arg){  Elf32_Addr *const reloc_addr = reloc_addr_arg;  *reloc_addr = l_addr + reloc->r_addend;}auto inline void __attribute__ ((always_inline))elf_machine_lazy_rel (struct link_map *map,		      Elf32_Addr l_addr, const Elf32_Rela *reloc){  /* elf_machine_runtime_setup handles this. */}/* The SVR4 ABI specifies that the JMPREL relocs must be inside the   DT_RELA table.  */#define ELF_MACHINE_PLTREL_OVERLAP 1#endif /* RESOLVE_MAP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本国产一区| **性色生活片久久毛片| 亚洲日本乱码在线观看| 日本免费在线视频不卡一不卡二| 国产精品亚洲午夜一区二区三区 | 日本视频在线一区| av不卡在线播放| 26uuu另类欧美亚洲曰本| 洋洋成人永久网站入口| 国产一区二区91| 日韩一本二本av| 亚洲成av人片在www色猫咪| 国产不卡在线播放| 精品国产在天天线2019| 爽好多水快深点欧美视频| 91免费版在线看| 国产精品欧美久久久久无广告| 青青草成人在线观看| 欧美日韩视频在线一区二区 | 日韩免费一区二区三区在线播放| 自拍偷拍亚洲综合| 不卡的av电影在线观看| 久久久久9999亚洲精品| 五月天婷婷综合| 欧美日韩视频在线观看一区二区三区 | 久久成人免费日本黄色| 欧美日韩日日夜夜| 亚洲综合久久久| 欧美性猛交xxxxxx富婆| 亚洲美女免费视频| 91色|porny| 亚洲免费在线视频一区 二区| 99精品久久只有精品| 中文在线一区二区| 成人性生交大片免费| 国产精品亲子乱子伦xxxx裸| 成人激情校园春色| 一区精品在线播放| 一本色道亚洲精品aⅴ| 亚洲女同一区二区| 欧洲在线/亚洲| 日韩成人一区二区| 日韩三级伦理片妻子的秘密按摩| 日本网站在线观看一区二区三区| 欧美一级欧美三级在线观看| 捆绑紧缚一区二区三区视频| 26uuu色噜噜精品一区| 懂色av噜噜一区二区三区av| 中文字幕一区二区三区乱码在线| www.欧美.com| 亚洲午夜久久久久| 精品日韩一区二区三区 | 日本一区二区三区电影| 91免费国产在线| 亚洲6080在线| 欧美tickle裸体挠脚心vk| 国产精品夜夜嗨| 亚洲精品中文字幕在线观看| 欧美日韩二区三区| 国产一区二区在线看| 国产精品久久99| 欧美日韩成人在线一区| 国产一区在线观看视频| 综合精品久久久| 日韩精品专区在线影院观看 | 欧美挠脚心视频网站| 久久99久久久欧美国产| 国产精品初高中害羞小美女文| 欧美在线综合视频| 国产主播一区二区| 亚洲国产日日夜夜| 国产午夜久久久久| 欧美视频在线播放| 国产福利一区二区三区| 极品美女销魂一区二区三区免费 | 成人午夜伦理影院| 视频一区二区三区中文字幕| 亚洲国产精品黑人久久久| 欧美性猛片aaaaaaa做受| 国产成人精品免费视频网站| 视频在线观看一区| 亚洲日本护士毛茸茸| 精品国产一二三区| 欧美日韩一区 二区 三区 久久精品| 麻豆精品在线播放| 亚洲国产一区二区a毛片| 国产精品午夜春色av| 日韩精品一区二区三区蜜臀| 色狠狠一区二区| 成人免费黄色大片| 国模无码大尺度一区二区三区| 亚洲国产日韩综合久久精品| 中文字幕中文字幕一区二区| 久久久久久免费毛片精品| 欧美精品高清视频| 日本丰满少妇一区二区三区| 国产高清不卡二三区| 乱中年女人伦av一区二区| 亚洲在线观看免费视频| 国产精品福利一区| 欧美国产精品v| 精品久久久久久无| 日韩限制级电影在线观看| 欧日韩精品视频| 日本丶国产丶欧美色综合| www.性欧美| 成人精品小蝌蚪| 成人免费视频视频| 大尺度一区二区| 国产高清精品在线| 成人影视亚洲图片在线| 国产毛片精品视频| 国产另类ts人妖一区二区| 狠狠色狠狠色综合| 国产在线视视频有精品| 韩国欧美国产一区| 国产乱子伦视频一区二区三区| 狠狠色丁香婷婷综合久久片| 久久99国产精品久久| 国产综合成人久久大片91| 国产真实乱偷精品视频免| 国产资源精品在线观看| 国产成人精品影院| av在线播放一区二区三区| 99久久er热在这里只有精品66| 不卡一二三区首页| 日本韩国欧美在线| 91精品国产91综合久久蜜臀| 日韩一级片在线观看| 久久午夜羞羞影院免费观看| 久久久99久久| 国产精品免费人成网站| 亚洲免费观看高清在线观看| 一区二区三区色| 免费成人小视频| 国产精品一区在线| 日本乱码高清不卡字幕| 欧美日本一道本| 精品国产一二三区| 亚洲欧洲av在线| 日韩电影在线免费| 粉嫩av亚洲一区二区图片| 色婷婷激情一区二区三区| 3d成人h动漫网站入口| 久久这里都是精品| 亚洲三级小视频| 免费看精品久久片| 91精品一区二区三区久久久久久| 日韩欧美中文字幕一区| 国产精品天天看| 青青草精品视频| 99久久国产综合精品麻豆| 欧美一区二区在线观看| 中文一区二区在线观看| 日韩中文字幕区一区有砖一区| 国产精品99久| 精品1区2区3区| 国产精品美日韩| 久久成人av少妇免费| 91在线视频观看| 26uuu亚洲| 天天色综合成人网| 成人免费av资源| 欧美一区二区三区小说| 亚洲视频一二区| 国产乱子轮精品视频| 欧美另类videos死尸| 国产精品美女久久久久aⅴ国产馆| 午夜精品久久久久久| av电影天堂一区二区在线| 久久先锋资源网| 视频一区在线播放| 色综合久久精品| 国产亚洲欧美激情| 久久精品国产色蜜蜜麻豆| 欧美这里有精品| 亚洲人成在线观看一区二区| 国产伦精品一区二区三区视频青涩 | 精品国产乱码久久久久久蜜臀| 亚洲精品视频一区二区| 国产91色综合久久免费分享| 欧美videofree性高清杂交| 性做久久久久久免费观看欧美| av不卡一区二区三区| 久久久国产精品不卡| 久久99精品视频| 精品国产伦一区二区三区观看方式| 亚洲第一狼人社区| 欧美午夜电影网| 一区二区久久久久久| 一本到不卡免费一区二区| 中文字幕中文在线不卡住| 高清国产一区二区| 中文字幕不卡在线播放| 国产成人综合网| 中文成人av在线| 成人高清免费观看| 中文字幕日韩精品一区| 国产91精品在线观看| 欧美极品另类videosde|