diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-02-04 00:51:49 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-02-04 00:51:49 +0000 |
commit | b445ebef4e451bc7fe7435bacc58100578fa324a (patch) | |
tree | 74c736c4b15d5974282927247b57419305a0550f | |
parent | 7285da14ed731d5bdb310bd8f4018c07c8a83e5c (diff) |
integrate frv link.h
-rw-r--r-- | include/link.h | 12 | ||||
-rw-r--r-- | libc/sysdeps/linux/frv/link.h | 127 |
2 files changed, 12 insertions, 127 deletions
diff --git a/include/link.h b/include/link.h index 1dd1c4c46..afff90d99 100644 --- a/include/link.h +++ b/include/link.h @@ -78,6 +78,10 @@ extern struct r_debug _r_debug; */ extern ElfW(Dyn) _DYNAMIC[]; +#ifdef __FRV_FDPIC__ +# include <bits/elf-fdpic.h> +#endif + /* Structure describing a loaded shared object. The `l_next' and `l_prev' members form a chain of all the shared objects loaded at startup. @@ -89,7 +93,11 @@ struct link_map /* These first few members are part of the protocol with the debugger. This is the same format used in SVR4. */ +#ifdef __FRV_FDPIC__ + struct elf32_fdpic_loadaddr l_addr; +#else ElfW(Addr) l_addr; /* Base address shared object is loaded at. */ +#endif char *l_name; /* Absolute file name object was found in. */ ElfW(Dyn) *l_ld; /* Dynamic section of the shared object. */ struct link_map *l_next, *l_prev; /* Chain of loaded objects. */ @@ -123,7 +131,11 @@ struct link_map struct dl_phdr_info { +#ifdef __FRV_FDPIC__ + struct elf32_fdpic_loadaddr dlpi_addr; +#else ElfW(Addr) dlpi_addr; +#endif const char *dlpi_name; const ElfW(Phdr) *dlpi_phdr; ElfW(Half) dlpi_phnum; diff --git a/libc/sysdeps/linux/frv/link.h b/libc/sysdeps/linux/frv/link.h deleted file mode 100644 index 121608f2b..000000000 --- a/libc/sysdeps/linux/frv/link.h +++ /dev/null @@ -1,127 +0,0 @@ -/* Data structure for communication from the run-time dynamic linker for - loaded ELF shared objects. - Copyright (C) 1995-1999, 2000, 2001, 2004 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 _LINK_H -#define _LINK_H 1 - -#include <features.h> -#include <elf.h> -#include <dlfcn.h> -#include <sys/types.h> - -/* We use this macro to refer to ELF types independent of the native wordsize. - `ElfW(TYPE)' is used in place of `Elf32_TYPE' or `Elf64_TYPE'. */ -#define ElfW(type) _ElfW (Elf, __ELF_NATIVE_CLASS, type) -#define _ElfW(e,w,t) _ElfW_1 (e, w, _##t) -#define _ElfW_1(e,w,t) e##w##t - -#include <bits/elfclass.h> /* Defines __ELF_NATIVE_CLASS. */ - -/* Rendezvous structure used by the run-time dynamic linker to communicate - details of shared object loading to the debugger. If the executable's - dynamic section has a DT_DEBUG element, the run-time linker sets that - element's value to the address where this structure can be found. */ - -struct r_debug - { - int r_version; /* Version number for this protocol. */ - - struct link_map *r_map; /* Head of the chain of loaded objects. */ - - /* This is the address of a function internal to the run-time linker, - that will always be called when the linker begins to map in a - library or unmap it, and again when the mapping change is complete. - The debugger can set a breakpoint at this address if it wants to - notice shared object mapping changes. */ - ElfW(Addr) r_brk; - enum - { - /* This state value describes the mapping change taking place when - the `r_brk' address is called. */ - RT_CONSISTENT, /* Mapping change is complete. */ - RT_ADD, /* Beginning to add a new object. */ - RT_DELETE /* Beginning to remove an object mapping. */ - } r_state; - - ElfW(Addr) r_ldbase; /* Base address the linker is loaded at. */ - }; - -/* This is the instance of that structure used by the dynamic linker. */ -extern struct r_debug _r_debug; - -/* This symbol refers to the "dynamic structure" in the `.dynamic' section - of whatever module refers to `_DYNAMIC'. So, to find its own - `struct r_debug', a program could do: - for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn) - if (dyn->d_tag == DT_DEBUG) - r_debug = (struct r_debug *) dyn->d_un.d_ptr; - */ -extern ElfW(Dyn) _DYNAMIC[]; - -#ifdef __FRV_FDPIC__ -# include <bits/elf-fdpic.h> -#endif - -/* Structure describing a loaded shared object. The `l_next' and `l_prev' - members form a chain of all the shared objects loaded at startup. - - These data structures exist in space used by the run-time dynamic linker; - modifying them may have disastrous results. */ - -struct link_map - { - /* These first few members are part of the protocol with the debugger. - This is the same format used in SVR4. */ - -#ifdef __FRV_FDPIC__ - struct elf32_fdpic_loadaddr l_addr; -#else - ElfW(Addr) l_addr; /* Base address shared object is loaded at. */ -#endif - char *l_name; /* Absolute file name object was found in. */ - ElfW(Dyn) *l_ld; /* Dynamic section of the shared object. */ - struct link_map *l_next, *l_prev; /* Chain of loaded objects. */ - }; - -#ifdef __USE_GNU - -struct dl_phdr_info - { -#ifdef __FRV_FDPIC__ - struct elf32_fdpic_loadaddr dlpi_addr; -#else - ElfW(Addr) dlpi_addr; -#endif - const char *dlpi_name; - const ElfW(Phdr) *dlpi_phdr; - ElfW(Half) dlpi_phnum; - }; - -__BEGIN_DECLS - -extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, - size_t size, void *data), - void *data) __THROW; - -__END_DECLS - -#endif - -#endif /* link.h */ |