From c60304b87847ff5ddb8df859d3d06d6cfc446b80 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 17 May 2006 04:55:28 +0000 Subject: fold bfin-specific link.h back into common one as suggested by Peter S. Mazinger --- include/link.h | 14 ++++- libc/sysdeps/linux/bfin/link.h | 127 ----------------------------------------- 2 files changed, 11 insertions(+), 130 deletions(-) delete mode 100644 libc/sysdeps/linux/bfin/link.h diff --git a/include/link.h b/include/link.h index afff90d99..14489816f 100644 --- a/include/link.h +++ b/include/link.h @@ -29,6 +29,12 @@ #include #endif +#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__ +# define ___LINK_H_FDPIC___ +#else +# undef ___LINK_H_FDPIC___ +#endif + /* 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) @@ -78,7 +84,7 @@ extern struct r_debug _r_debug; */ extern ElfW(Dyn) _DYNAMIC[]; -#ifdef __FRV_FDPIC__ +#ifdef ___LINK_H_FDPIC___ # include #endif @@ -93,7 +99,7 @@ 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__ +#ifdef ___LINK_H_FDPIC___ struct elf32_fdpic_loadaddr l_addr; #else ElfW(Addr) l_addr; /* Base address shared object is loaded at. */ @@ -131,7 +137,7 @@ struct link_map struct dl_phdr_info { -#ifdef __FRV_FDPIC__ +#ifdef ___LINK_H_FDPIC___ struct elf32_fdpic_loadaddr dlpi_addr; #else ElfW(Addr) dlpi_addr; @@ -163,4 +169,6 @@ __END_DECLS #endif +#undef ___LINK_H_FDPIC___ + #endif /* link.h */ diff --git a/libc/sysdeps/linux/bfin/link.h b/libc/sysdeps/linux/bfin/link.h deleted file mode 100644 index 59caefc62..000000000 --- a/libc/sysdeps/linux/bfin/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 -#include -#include -#include - -/* 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 /* 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[]; - -#if defined __BFIN_FDPIC__ -# include -#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 __BFIN_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 __BFIN_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 */ -- cgit v1.2.3