#define DYNAMIC_SIZE (DT_NUM+OS_NUM+ARCH_NUM)
-extern void _dl_parse_dynamic_info(Elf32_Dyn *dpnt, unsigned long dynamic_info[], void *debug_addr, Elf32_Addr load_off);
+extern void _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[], void *debug_addr, ElfW(Addr) load_off);
static inline __attribute__((always_inline))
-void __dl_parse_dynamic_info(Elf32_Dyn *dpnt, unsigned long dynamic_info[], void *debug_addr, Elf32_Addr load_off)
+void __dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[], void *debug_addr, ElfW(Addr) load_off)
{
for (; dpnt->d_tag; dpnt++) {
if (dpnt->d_tag < DT_NUM) {
unsigned long dynamic_info[DYNAMIC_SIZE];
unsigned long n_phent;
- Elf32_Phdr * ppnt;
+ ElfW(Phdr) * ppnt;
ElfW(Addr) relro_addr;
size_t relro_size;
extern void _dl_dprintf(int, const char *, ...);
extern void _dl_get_ready_to_run(struct elf_resolve *tpnt, unsigned long load_addr,
- Elf32_auxv_t auxvt[AT_EGID + 1], char **envp, char **argv);
+ ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp, char **argv);
#endif /* _LDSO_H_ */
{
ElfW(Ehdr) *epnt;
unsigned long dynamic_addr = 0;
- Elf32_Dyn *dpnt;
+ ElfW(Dyn) *dpnt;
struct elf_resolve *tpnt;
ElfW(Phdr) *ppnt;
char *status, *header;
return NULL;
}
- dpnt = (Elf32_Dyn *) dynamic_addr;
+ dpnt = (ElfW(Dyn) *) dynamic_addr;
_dl_memset(dynamic_info, 0, sizeof(dynamic_info));
_dl_parse_dynamic_info(dpnt, dynamic_info, NULL, libaddr);
/* If the TEXTREL is set, this means that we need to make the pages
{
int goof = 0;
struct elf_resolve *tpnt;
- Elf32_Word reloc_size, reloc_addr, relative_count;
+ ElfW(Word) reloc_size, reloc_addr, relative_count;
if (rpnt->next)
goof += _dl_fixup(rpnt->next, now_flag);
return retval;
}
-void _dl_parse_dynamic_info(Elf32_Dyn *dpnt, unsigned long dynamic_info[], void *debug_addr, Elf32_Addr load_off)
+void _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[], void *debug_addr, ElfW(Addr) load_off)
{
__dl_parse_dynamic_info(dpnt, dynamic_info, debug_addr, load_off);
}
struct elf_resolve *tpnt;
int si;
char *strtab;
- Elf32_Sym *symtab;
+ ElfW(Sym) *symtab;
unsigned long elf_hash_number, hn;
const ElfW(Sym) *sym;
char *weak_result = NULL;
/* Avoid calling .urem here. */
do_rem(hn, elf_hash_number, tpnt->nbucket);
- symtab = (Elf32_Sym *) (intptr_t) (tpnt->dynamic_info[DT_SYMTAB]);
+ symtab = (ElfW(Sym) *) (intptr_t) (tpnt->dynamic_info[DT_SYMTAB]);
strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]);
for (si = tpnt->elf_buckets[hn]; si != STN_UNDEF; si = tpnt->chains[si]) {
unsigned int argc;
char **argv, **envp;
unsigned long load_addr;
- Elf32_Addr got;
+ ElfW(Addr) got;
unsigned long *aux_dat;
ElfW(Ehdr) *header;
struct elf_resolve tpnt_tmp;
struct elf_resolve *tpnt = &tpnt_tmp;
- Elf32_auxv_t auxvt[AT_EGID + 1];
- Elf32_Dyn *dpnt;
+ ElfW(auxv_t) auxvt[AT_EGID + 1];
+ ElfW(Dyn) *dpnt;
/* WARNING! -- we cannot make _any_ funtion calls until we have
* taken care of fixing up our own relocations. Making static
* the Auxiliary Vector Table. Read out the elements of the auxvt,
* sort and store them in auxvt for later use. */
while (*aux_dat) {
- Elf32_auxv_t *auxv_entry = (Elf32_auxv_t *) aux_dat;
+ ElfW(auxv_t) *auxv_entry = (ElfW(auxv_t) *) aux_dat;
if (auxv_entry->a_type <= AT_EGID) {
- _dl_memcpy(&(auxvt[auxv_entry->a_type]), auxv_entry, sizeof(Elf32_auxv_t));
+ _dl_memcpy(&(auxvt[auxv_entry->a_type]), auxv_entry, sizeof(ElfW(auxv_t)));
}
aux_dat += 2;
}
* happen to know what that is for this architecture. If not,
* we can always read stuff out of the ELF file to find it... */
got = elf_machine_dynamic();
- dpnt = (Elf32_Dyn *) (got + load_addr);
+ dpnt = (ElfW(Dyn) *) (got + load_addr);
SEND_STDERR_DEBUG("First Dynamic section entry=");
SEND_ADDRESS_STDERR_DEBUG(dpnt, 1);
_dl_memset(tpnt, 0, sizeof(struct elf_resolve));
unsigned long *reloc_addr;
unsigned long symbol_addr;
int symtab_index;
- Elf32_Sym *sym;
+ ElfW(Sym) *sym;
ELF_RELOC *rpnt;
unsigned long rel_addr, rel_size;
- Elf32_Word relative_count = tpnt->dynamic_info[DT_RELCONT_IDX];
+ ElfW(Word) relative_count = tpnt->dynamic_info[DT_RELCONT_IDX];
rel_addr = (indx ? tpnt->dynamic_info[DT_JMPREL] : tpnt->
dynamic_info[DT_RELOC_TABLE_ADDR]);
sym = NULL;
if (symtab_index) {
char *strtab;
- Elf32_Sym *symtab;
+ ElfW(Sym) *symtab;
- symtab = (Elf32_Sym *) tpnt->dynamic_info[DT_SYMTAB];
+ symtab = (ElfW(Sym) *) tpnt->dynamic_info[DT_SYMTAB];
strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
sym = &symtab[symtab_index];
symbol_addr = load_addr + sym->st_value;
}
void _dl_get_ready_to_run(struct elf_resolve *tpnt, unsigned long load_addr,
- Elf32_auxv_t auxvt[AT_EGID + 1], char **envp,
+ ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp,
char **argv)
{
ElfW(Phdr) *ppnt;
- Elf32_Dyn *dpnt;
+ ElfW(Dyn) *dpnt;
char *lpntstr;
int i, goof = 0, unlazy = 0, trace_loaded_objects = 0;
struct dyn_elf *rpnt;
relro_size = ppnt->p_memsz;
}
if (ppnt->p_type == PT_DYNAMIC) {
- dpnt = (Elf32_Dyn *) (ppnt->p_vaddr + app_tpnt->loadaddr);
+ dpnt = (ElfW(Dyn) *) (ppnt->p_vaddr + app_tpnt->loadaddr);
_dl_parse_dynamic_info(dpnt, app_tpnt->dynamic_info, debug_addr, app_tpnt->loadaddr);
#ifndef __FORCE_SHAREABLE_TEXT_SEGMENTS__
/* Ugly, ugly. We need to call mprotect to change the
nlist = 0;
for (tcurr = _dl_loaded_modules; tcurr; tcurr = tcurr->next) {
- Elf32_Dyn *dpnt;
+ ElfW(Dyn) *dpnt;
nlist++;
- for (dpnt = (Elf32_Dyn *) tcurr->dynamic_addr; dpnt->d_tag; dpnt++) {
+ for (dpnt = (ElfW(Dyn) *) tcurr->dynamic_addr; dpnt->d_tag; dpnt++) {
if (dpnt->d_tag == DT_NEEDED) {
char *name;
struct init_fini_list *tmp;
dep_list = runp2 = runp;
for (; runp; runp = runp->next)
{
- Elf32_Dyn *dpnt;
+ ElfW(Dyn) *dpnt;
char *lpntstr;
nlist++;
runp->tpnt->init_fini = NULL; /* clear any previous dependcies */
- for (dpnt = (Elf32_Dyn *) runp->tpnt->dynamic_addr; dpnt->d_tag; dpnt++) {
+ for (dpnt = (ElfW(Dyn) *) runp->tpnt->dynamic_addr; dpnt->d_tag; dpnt++) {
if (dpnt->d_tag == DT_NEEDED) {
char *name;
{
char *strtab;
- Elf32_Sym *symtab;
+ ElfW(Sym) *symtab;
int hn, si;
int sf;
int sn = 0;
ElfW(Addr) sa;
sa = 0;
- symtab = (Elf32_Sym *) (pelf->dynamic_info[DT_SYMTAB]);
+ symtab = (ElfW(Sym) *) (pelf->dynamic_info[DT_SYMTAB]);
strtab = (char *) (pelf->dynamic_info[DT_STRTAB]);
sf = 0;