Edit File by line
/home/barbar84/www/wp-conte.../plugins/sujqvwi/ExeBy/exe_root.../usr/include
File: link.h
/* Data structure for communication from the run-time dynamic linker for
[0] Fix | Delete
loaded ELF shared objects.
[1] Fix | Delete
Copyright (C) 1995-2018 Free Software Foundation, Inc.
[2] Fix | Delete
This file is part of the GNU C Library.
[3] Fix | Delete
[4] Fix | Delete
The GNU C Library is free software; you can redistribute it and/or
[5] Fix | Delete
modify it under the terms of the GNU Lesser General Public
[6] Fix | Delete
License as published by the Free Software Foundation; either
[7] Fix | Delete
version 2.1 of the License, or (at your option) any later version.
[8] Fix | Delete
[9] Fix | Delete
The GNU C Library is distributed in the hope that it will be useful,
[10] Fix | Delete
but WITHOUT ANY WARRANTY; without even the implied warranty of
[11] Fix | Delete
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
[12] Fix | Delete
Lesser General Public License for more details.
[13] Fix | Delete
[14] Fix | Delete
You should have received a copy of the GNU Lesser General Public
[15] Fix | Delete
License along with the GNU C Library; if not, see
[16] Fix | Delete
<http://www.gnu.org/licenses/>. */
[17] Fix | Delete
[18] Fix | Delete
#ifndef _LINK_H
[19] Fix | Delete
#define _LINK_H 1
[20] Fix | Delete
[21] Fix | Delete
#include <features.h>
[22] Fix | Delete
#include <elf.h>
[23] Fix | Delete
#include <dlfcn.h>
[24] Fix | Delete
#include <sys/types.h>
[25] Fix | Delete
[26] Fix | Delete
/* We use this macro to refer to ELF types independent of the native wordsize.
[27] Fix | Delete
`ElfW(TYPE)' is used in place of `Elf32_TYPE' or `Elf64_TYPE'. */
[28] Fix | Delete
#define ElfW(type) _ElfW (Elf, __ELF_NATIVE_CLASS, type)
[29] Fix | Delete
#define _ElfW(e,w,t) _ElfW_1 (e, w, _##t)
[30] Fix | Delete
#define _ElfW_1(e,w,t) e##w##t
[31] Fix | Delete
[32] Fix | Delete
#include <bits/elfclass.h> /* Defines __ELF_NATIVE_CLASS. */
[33] Fix | Delete
#include <bits/link.h>
[34] Fix | Delete
[35] Fix | Delete
/* Rendezvous structure used by the run-time dynamic linker to communicate
[36] Fix | Delete
details of shared object loading to the debugger. If the executable's
[37] Fix | Delete
dynamic section has a DT_DEBUG element, the run-time linker sets that
[38] Fix | Delete
element's value to the address where this structure can be found. */
[39] Fix | Delete
[40] Fix | Delete
struct r_debug
[41] Fix | Delete
{
[42] Fix | Delete
int r_version; /* Version number for this protocol. */
[43] Fix | Delete
[44] Fix | Delete
struct link_map *r_map; /* Head of the chain of loaded objects. */
[45] Fix | Delete
[46] Fix | Delete
/* This is the address of a function internal to the run-time linker,
[47] Fix | Delete
that will always be called when the linker begins to map in a
[48] Fix | Delete
library or unmap it, and again when the mapping change is complete.
[49] Fix | Delete
The debugger can set a breakpoint at this address if it wants to
[50] Fix | Delete
notice shared object mapping changes. */
[51] Fix | Delete
ElfW(Addr) r_brk;
[52] Fix | Delete
enum
[53] Fix | Delete
{
[54] Fix | Delete
/* This state value describes the mapping change taking place when
[55] Fix | Delete
the `r_brk' address is called. */
[56] Fix | Delete
RT_CONSISTENT, /* Mapping change is complete. */
[57] Fix | Delete
RT_ADD, /* Beginning to add a new object. */
[58] Fix | Delete
RT_DELETE /* Beginning to remove an object mapping. */
[59] Fix | Delete
} r_state;
[60] Fix | Delete
[61] Fix | Delete
ElfW(Addr) r_ldbase; /* Base address the linker is loaded at. */
[62] Fix | Delete
};
[63] Fix | Delete
[64] Fix | Delete
/* This is the instance of that structure used by the dynamic linker. */
[65] Fix | Delete
extern struct r_debug _r_debug;
[66] Fix | Delete
[67] Fix | Delete
/* This symbol refers to the "dynamic structure" in the `.dynamic' section
[68] Fix | Delete
of whatever module refers to `_DYNAMIC'. So, to find its own
[69] Fix | Delete
`struct r_debug', a program could do:
[70] Fix | Delete
for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn)
[71] Fix | Delete
if (dyn->d_tag == DT_DEBUG)
[72] Fix | Delete
r_debug = (struct r_debug *) dyn->d_un.d_ptr;
[73] Fix | Delete
*/
[74] Fix | Delete
extern ElfW(Dyn) _DYNAMIC[];
[75] Fix | Delete
[76] Fix | Delete
/* Structure describing a loaded shared object. The `l_next' and `l_prev'
[77] Fix | Delete
members form a chain of all the shared objects loaded at startup.
[78] Fix | Delete
[79] Fix | Delete
These data structures exist in space used by the run-time dynamic linker;
[80] Fix | Delete
modifying them may have disastrous results. */
[81] Fix | Delete
[82] Fix | Delete
struct link_map
[83] Fix | Delete
{
[84] Fix | Delete
/* These first few members are part of the protocol with the debugger.
[85] Fix | Delete
This is the same format used in SVR4. */
[86] Fix | Delete
[87] Fix | Delete
ElfW(Addr) l_addr; /* Difference between the address in the ELF
[88] Fix | Delete
file and the addresses in memory. */
[89] Fix | Delete
char *l_name; /* Absolute file name object was found in. */
[90] Fix | Delete
ElfW(Dyn) *l_ld; /* Dynamic section of the shared object. */
[91] Fix | Delete
struct link_map *l_next, *l_prev; /* Chain of loaded objects. */
[92] Fix | Delete
};
[93] Fix | Delete
[94] Fix | Delete
#ifdef __USE_GNU
[95] Fix | Delete
[96] Fix | Delete
/* Version numbers for la_version handshake interface. */
[97] Fix | Delete
#include <bits/link_lavcurrent.h>
[98] Fix | Delete
[99] Fix | Delete
/* Activity types signaled through la_activity. */
[100] Fix | Delete
enum
[101] Fix | Delete
{
[102] Fix | Delete
LA_ACT_CONSISTENT, /* Link map consistent again. */
[103] Fix | Delete
LA_ACT_ADD, /* New object will be added. */
[104] Fix | Delete
LA_ACT_DELETE /* Objects will be removed. */
[105] Fix | Delete
};
[106] Fix | Delete
[107] Fix | Delete
/* Values representing origin of name for dynamic loading. */
[108] Fix | Delete
enum
[109] Fix | Delete
{
[110] Fix | Delete
LA_SER_ORIG = 0x01, /* Original name. */
[111] Fix | Delete
LA_SER_LIBPATH = 0x02, /* Directory from LD_LIBRARY_PATH. */
[112] Fix | Delete
LA_SER_RUNPATH = 0x04, /* Directory from RPATH/RUNPATH. */
[113] Fix | Delete
LA_SER_CONFIG = 0x08, /* Found through ldconfig. */
[114] Fix | Delete
LA_SER_DEFAULT = 0x40, /* Default directory. */
[115] Fix | Delete
LA_SER_SECURE = 0x80 /* Unused. */
[116] Fix | Delete
};
[117] Fix | Delete
[118] Fix | Delete
/* Values for la_objopen return value. */
[119] Fix | Delete
enum
[120] Fix | Delete
{
[121] Fix | Delete
LA_FLG_BINDTO = 0x01, /* Audit symbols bound to this object. */
[122] Fix | Delete
LA_FLG_BINDFROM = 0x02 /* Audit symbols bound from this object. */
[123] Fix | Delete
};
[124] Fix | Delete
[125] Fix | Delete
/* Values for la_symbind flags parameter. */
[126] Fix | Delete
enum
[127] Fix | Delete
{
[128] Fix | Delete
LA_SYMB_NOPLTENTER = 0x01, /* la_pltenter will not be called. */
[129] Fix | Delete
LA_SYMB_NOPLTEXIT = 0x02, /* la_pltexit will not be called. */
[130] Fix | Delete
LA_SYMB_STRUCTCALL = 0x04, /* Return value is a structure. */
[131] Fix | Delete
LA_SYMB_DLSYM = 0x08, /* Binding due to dlsym call. */
[132] Fix | Delete
LA_SYMB_ALTVALUE = 0x10 /* Value has been changed by a previous
[133] Fix | Delete
la_symbind call. */
[134] Fix | Delete
};
[135] Fix | Delete
[136] Fix | Delete
struct dl_phdr_info
[137] Fix | Delete
{
[138] Fix | Delete
ElfW(Addr) dlpi_addr;
[139] Fix | Delete
const char *dlpi_name;
[140] Fix | Delete
const ElfW(Phdr) *dlpi_phdr;
[141] Fix | Delete
ElfW(Half) dlpi_phnum;
[142] Fix | Delete
[143] Fix | Delete
/* Note: Following members were introduced after the first
[144] Fix | Delete
version of this structure was available. Check the SIZE
[145] Fix | Delete
argument passed to the dl_iterate_phdr callback to determine
[146] Fix | Delete
whether or not each later member is available. */
[147] Fix | Delete
[148] Fix | Delete
/* Incremented when a new object may have been added. */
[149] Fix | Delete
__extension__ unsigned long long int dlpi_adds;
[150] Fix | Delete
/* Incremented when an object may have been removed. */
[151] Fix | Delete
__extension__ unsigned long long int dlpi_subs;
[152] Fix | Delete
[153] Fix | Delete
/* If there is a PT_TLS segment, its module ID as used in
[154] Fix | Delete
TLS relocations, else zero. */
[155] Fix | Delete
size_t dlpi_tls_modid;
[156] Fix | Delete
[157] Fix | Delete
/* The address of the calling thread's instance of this module's
[158] Fix | Delete
PT_TLS segment, if it has one and it has been allocated
[159] Fix | Delete
in the calling thread, otherwise a null pointer. */
[160] Fix | Delete
void *dlpi_tls_data;
[161] Fix | Delete
};
[162] Fix | Delete
[163] Fix | Delete
__BEGIN_DECLS
[164] Fix | Delete
[165] Fix | Delete
extern int dl_iterate_phdr (int (*__callback) (struct dl_phdr_info *,
[166] Fix | Delete
size_t, void *),
[167] Fix | Delete
void *__data);
[168] Fix | Delete
[169] Fix | Delete
[170] Fix | Delete
/* Prototypes for the ld.so auditing interfaces. These are not
[171] Fix | Delete
defined anywhere in ld.so but instead have to be provided by the
[172] Fix | Delete
auditing DSO. */
[173] Fix | Delete
extern unsigned int la_version (unsigned int __version);
[174] Fix | Delete
extern void la_activity (uintptr_t *__cookie, unsigned int __flag);
[175] Fix | Delete
extern char *la_objsearch (const char *__name, uintptr_t *__cookie,
[176] Fix | Delete
unsigned int __flag);
[177] Fix | Delete
extern unsigned int la_objopen (struct link_map *__map, Lmid_t __lmid,
[178] Fix | Delete
uintptr_t *__cookie);
[179] Fix | Delete
extern void la_preinit (uintptr_t *__cookie);
[180] Fix | Delete
extern uintptr_t la_symbind32 (Elf32_Sym *__sym, unsigned int __ndx,
[181] Fix | Delete
uintptr_t *__refcook, uintptr_t *__defcook,
[182] Fix | Delete
unsigned int *__flags, const char *__symname);
[183] Fix | Delete
extern uintptr_t la_symbind64 (Elf64_Sym *__sym, unsigned int __ndx,
[184] Fix | Delete
uintptr_t *__refcook, uintptr_t *__defcook,
[185] Fix | Delete
unsigned int *__flags, const char *__symname);
[186] Fix | Delete
extern unsigned int la_objclose (uintptr_t *__cookie);
[187] Fix | Delete
[188] Fix | Delete
__END_DECLS
[189] Fix | Delete
[190] Fix | Delete
#endif
[191] Fix | Delete
[192] Fix | Delete
#endif /* link.h */
[193] Fix | Delete
[194] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function