⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dl-sysdep.h

📁 ucLinux is a very good embeded sytem. Most of company use this as their development OS.
💻 H
字号:
/* vi: set sw=4 ts=4: *//* * Various assmbly language/system dependent hacks that are required * so that we can minimize the amount of platform specific code.  * Copyright (C) 2005 by Erik Andersen <andersen@codepoet.org> *//* Define this if the system uses RELOCA.  */#define ELF_USES_RELOCA#include <elf.h>/* Initialization sequence for a GOT.  */#define INIT_GOT(GOT_BASE,MODULE) \do { \	GOT_BASE[2] = (int) _dl_linux_resolve; \	GOT_BASE[1] = (int) (MODULE); \} while(0)/* Here we define the magic numbers that this dynamic loader should accept */#define MAGIC1 EM_68K#undef  MAGIC2/* Used for error messages */#define ELF_TARGET "m68k"struct elf_resolve;extern unsigned int _dl_linux_resolver (struct elf_resolve *, int);/* Define this because we do not want to call .udiv in the library.   Not needed for m68k.  */#define do_rem(result, n, base)  ((result) = (n) % (base))/* 4096 bytes alignment */#define PAGE_ALIGN 0xfffff000#define ADDR_ALIGN 0xfff#define OFFS_ALIGN 0x7ffff000/* 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.  */#define elf_machine_type_class(type) \  ((((type) == R_68K_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)	\   | (((type) == R_68K_COPY) * ELF_RTYPE_CLASS_COPY))/* Return the link-time address of _DYNAMIC.  Conveniently, this is the   first element of the GOT.  This must be inlined in a function which   uses global data.  */static inline Elf32_Addrelf_machine_dynamic (void){	register Elf32_Addr *got asm ("%a5");	return *got;}/* Return the run-time load address of the shared object.  */static inline Elf32_Addrelf_machine_load_address (void){	Elf32_Addr addr;	asm ("lea _dl_start(%%pc), %0\n\t"	     "sub.l _dl_start@GOT.w(%%a5), %0"	     : "=a" (addr));	return addr;}static inline voidelf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,		      Elf32_Word relative_count){	 Elf32_Rela * rpnt = (void *)rel_addr;	--rpnt;	do {		Elf32_Addr *const reloc_addr = (void *) (load_off + (++rpnt)->r_offset);		*reloc_addr = load_off + rpnt->r_addend;	} while (--relative_count);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -