summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/ldso/dl-elf.c207
-rw-r--r--ldso/ldso/dl-hash.c18
-rw-r--r--ldso/ldso/dl-startup.c70
-rw-r--r--ldso/ldso/hash.c18
-rw-r--r--ldso/ldso/ldso.c177
-rw-r--r--ldso/ldso/readelflib1.c207
-rw-r--r--ldso/ldso/startup.c70
7 files changed, 377 insertions, 390 deletions
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 75c5972bf..95889deef 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -1,12 +1,11 @@
/* vi: set sw=4 ts=4: */
-/* Program to load an ELF binary on a linux system, and run it
- * after resolving ELF shared library symbols
+/*
+ * This file contains the helper routines to load an ELF shared
+ * library into memory and add the symbol table info to the chain.
*
+ * Copyright (C) 2000-2004 by Erik Andersen <andersen@codpoet.org>
* Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
* David Engel, Hongjiu Lu and Mitch D'Souza
- * Copyright (C) 2001-2004 Erik Andersen
- *
- * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,8 +30,7 @@
*/
-/* This file contains the helper routines to load an ELF sharable
- library into memory and add the symbol table info to the chain. */
+#include "ldso.h"
#ifdef USE_CACHE
@@ -53,7 +51,7 @@ int _dl_map_cache(void)
return 0;
if (_dl_stat(LDSO_CACHE, &st)
- || (fd = _dl_open(LDSO_CACHE, O_RDONLY)) < 0) {
+ || (fd = _dl_open(LDSO_CACHE, O_RDONLY)) < 0) {
_dl_dprintf(2, "%s: can't open cache '%s'\n", _dl_progname, LDSO_CACHE);
_dl_cache_addr = (caddr_t) - 1; /* so we won't try again */
return -1;
@@ -64,21 +62,21 @@ int _dl_map_cache(void)
_dl_close(fd);
if (_dl_mmap_check_error(_dl_cache_addr)) {
_dl_dprintf(2, "%s: can't map cache '%s'\n",
- _dl_progname, LDSO_CACHE);
+ _dl_progname, LDSO_CACHE);
return -1;
}
header = (header_t *) _dl_cache_addr;
if (_dl_cache_size < sizeof(header_t) ||
- _dl_memcmp(header->magic, LDSO_CACHE_MAGIC, LDSO_CACHE_MAGIC_LEN)
- || _dl_memcmp(header->version, LDSO_CACHE_VER, LDSO_CACHE_VER_LEN)
- || _dl_cache_size <
- (sizeof(header_t) + header->nlibs * sizeof(libentry_t))
- || _dl_cache_addr[_dl_cache_size - 1] != '\0')
+ _dl_memcmp(header->magic, LDSO_CACHE_MAGIC, LDSO_CACHE_MAGIC_LEN)
+ || _dl_memcmp(header->version, LDSO_CACHE_VER, LDSO_CACHE_VER_LEN)
+ || _dl_cache_size <
+ (sizeof(header_t) + header->nlibs * sizeof(libentry_t))
+ || _dl_cache_addr[_dl_cache_size - 1] != '\0')
{
_dl_dprintf(2, "%s: cache '%s' is corrupt\n", _dl_progname,
- LDSO_CACHE);
+ LDSO_CACHE);
goto fail;
}
@@ -88,7 +86,7 @@ int _dl_map_cache(void)
for (i = 0; i < header->nlibs; i++) {
if (libent[i].sooffset >= strtabsize ||
- libent[i].liboffset >= strtabsize)
+ libent[i].liboffset >= strtabsize)
{
_dl_dprintf(2, "%s: cache '%s' is corrupt\n", _dl_progname, LDSO_CACHE);
goto fail;
@@ -97,7 +95,7 @@ int _dl_map_cache(void)
return 0;
- fail:
+fail:
_dl_munmap(_dl_cache_addr, _dl_cache_size);
_dl_cache_addr = (caddr_t) - 1;
return -1;
@@ -115,7 +113,6 @@ int _dl_unmap_cache(void)
return 0;
}
-
#endif
/* This function's behavior must exactly match that
@@ -233,13 +230,9 @@ struct elf_resolve *_dl_check_if_named_library_is_loaded(const char *full_libnam
}
-/*
- * Used to return error codes back to dlopen et. al.
- */
-
+/* Used to return error codes back to dlopen et. al. */
unsigned long _dl_error_number;
unsigned long _dl_internal_error_number;
-extern char *_dl_ldsopath;
struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
struct elf_resolve *tpnt, char *full_libname, int trace_loaded_objects)
@@ -301,7 +294,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
#endif
if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
{
- return tpnt1;
+ return tpnt1;
}
}
}
@@ -312,10 +305,10 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
#if defined (__SUPPORT_LD_DEBUG__)
if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path);
#endif
- if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL)
- {
- return tpnt1;
- }
+ if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL)
+ {
+ return tpnt1;
+ }
}
/*
@@ -335,10 +328,10 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
#endif
for (i = 0; i < header->nlibs; i++) {
if ((libent[i].flags == LIB_ELF ||
- libent[i].flags == LIB_ELF_LIBC5) &&
- _dl_strcmp(libname, strs + libent[i].sooffset) == 0 &&
- (tpnt1 = _dl_load_elf_shared_library(secure,
- rpnt, strs + libent[i].liboffset)))
+ libent[i].flags == LIB_ELF_LIBC5) &&
+ _dl_strcmp(libname, strs + libent[i].sooffset) == 0 &&
+ (tpnt1 = _dl_load_elf_shared_library(secure,
+ rpnt, strs + libent[i].liboffset)))
return tpnt1;
}
}
@@ -347,11 +340,11 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
/* Look for libraries wherever the shared library loader
* was installed */
#if defined (__SUPPORT_LD_DEBUG__)
- if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching ldso dir='%s'\n", _dl_ldsopath);
+ if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching ldso dir='%s'\n", _dl_ldsopath);
#endif
if ((tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt)) != NULL)
{
- return tpnt1;
+ return tpnt1;
}
@@ -361,14 +354,14 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching full lib path list\n");
#endif
if ((tpnt1 = search_for_named_library(libname, secure,
- UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib:"
- UCLIBC_RUNTIME_PREFIX "usr/lib:"
- UCLIBC_RUNTIME_PREFIX "lib:"
- "/usr/lib:"
- "/lib", rpnt)
- ) != NULL)
+ UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib:"
+ UCLIBC_RUNTIME_PREFIX "usr/lib:"
+ UCLIBC_RUNTIME_PREFIX "lib:"
+ "/usr/lib:"
+ "/lib", rpnt)
+ ) != NULL)
{
- return tpnt1;
+ return tpnt1;
}
goof:
@@ -449,8 +442,8 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
return NULL;
}
- header = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+ header = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
if (_dl_mmap_check_error(header)) {
_dl_dprintf(2, "%s: can't map '%s'\n", _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
@@ -461,12 +454,12 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
_dl_read(infile, header, PAGE_SIZE);
epnt = (ElfW(Ehdr) *) (intptr_t) header;
if (epnt->e_ident[0] != 0x7f ||
- epnt->e_ident[1] != 'E' ||
- epnt->e_ident[2] != 'L' ||
- epnt->e_ident[3] != 'F')
+ epnt->e_ident[1] != 'E' ||
+ epnt->e_ident[2] != 'L' ||
+ epnt->e_ident[3] != 'F')
{
_dl_dprintf(2, "%s: '%s' is not an ELF file\n", _dl_progname,
- libname);
+ libname);
_dl_internal_error_number = LD_ERROR_NOTELF;
_dl_close(infile);
_dl_munmap(header, PAGE_SIZE);
@@ -475,14 +468,14 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if ((epnt->e_type != ET_DYN) || (epnt->e_machine != MAGIC1
#ifdef MAGIC2
- && epnt->e_machine != MAGIC2
+ && epnt->e_machine != MAGIC2
#endif
- ))
+ ))
{
_dl_internal_error_number =
- (epnt->e_type != ET_DYN ? LD_ERROR_NOTDYN : LD_ERROR_NOTMAGIC);
+ (epnt->e_type != ET_DYN ? LD_ERROR_NOTDYN : LD_ERROR_NOTMAGIC);
_dl_dprintf(2, "%s: '%s' is not an ELF executable for " ELF_TARGET
- "\n", _dl_progname, libname);
+ "\n", _dl_progname, libname);
_dl_close(infile);
_dl_munmap(header, PAGE_SIZE);
return NULL;
@@ -496,7 +489,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (ppnt->p_type == PT_DYNAMIC) {
if (dynamic_addr)
_dl_dprintf(2, "%s: '%s' has more than one dynamic section\n",
- _dl_progname, libname);
+ _dl_progname, libname);
dynamic_addr = ppnt->p_vaddr;
dynamic_size = ppnt->p_filesz;
};
@@ -525,7 +518,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
flags |= MAP_FIXED;
status = (char *) _dl_mmap((char *) (piclib ? 0 : minvma),
- maxvma - minvma, PROT_NONE, flags | MAP_ANONYMOUS, -1, 0);
+ maxvma - minvma, PROT_NONE, flags | MAP_ANONYMOUS, -1, 0);
if (_dl_mmap_check_error(status)) {
_dl_dprintf(2, "%s: can't map %s\n", _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
@@ -555,13 +548,13 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
char *cpnt;
status = (char *) _dl_mmap((char *) ((piclib ? libaddr : 0) +
- (ppnt->p_vaddr & PAGE_ALIGN)), (ppnt->p_vaddr & ADDR_ALIGN)
- + ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags, infile,
- ppnt->p_offset & OFFS_ALIGN);
+ (ppnt->p_vaddr & PAGE_ALIGN)), (ppnt->p_vaddr & ADDR_ALIGN)
+ + ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags, infile,
+ ppnt->p_offset & OFFS_ALIGN);
if (_dl_mmap_check_error(status)) {
_dl_dprintf(2, "%s: can't map '%s'\n",
- _dl_progname, libname);
+ _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
_dl_munmap((char *) libaddr, maxvma - minvma);
_dl_close(infile);
@@ -571,7 +564,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
/* Pad the last page with zeroes. */
cpnt = (char *) (status + (ppnt->p_vaddr & ADDR_ALIGN) +
- ppnt->p_filesz);
+ ppnt->p_filesz);
while (((unsigned long) cpnt) & ADDR_ALIGN)
*cpnt++ = 0;
@@ -585,14 +578,14 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (map_size < ppnt->p_vaddr + ppnt->p_memsz)
status = (char *) _dl_mmap((char *) map_size +
- (piclib ? libaddr : 0),
- ppnt->p_vaddr + ppnt->p_memsz - map_size,
- LXFLAGS(ppnt->p_flags), flags | MAP_ANONYMOUS, -1, 0);
+ (piclib ? libaddr : 0),
+ ppnt->p_vaddr + ppnt->p_memsz - map_size,
+ LXFLAGS(ppnt->p_flags), flags | MAP_ANONYMOUS, -1, 0);
} else
status = (char *) _dl_mmap((char *) (ppnt->p_vaddr & PAGE_ALIGN)
- + (piclib ? libaddr : 0), (ppnt->p_vaddr & ADDR_ALIGN) +
- ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags,
- infile, ppnt->p_offset & OFFS_ALIGN);
+ + (piclib ? libaddr : 0), (ppnt->p_vaddr & ADDR_ALIGN) +
+ ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags,
+ infile, ppnt->p_offset & OFFS_ALIGN);
if (_dl_mmap_check_error(status)) {
_dl_dprintf(2, "%s: can't map '%s'\n", _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
@@ -626,8 +619,8 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (!dynamic_addr) {
_dl_internal_error_number = LD_ERROR_NODYNAMIC;
_dl_dprintf(2, "%s: '%s' is missing a dynamic section\n",
- _dl_progname, libname);
- _dl_munmap(header, PAGE_SIZE);
+ _dl_progname, libname);
+ _dl_munmap(header, PAGE_SIZE);
return NULL;
}
@@ -676,9 +669,9 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
for (i = 0; i < epnt->e_phnum; i++, ppnt++) {
if (ppnt->p_type == PT_LOAD && !(ppnt->p_flags & PF_W))
_dl_mprotect((void *) ((piclib ? libaddr : 0) +
- (ppnt->p_vaddr & PAGE_ALIGN)),
- (ppnt->p_vaddr & ADDR_ALIGN) + (unsigned long) ppnt->p_filesz,
- PROT_READ | PROT_WRITE | PROT_EXEC);
+ (ppnt->p_vaddr & PAGE_ALIGN)),
+ (ppnt->p_vaddr & ADDR_ALIGN) + (unsigned long) ppnt->p_filesz,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
}
#else
_dl_dprintf(_dl_debug_file, "Can't modify %s's text section. Use GCC option -fPIC for shared objects, please.\n",libname);
@@ -687,7 +680,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
}
tpnt = _dl_add_elf_hash_table(libname, (char *) libaddr, dynamic_info,
- dynamic_addr, dynamic_size);
+ dynamic_addr, dynamic_size);
tpnt->ppnt = (ElfW(Phdr) *)(intptr_t) (tpnt->loadaddr + epnt->e_phoff);
tpnt->n_phent = epnt->e_phnum;
@@ -716,7 +709,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (lpnt) {
lpnt = (unsigned long *) (dynamic_info[DT_PLTGOT] +
- ((int) libaddr));
+ ((int) libaddr));
INIT_GOT(lpnt, tpnt);
};
@@ -744,10 +737,10 @@ void _dl_dprintf(int fd, const char *fmt, ...)
static char *buf;
buf = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
if (_dl_mmap_check_error(buf)) {
- _dl_write(fd, "mmap of a spare page failed!\n", 29);
- _dl_exit(20);
+ _dl_write(fd, "mmap of a spare page failed!\n", 29);
+ _dl_exit(20);
}
start = ptr = buf;
@@ -773,38 +766,38 @@ void _dl_dprintf(int fd, const char *fmt, ...)
_dl_write(fd, start, _dl_strlen(start));
switch (*ptr++) {
- case 's':
- string = va_arg(args, char *);
-
- if (!string)
+ case 's':
+ string = va_arg(args, char *);
+
+ if (!string)
+ _dl_write(fd, "(null)", 6);
+ else
+ _dl_write(fd, string, _dl_strlen(string));
+ break;
+
+ case 'i':
+ case 'd':
+ {
+ char tmp[22];
+ num = va_arg(args, int);
+
+ string = _dl_simple_ltoa(tmp, num);
+ _dl_write(fd, string, _dl_strlen(string));
+ break;
+ }
+ case 'x':
+ case 'X':
+ {
+ char tmp[22];
+ num = va_arg(args, int);
+
+ string = _dl_simple_ltoahex(tmp, num);
+ _dl_write(fd, string, _dl_strlen(string));
+ break;
+ }
+ default:
_dl_write(fd, "(null)", 6);
- else
- _dl_write(fd, string, _dl_strlen(string));
- break;
-
- case 'i':
- case 'd':
- {
- char tmp[22];
- num = va_arg(args, int);
-
- string = _dl_simple_ltoa(tmp, num);
- _dl_write(fd, string, _dl_strlen(string));
- break;
- }
- case 'x':
- case 'X':
- {
- char tmp[22];
- num = va_arg(args, int);
-
- string = _dl_simple_ltoahex(tmp, num);
- _dl_write(fd, string, _dl_strlen(string));
- break;
- }
- default:
- _dl_write(fd, "(null)", 6);
- break;
+ break;
}
start = ptr;
@@ -916,8 +909,8 @@ int _dl_fixup(struct dyn_elf *rpnt, int flag)
return goof;
tpnt->init_flag |= COPY_RELOCS_DONE;
goof += _dl_parse_copy_information(rpnt,
- tpnt->dynamic_info[DT_RELOC_TABLE_ADDR],
- tpnt->dynamic_info[DT_RELOC_TABLE_SIZE], 0);
+ tpnt->dynamic_info[DT_RELOC_TABLE_ADDR],
+ tpnt->dynamic_info[DT_RELOC_TABLE_SIZE], 0);
#if defined (__SUPPORT_LD_DEBUG__)
if(_dl_debug) {
diff --git a/ldso/ldso/dl-hash.c b/ldso/ldso/dl-hash.c
index 1e4acd979..c33b329ec 100644
--- a/ldso/ldso/dl-hash.c
+++ b/ldso/ldso/dl-hash.c
@@ -79,7 +79,7 @@ struct elf_resolve *_dl_check_hashed_files(const char *libname)
for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
if (_dl_strncmp(tpnt->libname, libname, len) == 0 &&
- (tpnt->libname[len] == '\0' || tpnt->libname[len] == '.'))
+ (tpnt->libname[len] == '\0' || tpnt->libname[len] == '.'))
return tpnt;
}
@@ -242,18 +242,18 @@ char *_dl_find_hash(const char *name, struct dyn_elf *rpnt1,
continue;
switch (ELF32_ST_BIND(sym->st_info)) {
- case STB_WEAK:
+ case STB_WEAK:
//Disable this to match current glibc behavior. Of course,
//this doesn't actually work yet and will cause segfaults...
#if 1
- if (!weak_result)
- weak_result = (char *)tpnt->loadaddr + sym->st_value;
- break;
+ if (!weak_result)
+ weak_result = (char *)tpnt->loadaddr + sym->st_value;
+ break;
#endif
- case STB_GLOBAL:
- return (char*)tpnt->loadaddr + sym->st_value;
- default: /* Local symbols not handled here */
- break;
+ case STB_GLOBAL:
+ return (char*)tpnt->loadaddr + sym->st_value;
+ default: /* Local symbols not handled here */
+ break;
}
}
}
diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c
index 0da911f8c..6a131633a 100644
--- a/ldso/ldso/dl-startup.c
+++ b/ldso/ldso/dl-startup.c
@@ -185,16 +185,16 @@ DL_BOOT(unsigned long args)
/* Check the ELF header to make sure everything looks ok. */
if (!header || header->e_ident[EI_CLASS] != ELFCLASS32 ||
- header->e_ident[EI_VERSION] != EV_CURRENT
+ header->e_ident[EI_VERSION] != EV_CURRENT
#if !defined(__powerpc__) && !defined(__mips__) && !defined(__sh__)
- || _dl_strncmp((void *) header, ELFMAGIC, SELFMAG) != 0
+ || _dl_strncmp((void *) header, ELFMAGIC, SELFMAG) != 0
#else
- || header->e_ident[EI_MAG0] != ELFMAG0
- || header->e_ident[EI_MAG1] != ELFMAG1
- || header->e_ident[EI_MAG2] != ELFMAG2
- || header->e_ident[EI_MAG3] != ELFMAG3
+ || header->e_ident[EI_MAG0] != ELFMAG0
+ || header->e_ident[EI_MAG1] != ELFMAG1
+ || header->e_ident[EI_MAG2] != ELFMAG2
+ || header->e_ident[EI_MAG3] != ELFMAG3
#endif
- ) {
+ ) {
SEND_STDERR("Invalid ELF header\n");
_dl_exit(0);
}
@@ -209,28 +209,28 @@ DL_BOOT(unsigned long args)
* happen to know what that is for this architecture. If not,
* we can always read stuff out of the ELF file to find it... */
#if defined(__i386__)
- __asm__("\tmovl %%ebx,%0\n\t":"=a"(got));
+ __asm__("\tmovl %%ebx,%0\n\t":"=a"(got));
#elif defined(__m68k__)
- __asm__("movel %%a5,%0":"=g"(got));
+ __asm__("movel %%a5,%0":"=g"(got));
#elif defined(__sparc__)
- __asm__("\tmov %%l7,%0\n\t":"=r"(got));
+ __asm__("\tmov %%l7,%0\n\t":"=r"(got));
#elif defined(__arm__)
- __asm__("\tmov %0, r10\n\t":"=r"(got));
+ __asm__("\tmov %0, r10\n\t":"=r"(got));
#elif defined(__powerpc__)
- __asm__("\tbl _GLOBAL_OFFSET_TABLE_-4@local\n\t":"=l"(got));
+ __asm__("\tbl _GLOBAL_OFFSET_TABLE_-4@local\n\t":"=l"(got));
#elif defined(__mips__)
- __asm__("\tmove %0, $28\n\tsubu %0,%0,0x7ff0\n\t":"=r"(got));
+ __asm__("\tmove %0, $28\n\tsubu %0,%0,0x7ff0\n\t":"=r"(got));
#elif defined(__sh__) && !defined(__SH5__)
- __asm__(
-" mov.l 1f, %0\n"
-" mova 1f, r0\n"
-" bra 2f\n"
-" add r0, %0\n"
-" .balign 4\n"
-"1: .long _GLOBAL_OFFSET_TABLE_\n"
-"2:" : "=r" (got) : : "r0");
+ __asm__(
+ " mov.l 1f, %0\n"
+ " mova 1f, r0\n"
+ " bra 2f\n"
+ " add r0, %0\n"
+ " .balign 4\n"
+ "1: .long _GLOBAL_OFFSET_TABLE_\n"
+ "2:" : "=r" (got) : : "r0");
#elif defined(__cris__)
- __asm__("\tmove.d $pc,%0\n\tsub.d .:GOTOFF,%0\n\t":"=r"(got));
+ __asm__("\tmove.d $pc,%0\n\tsub.d .:GOTOFF,%0\n\t":"=r"(got));
#else
/* Do things the slow way in C */
{
@@ -252,7 +252,7 @@ DL_BOOT(unsigned long args)
SEND_STDERR("missing dynamic linking information section \n");
_dl_exit(0);
- found_dynamic:
+found_dynamic:
dynamic = (Elf32_Dyn *) (shdr->sh_offset + (char *) header);
/* Find where PT_LOAD is hiding */
@@ -265,7 +265,7 @@ DL_BOOT(unsigned long args)
SEND_STDERR("missing loadable program segment\n");
_dl_exit(0);
- found_pt_load:
+found_pt_load:
/* Now (finally) find where DT_PLTGOT is hiding */
tx_reloc = pt_load->p_vaddr - pt_load->p_offset;
for (; DT_NULL != dynamic->d_tag; ++dynamic) {
@@ -276,7 +276,7 @@ DL_BOOT(unsigned long args)
SEND_STDERR("missing global offset table\n");
_dl_exit(0);
- found_got:
+found_got:
got = (unsigned long *) (dynamic->d_un.d_val - tx_reloc +
(char *) header);
}
@@ -306,7 +306,7 @@ DL_BOOT(unsigned long args)
#ifdef __UCLIBC_PIE_SUPPORT__
/* Find the runtime load address of the main executable, this may be
- * different from what the ELF header says for ET_DYN/PIE executables.
+ * different from what the ELF header says for ET_DYN/PIE executables.
*/
{
ElfW(Phdr) *ppnt;
@@ -462,14 +462,14 @@ DL_BOOT(unsigned long args)
if (ppnt->p_type == PT_LOAD && !(ppnt->p_flags & PF_W))
#ifndef __UCLIBC_PIE_SUPPORT__
_dl_mprotect((void *) (ppnt->p_vaddr & PAGE_ALIGN),
- (ppnt->p_vaddr & ADDR_ALIGN) +
- (unsigned long) ppnt->p_filesz,
- PROT_READ | PROT_WRITE | PROT_EXEC);
+ (ppnt->p_vaddr & ADDR_ALIGN) +
+ (unsigned long) ppnt->p_filesz,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
#else
- _dl_mprotect((void *) ((ppnt->p_vaddr + app_tpnt->loadaddr) & PAGE_ALIGN),
- ((ppnt->p_vaddr + app_tpnt->loadaddr) & ADDR_ALIGN) +
- (unsigned long) ppnt->p_filesz,
- PROT_READ | PROT_WRITE | PROT_EXEC);
+ _dl_mprotect((void *) ((ppnt->p_vaddr + app_tpnt->loadaddr) & PAGE_ALIGN),
+ ((ppnt->p_vaddr + app_tpnt->loadaddr) & ADDR_ALIGN) +
+ (unsigned long) ppnt->p_filesz,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
#endif
}
}
@@ -501,9 +501,9 @@ DL_BOOT(unsigned long args)
rel_addr = (indx ? tpnt->dynamic_info[DT_JMPREL] : tpnt->
- dynamic_info[DT_RELOC_TABLE_ADDR]);
+ dynamic_info[DT_RELOC_TABLE_ADDR]);
rel_size = (indx ? tpnt->dynamic_info[DT_PLTRELSZ] : tpnt->
- dynamic_info[DT_RELOC_TABLE_SIZE]);
+ dynamic_info[DT_RELOC_TABLE_SIZE]);
if (!rel_addr)
continue;
diff --git a/ldso/ldso/hash.c b/ldso/ldso/hash.c
index 1e4acd979..c33b329ec 100644
--- a/ldso/ldso/hash.c
+++ b/ldso/ldso/hash.c
@@ -79,7 +79,7 @@ struct elf_resolve *_dl_check_hashed_files(const char *libname)
for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
if (_dl_strncmp(tpnt->libname, libname, len) == 0 &&
- (tpnt->libname[len] == '\0' || tpnt->libname[len] == '.'))
+ (tpnt->libname[len] == '\0' || tpnt->libname[len] == '.'))
return tpnt;
}
@@ -242,18 +242,18 @@ char *_dl_find_hash(const char *name, struct dyn_elf *rpnt1,
continue;
switch (ELF32_ST_BIND(sym->st_info)) {
- case STB_WEAK:
+ case STB_WEAK:
//Disable this to match current glibc behavior. Of course,
//this doesn't actually work yet and will cause segfaults...
#if 1
- if (!weak_result)
- weak_result = (char *)tpnt->loadaddr + sym->st_value;
- break;
+ if (!weak_result)
+ weak_result = (char *)tpnt->loadaddr + sym->st_value;
+ break;
#endif
- case STB_GLOBAL:
- return (char*)tpnt->loadaddr + sym->st_value;
- default: /* Local symbols not handled here */
- break;
+ case STB_GLOBAL:
+ return (char*)tpnt->loadaddr + sym->st_value;
+ default: /* Local symbols not handled here */
+ break;
}
}
}
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index 5dca362b5..29adcc1a2 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -104,8 +104,8 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#ifdef __SUPPORT_LD_DEBUG_EARLY__
- /* Wahoo!!! */
- SEND_STDERR("Cool, we managed to make a function call.\n");
+ /* Wahoo!!! */
+ SEND_STDERR("Cool, we managed to make a function call.\n");
#endif
/* Make it so _dl_malloc can use the page of memory we have already
@@ -188,7 +188,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#endif
/* OK, we have what we need - slip this one into the list. */
#ifndef __UCLIBC_PIE_SUPPORT__
- app_tpnt = _dl_add_elf_hash_table("", 0,
+ app_tpnt = _dl_add_elf_hash_table("", 0,
app_tpnt->dynamic_info, ppnt->p_vaddr, ppnt->p_filesz);
#else
app_tpnt = _dl_add_elf_hash_table("", (char *)app_tpnt->loadaddr,
@@ -214,12 +214,12 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
}
/* OK, fill this in - we did not have this before */
- if (ppnt->p_type == PT_INTERP) {
+ if (ppnt->p_type == PT_INTERP) {
int readsize = 0;
char *pnt, *pnt1, buf[1024];
tpnt->libname = _dl_strdup((char *) ppnt->p_offset +
(auxvt[AT_PHDR].a_un.a_val & PAGE_ALIGN));
-
+
/* Determine if the shared lib loader is a symlink */
_dl_memset(buf, 0, sizeof(buf));
readsize = _dl_readlink(tpnt->libname, buf, sizeof(buf));
@@ -233,7 +233,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
}
}
- /* Store the path where the shared lib loader was found for
+ /* Store the path where the shared lib loader was found for
* later use */
pnt = _dl_strdup(tpnt->libname);
pnt1 = _dl_strrchr(pnt, '/');
@@ -257,7 +257,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
be_lazy = 0;
if ((auxvt[AT_UID].a_un.a_val == -1 && _dl_suid_ok()) ||
- (auxvt[AT_UID].a_un.a_val != -1 &&
+ (auxvt[AT_UID].a_un.a_val != -1 &&
auxvt[AT_UID].a_un.a_val == auxvt[AT_EUID].a_un.a_val
&& auxvt[AT_GID].a_un.a_val== auxvt[AT_EGID].a_un.a_val)) {
_dl_secure = 0;
@@ -277,55 +277,55 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
_dl_debug = _dl_getenv("LD_DEBUG", envp);
if (_dl_debug)
{
- if (_dl_strstr(_dl_debug, "all")) {
- _dl_debug_detail = _dl_debug_move = _dl_debug_symbols
- = _dl_debug_reloc = _dl_debug_bindings = _dl_debug_nofixups = _dl_strstr(_dl_debug, "all");
- }
- else {
- _dl_debug_detail = _dl_strstr(_dl_debug, "detail");
- _dl_debug_move = _dl_strstr(_dl_debug, "move");
- _dl_debug_symbols = _dl_strstr(_dl_debug, "sym");
- _dl_debug_reloc = _dl_strstr(_dl_debug, "reloc");
- _dl_debug_nofixups = _dl_strstr(_dl_debug, "nofix");
- _dl_debug_bindings = _dl_strstr(_dl_debug, "bind");
- }
+ if (_dl_strstr(_dl_debug, "all")) {
+ _dl_debug_detail = _dl_debug_move = _dl_debug_symbols
+ = _dl_debug_reloc = _dl_debug_bindings = _dl_debug_nofixups = _dl_strstr(_dl_debug, "all");
+ }
+ else {
+ _dl_debug_detail = _dl_strstr(_dl_debug, "detail");
+ _dl_debug_move = _dl_strstr(_dl_debug, "move");
+ _dl_debug_symbols = _dl_strstr(_dl_debug, "sym");
+ _dl_debug_reloc = _dl_strstr(_dl_debug, "reloc");
+ _dl_debug_nofixups = _dl_strstr(_dl_debug, "nofix");
+ _dl_debug_bindings = _dl_strstr(_dl_debug, "bind");
+ }
}
{
- const char *dl_debug_output;
-
- dl_debug_output = _dl_getenv("LD_DEBUG_OUTPUT", envp);
-
- if (dl_debug_output)
- {
- char tmp[22], *tmp1, *filename;
- int len1, len2;
-
- _dl_memset(tmp, 0, sizeof(tmp));
- tmp1=_dl_simple_ltoa( tmp, (unsigned long)_dl_getpid());
-
- len1 = _dl_strlen(dl_debug_output);
- len2 = _dl_strlen(tmp1);
-
- filename = _dl_malloc(len1+len2+2);
-
- if (filename)
- {
- _dl_strcpy (filename, dl_debug_output);
- filename[len1] = '.';
- _dl_strcpy (&filename[len1+1], tmp1);
-
- _dl_debug_file= _dl_open (filename, O_WRONLY|O_CREAT, 0644);
- if (_dl_debug_file<0)
- {
- _dl_debug_file = 2;
- _dl_dprintf (2, "can't open file: '%s'\n",filename);
- }
- }
- }
+ const char *dl_debug_output;
+
+ dl_debug_output = _dl_getenv("LD_DEBUG_OUTPUT", envp);
+
+ if (dl_debug_output)
+ {
+ char tmp[22], *tmp1, *filename;
+ int len1, len2;
+
+ _dl_memset(tmp, 0, sizeof(tmp));
+ tmp1=_dl_simple_ltoa( tmp, (unsigned long)_dl_getpid());
+
+ len1 = _dl_strlen(dl_debug_output);
+ len2 = _dl_strlen(tmp1);
+
+ filename = _dl_malloc(len1+len2+2);
+
+ if (filename)
+ {
+ _dl_strcpy (filename, dl_debug_output);
+ filename[len1] = '.';
+ _dl_strcpy (&filename[len1+1], tmp1);
+
+ _dl_debug_file= _dl_open (filename, O_WRONLY|O_CREAT, 0644);
+ if (_dl_debug_file<0)
+ {
+ _dl_debug_file = 2;
+ _dl_dprintf (2, "can't open file: '%s'\n",filename);
+ }
+ }
+ }
}
-
-
-#endif
+
+
+#endif
if (_dl_getenv("LD_TRACE_LOADED_OBJECTS", envp) != NULL) {
trace_loaded_objects++;
}
@@ -359,28 +359,28 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
_dl_map_cache();
- if (_dl_preload)
+ if (_dl_preload)
{
char c, *str, *str2;
str = _dl_preload;
while (*str == ':' || *str == ' ' || *str == '\t')
str++;
- while (*str)
+ while (*str)
{
str2 = str;
while (*str2 && *str2 != ':' && *str2 != ' ' && *str2 != '\t')
str2++;
c = *str2;
*str2 = '\0';
- if (!_dl_secure || _dl_strchr(str, '/') == NULL)
+ if (!_dl_secure || _dl_strchr(str, '/') == NULL)
{
- if ((tpnt1 = _dl_check_if_named_library_is_loaded(str, trace_loaded_objects)))
+ if ((tpnt1 = _dl_check_if_named_library_is_loaded(str, trace_loaded_objects)))
{
continue;
}
#if defined (__SUPPORT_LD_DEBUG__)
- if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tfile='%s'; needed by '%s'\n",
+ if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tfile='%s'; needed by '%s'\n",
str, _dl_progname);
#endif
tpnt1 = _dl_load_shared_library(_dl_secure, &rpnt, NULL, str, trace_loaded_objects);
@@ -388,7 +388,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#ifdef __LDSO_LDD_SUPPORT__
if (trace_loaded_objects)
_dl_dprintf(1, "\t%s => not found\n", str);
- else
+ else
#endif
{
_dl_dprintf(2, "%s: can't load " "library '%s'\n", _dl_progname, str);
@@ -400,10 +400,10 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#endif
#ifdef __LDSO_LDD_SUPPORT__
if (trace_loaded_objects && tpnt1->usage_count==1) {
- /* this is a real hack to make ldd not print
+ /* this is a real hack to make ldd not print
* the library itself when run on a library. */
if (_dl_strcmp(_dl_progname, str) != 0)
- _dl_dprintf(1, "\t%s => %s (%x)\n", str, tpnt1->libname,
+ _dl_dprintf(1, "\t%s => %s (%x)\n", str, tpnt1->libname,
(unsigned) tpnt1->loadaddr);
}
#endif
@@ -423,14 +423,14 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
char *preload;
if (!_dl_stat(LDSO_PRELOAD, &st) && st.st_size > 0) {
if ((fd = _dl_open(LDSO_PRELOAD, O_RDONLY)) < 0) {
- _dl_dprintf(2, "%s: can't open file '%s'\n",
+ _dl_dprintf(2, "%s: can't open file '%s'\n",
_dl_progname, LDSO_PRELOAD);
} else {
- preload = (caddr_t) _dl_mmap(0, st.st_size + 1,
+ preload = (caddr_t) _dl_mmap(0, st.st_size + 1,
PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
_dl_close(fd);
if (preload == (caddr_t) - 1) {
- _dl_dprintf(2, "%s: can't map file '%s'\n",
+ _dl_dprintf(2, "%s: can't map file '%s'\n",
_dl_progname, LDSO_PRELOAD);
} else {
char c, *cp, *cp2;
@@ -459,12 +459,12 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
c = *cp;
*cp = '\0';
- if ((tpnt1 = _dl_check_if_named_library_is_loaded(cp2, trace_loaded_objects)))
+ if ((tpnt1 = _dl_check_if_named_library_is_loaded(cp2, trace_loaded_objects)))
{
continue;
}
#if defined (__SUPPORT_LD_DEBUG__)
- if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tfile='%s'; needed by '%s'\n",
+ if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tfile='%s'; needed by '%s'\n",
cp2, _dl_progname);
#endif
tpnt1 = _dl_load_shared_library(0, &rpnt, NULL, cp2, trace_loaded_objects);
@@ -472,7 +472,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#ifdef __LDSO_LDD_SUPPORT__
if (trace_loaded_objects)
_dl_dprintf(1, "\t%s => not found\n", cp2);
- else
+ else
#endif
{
_dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, cp2);
@@ -484,7 +484,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#endif
#ifdef __LDSO_LDD_SUPPORT__
if (trace_loaded_objects && tpnt1->usage_count==1) {
- _dl_dprintf(1, "\t%s => %s (%x)\n", cp2,
+ _dl_dprintf(1, "\t%s => %s (%x)\n", cp2,
tpnt1->libname, (unsigned) tpnt1->loadaddr);
}
#endif
@@ -503,23 +503,23 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
}
#endif
- for (tcurr = _dl_loaded_modules; tcurr; tcurr = tcurr->next)
+ for (tcurr = _dl_loaded_modules; tcurr; tcurr = tcurr->next)
{
Elf32_Dyn *dpnt;
- for (dpnt = (Elf32_Dyn *) tcurr->dynamic_addr; dpnt->d_tag; dpnt++)
+ for (dpnt = (Elf32_Dyn *) tcurr->dynamic_addr; dpnt->d_tag; dpnt++)
{
- if (dpnt->d_tag == DT_NEEDED)
+ if (dpnt->d_tag == DT_NEEDED)
{
char *name;
lpntstr = (char*) (tcurr->loadaddr + tcurr->dynamic_info[DT_STRTAB] + dpnt->d_un.d_val);
name = _dl_get_last_path_component(lpntstr);
- if ((tpnt1 = _dl_check_if_named_library_is_loaded(name, trace_loaded_objects)))
+ if ((tpnt1 = _dl_check_if_named_library_is_loaded(name, trace_loaded_objects)))
{
continue;
}
#if defined (__SUPPORT_LD_DEBUG__)
- if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tfile='%s'; needed by '%s'\n",
+ if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tfile='%s'; needed by '%s'\n",
lpntstr, _dl_progname);
#endif
if (!(tpnt1 = _dl_load_shared_library(0, &rpnt, tcurr, lpntstr, trace_loaded_objects)))
@@ -528,7 +528,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
if (trace_loaded_objects) {
_dl_dprintf(1, "\t%s => not found\n", lpntstr);
continue;
- } else
+ } else
#endif
{
_dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
@@ -540,7 +540,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#endif
#ifdef __LDSO_LDD_SUPPORT__
if (trace_loaded_objects && tpnt1->usage_count==1) {
- _dl_dprintf(1, "\t%s => %s (%x)\n", lpntstr, tpnt1->libname,
+ _dl_dprintf(1, "\t%s => %s (%x)\n", lpntstr, tpnt1->libname,
(unsigned) tpnt1->loadaddr);
}
#endif
@@ -554,7 +554,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
/*
* If the program interpreter is not in the module chain, add it. This will
- * be required for dlopen to be able to access the internal functions in the
+ * be required for dlopen to be able to access the internal functions in the
* dynamic linker.
*/
if (tpnt) {
@@ -588,8 +588,8 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#ifdef __LDSO_LDD_SUPPORT__
/* End of the line for ldd.... */
if (trace_loaded_objects) {
- _dl_dprintf(1, "\t%s => %s (%x)\n", rpnt->dyn->libname + (_dl_strlen(_dl_ldsopath)) + 1,
- rpnt->dyn->libname, rpnt->dyn->loadaddr);
+ _dl_dprintf(1, "\t%s => %s (%x)\n", rpnt->dyn->libname + (_dl_strlen(_dl_ldsopath)) + 1,
+ rpnt->dyn->libname, rpnt->dyn->loadaddr);
_dl_exit(0);
}
#endif
@@ -624,7 +624,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
_dl_brkp = (unsigned long *) (intptr_t) _dl_find_hash("___brk_addr", NULL, NULL, symbolrel);
-
+
if (_dl_brkp) {
*_dl_brkp = brk_addr;
}
@@ -644,7 +644,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
for (myppnt = tpnt->ppnt, j = 0; j < tpnt->n_phent; j++, myppnt++) {
if (myppnt->p_type == PT_LOAD && !(myppnt->p_flags & PF_W) && tpnt->dynamic_info[DT_TEXTREL]) {
- _dl_mprotect((void *) (tpnt->loadaddr + (myppnt->p_vaddr & PAGE_ALIGN)),
+ _dl_mprotect((void *) (tpnt->loadaddr + (myppnt->p_vaddr & PAGE_ALIGN)),
(myppnt->p_vaddr & ADDR_ALIGN) + (unsigned long) myppnt->p_filesz, LXFLAGS(myppnt->p_flags));
}
}
@@ -654,7 +654,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
#endif
_dl_atexit = (int (*)(void *)) (intptr_t) _dl_find_hash("atexit", NULL, NULL, symbolrel);
#if defined (__SUPPORT_LD_DEBUG__)
- _dl_on_exit = (int (*)(void (*)(int, void *),void*))
+ _dl_on_exit = (int (*)(void (*)(int, void *),void*))
(intptr_t) _dl_find_hash("on_exit", NULL, NULL, symbolrel);
#endif
@@ -663,19 +663,19 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
_dl_debug_state();
for (rpnt = _dl_symbol_tables; rpnt!=NULL&& rpnt->next!=NULL; rpnt=rpnt->next)
- ;
-
+ ;
+
for (;rpnt!=NULL; rpnt=rpnt->prev)
{
- tpnt = rpnt->dyn;
+ tpnt = rpnt->dyn;
- if (tpnt->libtype == program_interpreter)
+ if (tpnt->libtype == program_interpreter)
continue;
/* Apparently crt0/1 for the application is responsible for handling this.
* We only need to run the init/fini for shared libraries
*/
- if (tpnt->libtype == elf_executable)
+ if (tpnt->libtype == elf_executable)
break; /* at this point all shared libs are initialized !! */
if (tpnt->init_flag & INIT_FUNCS_CALLED)
@@ -686,8 +686,8 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt
void (*dl_elf_func) (void);
dl_elf_func = (void (*)(void)) (intptr_t) (tpnt->loadaddr + tpnt->dynamic_info[DT_INIT]);
#if defined (__SUPPORT_LD_DEBUG__)
- if(_dl_debug) _dl_dprintf(_dl_debug_file,"\ncalling init: %s\n\n", tpnt->libname);
-#endif
+ if(_dl_debug) _dl_dprintf(_dl_debug_file,"\ncalling init: %s\n\n", tpnt->libname);
+#endif
(*dl_elf_func) ();
}
if (_dl_atexit && tpnt->dynamic_info[DT_FINI]) {
@@ -767,5 +767,6 @@ static int _dl_suid_ok(void)
return 0;
}
+
#include "hash.c"
#include "readelflib1.c"
diff --git a/ldso/ldso/readelflib1.c b/ldso/ldso/readelflib1.c
index 75c5972bf..95889deef 100644
--- a/ldso/ldso/readelflib1.c
+++ b/ldso/ldso/readelflib1.c
@@ -1,12 +1,11 @@
/* vi: set sw=4 ts=4: */
-/* Program to load an ELF binary on a linux system, and run it
- * after resolving ELF shared library symbols
+/*
+ * This file contains the helper routines to load an ELF shared
+ * library into memory and add the symbol table info to the chain.
*
+ * Copyright (C) 2000-2004 by Erik Andersen <andersen@codpoet.org>
* Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
* David Engel, Hongjiu Lu and Mitch D'Souza
- * Copyright (C) 2001-2004 Erik Andersen
- *
- * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,8 +30,7 @@
*/
-/* This file contains the helper routines to load an ELF sharable
- library into memory and add the symbol table info to the chain. */
+#include "ldso.h"
#ifdef USE_CACHE
@@ -53,7 +51,7 @@ int _dl_map_cache(void)
return 0;
if (_dl_stat(LDSO_CACHE, &st)
- || (fd = _dl_open(LDSO_CACHE, O_RDONLY)) < 0) {
+ || (fd = _dl_open(LDSO_CACHE, O_RDONLY)) < 0) {
_dl_dprintf(2, "%s: can't open cache '%s'\n", _dl_progname, LDSO_CACHE);
_dl_cache_addr = (caddr_t) - 1; /* so we won't try again */
return -1;
@@ -64,21 +62,21 @@ int _dl_map_cache(void)
_dl_close(fd);
if (_dl_mmap_check_error(_dl_cache_addr)) {
_dl_dprintf(2, "%s: can't map cache '%s'\n",
- _dl_progname, LDSO_CACHE);
+ _dl_progname, LDSO_CACHE);
return -1;
}
header = (header_t *) _dl_cache_addr;
if (_dl_cache_size < sizeof(header_t) ||
- _dl_memcmp(header->magic, LDSO_CACHE_MAGIC, LDSO_CACHE_MAGIC_LEN)
- || _dl_memcmp(header->version, LDSO_CACHE_VER, LDSO_CACHE_VER_LEN)
- || _dl_cache_size <
- (sizeof(header_t) + header->nlibs * sizeof(libentry_t))
- || _dl_cache_addr[_dl_cache_size - 1] != '\0')
+ _dl_memcmp(header->magic, LDSO_CACHE_MAGIC, LDSO_CACHE_MAGIC_LEN)
+ || _dl_memcmp(header->version, LDSO_CACHE_VER, LDSO_CACHE_VER_LEN)
+ || _dl_cache_size <
+ (sizeof(header_t) + header->nlibs * sizeof(libentry_t))
+ || _dl_cache_addr[_dl_cache_size - 1] != '\0')
{
_dl_dprintf(2, "%s: cache '%s' is corrupt\n", _dl_progname,
- LDSO_CACHE);
+ LDSO_CACHE);
goto fail;
}
@@ -88,7 +86,7 @@ int _dl_map_cache(void)
for (i = 0; i < header->nlibs; i++) {
if (libent[i].sooffset >= strtabsize ||
- libent[i].liboffset >= strtabsize)
+ libent[i].liboffset >= strtabsize)
{
_dl_dprintf(2, "%s: cache '%s' is corrupt\n", _dl_progname, LDSO_CACHE);
goto fail;
@@ -97,7 +95,7 @@ int _dl_map_cache(void)
return 0;
- fail:
+fail:
_dl_munmap(_dl_cache_addr, _dl_cache_size);
_dl_cache_addr = (caddr_t) - 1;
return -1;
@@ -115,7 +113,6 @@ int _dl_unmap_cache(void)
return 0;
}
-
#endif
/* This function's behavior must exactly match that
@@ -233,13 +230,9 @@ struct elf_resolve *_dl_check_if_named_library_is_loaded(const char *full_libnam
}
-/*
- * Used to return error codes back to dlopen et. al.
- */
-
+/* Used to return error codes back to dlopen et. al. */
unsigned long _dl_error_number;
unsigned long _dl_internal_error_number;
-extern char *_dl_ldsopath;
struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
struct elf_resolve *tpnt, char *full_libname, int trace_loaded_objects)
@@ -301,7 +294,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
#endif
if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
{
- return tpnt1;
+ return tpnt1;
}
}
}
@@ -312,10 +305,10 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
#if defined (__SUPPORT_LD_DEBUG__)
if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path);
#endif
- if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL)
- {
- return tpnt1;
- }
+ if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL)
+ {
+ return tpnt1;
+ }
}
/*
@@ -335,10 +328,10 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
#endif
for (i = 0; i < header->nlibs; i++) {
if ((libent[i].flags == LIB_ELF ||
- libent[i].flags == LIB_ELF_LIBC5) &&
- _dl_strcmp(libname, strs + libent[i].sooffset) == 0 &&
- (tpnt1 = _dl_load_elf_shared_library(secure,
- rpnt, strs + libent[i].liboffset)))
+ libent[i].flags == LIB_ELF_LIBC5) &&
+ _dl_strcmp(libname, strs + libent[i].sooffset) == 0 &&
+ (tpnt1 = _dl_load_elf_shared_library(secure,
+ rpnt, strs + libent[i].liboffset)))
return tpnt1;
}
}
@@ -347,11 +340,11 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
/* Look for libraries wherever the shared library loader
* was installed */
#if defined (__SUPPORT_LD_DEBUG__)
- if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching ldso dir='%s'\n", _dl_ldsopath);
+ if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching ldso dir='%s'\n", _dl_ldsopath);
#endif
if ((tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt)) != NULL)
{
- return tpnt1;
+ return tpnt1;
}
@@ -361,14 +354,14 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt,
if(_dl_debug) _dl_dprintf(_dl_debug_file, "\tsearching full lib path list\n");
#endif
if ((tpnt1 = search_for_named_library(libname, secure,
- UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib:"
- UCLIBC_RUNTIME_PREFIX "usr/lib:"
- UCLIBC_RUNTIME_PREFIX "lib:"
- "/usr/lib:"
- "/lib", rpnt)
- ) != NULL)
+ UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib:"
+ UCLIBC_RUNTIME_PREFIX "usr/lib:"
+ UCLIBC_RUNTIME_PREFIX "lib:"
+ "/usr/lib:"
+ "/lib", rpnt)
+ ) != NULL)
{
- return tpnt1;
+ return tpnt1;
}
goof:
@@ -449,8 +442,8 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
return NULL;
}
- header = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+ header = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
if (_dl_mmap_check_error(header)) {
_dl_dprintf(2, "%s: can't map '%s'\n", _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
@@ -461,12 +454,12 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
_dl_read(infile, header, PAGE_SIZE);
epnt = (ElfW(Ehdr) *) (intptr_t) header;
if (epnt->e_ident[0] != 0x7f ||
- epnt->e_ident[1] != 'E' ||
- epnt->e_ident[2] != 'L' ||
- epnt->e_ident[3] != 'F')
+ epnt->e_ident[1] != 'E' ||
+ epnt->e_ident[2] != 'L' ||
+ epnt->e_ident[3] != 'F')
{
_dl_dprintf(2, "%s: '%s' is not an ELF file\n", _dl_progname,
- libname);
+ libname);
_dl_internal_error_number = LD_ERROR_NOTELF;
_dl_close(infile);
_dl_munmap(header, PAGE_SIZE);
@@ -475,14 +468,14 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if ((epnt->e_type != ET_DYN) || (epnt->e_machine != MAGIC1
#ifdef MAGIC2
- && epnt->e_machine != MAGIC2
+ && epnt->e_machine != MAGIC2
#endif
- ))
+ ))
{
_dl_internal_error_number =
- (epnt->e_type != ET_DYN ? LD_ERROR_NOTDYN : LD_ERROR_NOTMAGIC);
+ (epnt->e_type != ET_DYN ? LD_ERROR_NOTDYN : LD_ERROR_NOTMAGIC);
_dl_dprintf(2, "%s: '%s' is not an ELF executable for " ELF_TARGET
- "\n", _dl_progname, libname);
+ "\n", _dl_progname, libname);
_dl_close(infile);
_dl_munmap(header, PAGE_SIZE);
return NULL;
@@ -496,7 +489,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (ppnt->p_type == PT_DYNAMIC) {
if (dynamic_addr)
_dl_dprintf(2, "%s: '%s' has more than one dynamic section\n",
- _dl_progname, libname);
+ _dl_progname, libname);
dynamic_addr = ppnt->p_vaddr;
dynamic_size = ppnt->p_filesz;
};
@@ -525,7 +518,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
flags |= MAP_FIXED;
status = (char *) _dl_mmap((char *) (piclib ? 0 : minvma),
- maxvma - minvma, PROT_NONE, flags | MAP_ANONYMOUS, -1, 0);
+ maxvma - minvma, PROT_NONE, flags | MAP_ANONYMOUS, -1, 0);
if (_dl_mmap_check_error(status)) {
_dl_dprintf(2, "%s: can't map %s\n", _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
@@ -555,13 +548,13 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
char *cpnt;
status = (char *) _dl_mmap((char *) ((piclib ? libaddr : 0) +
- (ppnt->p_vaddr & PAGE_ALIGN)), (ppnt->p_vaddr & ADDR_ALIGN)
- + ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags, infile,
- ppnt->p_offset & OFFS_ALIGN);
+ (ppnt->p_vaddr & PAGE_ALIGN)), (ppnt->p_vaddr & ADDR_ALIGN)
+ + ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags, infile,
+ ppnt->p_offset & OFFS_ALIGN);
if (_dl_mmap_check_error(status)) {
_dl_dprintf(2, "%s: can't map '%s'\n",
- _dl_progname, libname);
+ _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
_dl_munmap((char *) libaddr, maxvma - minvma);
_dl_close(infile);
@@ -571,7 +564,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
/* Pad the last page with zeroes. */
cpnt = (char *) (status + (ppnt->p_vaddr & ADDR_ALIGN) +
- ppnt->p_filesz);
+ ppnt->p_filesz);
while (((unsigned long) cpnt) & ADDR_ALIGN)
*cpnt++ = 0;
@@ -585,14 +578,14 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (map_size < ppnt->p_vaddr + ppnt->p_memsz)
status = (char *) _dl_mmap((char *) map_size +
- (piclib ? libaddr : 0),
- ppnt->p_vaddr + ppnt->p_memsz - map_size,
- LXFLAGS(ppnt->p_flags), flags | MAP_ANONYMOUS, -1, 0);
+ (piclib ? libaddr : 0),
+ ppnt->p_vaddr + ppnt->p_memsz - map_size,
+ LXFLAGS(ppnt->p_flags), flags | MAP_ANONYMOUS, -1, 0);
} else
status = (char *) _dl_mmap((char *) (ppnt->p_vaddr & PAGE_ALIGN)
- + (piclib ? libaddr : 0), (ppnt->p_vaddr & ADDR_ALIGN) +
- ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags,
- infile, ppnt->p_offset & OFFS_ALIGN);
+ + (piclib ? libaddr : 0), (ppnt->p_vaddr & ADDR_ALIGN) +
+ ppnt->p_filesz, LXFLAGS(ppnt->p_flags), flags,
+ infile, ppnt->p_offset & OFFS_ALIGN);
if (_dl_mmap_check_error(status)) {
_dl_dprintf(2, "%s: can't map '%s'\n", _dl_progname, libname);
_dl_internal_error_number = LD_ERROR_MMAP_FAILED;
@@ -626,8 +619,8 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (!dynamic_addr) {
_dl_internal_error_number = LD_ERROR_NODYNAMIC;
_dl_dprintf(2, "%s: '%s' is missing a dynamic section\n",
- _dl_progname, libname);
- _dl_munmap(header, PAGE_SIZE);
+ _dl_progname, libname);
+ _dl_munmap(header, PAGE_SIZE);
return NULL;
}
@@ -676,9 +669,9 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
for (i = 0; i < epnt->e_phnum; i++, ppnt++) {
if (ppnt->p_type == PT_LOAD && !(ppnt->p_flags & PF_W))
_dl_mprotect((void *) ((piclib ? libaddr : 0) +
- (ppnt->p_vaddr & PAGE_ALIGN)),
- (ppnt->p_vaddr & ADDR_ALIGN) + (unsigned long) ppnt->p_filesz,
- PROT_READ | PROT_WRITE | PROT_EXEC);
+ (ppnt->p_vaddr & PAGE_ALIGN)),
+ (ppnt->p_vaddr & ADDR_ALIGN) + (unsigned long) ppnt->p_filesz,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
}
#else
_dl_dprintf(_dl_debug_file, "Can't modify %s's text section. Use GCC option -fPIC for shared objects, please.\n",libname);
@@ -687,7 +680,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
}
tpnt = _dl_add_elf_hash_table(libname, (char *) libaddr, dynamic_info,
- dynamic_addr, dynamic_size);
+ dynamic_addr, dynamic_size);
tpnt->ppnt = (ElfW(Phdr) *)(intptr_t) (tpnt->loadaddr + epnt->e_phoff);
tpnt->n_phent = epnt->e_phnum;
@@ -716,7 +709,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
if (lpnt) {
lpnt = (unsigned long *) (dynamic_info[DT_PLTGOT] +
- ((int) libaddr));
+ ((int) libaddr));
INIT_GOT(lpnt, tpnt);
};
@@ -744,10 +737,10 @@ void _dl_dprintf(int fd, const char *fmt, ...)
static char *buf;
buf = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
if (_dl_mmap_check_error(buf)) {
- _dl_write(fd, "mmap of a spare page failed!\n", 29);
- _dl_exit(20);
+ _dl_write(fd, "mmap of a spare page failed!\n", 29);
+ _dl_exit(20);
}
start = ptr = buf;
@@ -773,38 +766,38 @@ void _dl_dprintf(int fd, const char *fmt, ...)
_dl_write(fd, start, _dl_strlen(start));
switch (*ptr++) {
- case 's':
- string = va_arg(args, char *);
-
- if (!string)
+ case 's':
+ string = va_arg(args, char *);
+
+ if (!string)
+ _dl_write(fd, "(null)", 6);
+ else
+ _dl_write(fd, string, _dl_strlen(string));
+ break;
+
+ case 'i':
+ case 'd':
+ {
+ char tmp[22];
+ num = va_arg(args, int);
+
+ string = _dl_simple_ltoa(tmp, num);
+ _dl_write(fd, string, _dl_strlen(string));
+ break;
+ }
+ case 'x':
+ case 'X':
+ {
+ char tmp[22];
+ num = va_arg(args, int);
+
+ string = _dl_simple_ltoahex(tmp, num);
+ _dl_write(fd, string, _dl_strlen(string));
+ break;
+ }
+ default:
_dl_write(fd, "(null)", 6);
- else
- _dl_write(fd, string, _dl_strlen(string));
- break;
-
- case 'i':
- case 'd':
- {
- char tmp[22];
- num = va_arg(args, int);
-
- string = _dl_simple_ltoa(tmp, num);
- _dl_write(fd, string, _dl_strlen(string));
- break;
- }
- case 'x':
- case 'X':
- {
- char tmp[22];
- num = va_arg(args, int);
-
- string = _dl_simple_ltoahex(tmp, num);
- _dl_write(fd, string, _dl_strlen(string));
- break;
- }
- default:
- _dl_write(fd, "(null)", 6);
- break;
+ break;
}
start = ptr;
@@ -916,8 +909,8 @@ int _dl_fixup(struct dyn_elf *rpnt, int flag)
return goof;
tpnt->init_flag |= COPY_RELOCS_DONE;
goof += _dl_parse_copy_information(rpnt,
- tpnt->dynamic_info[DT_RELOC_TABLE_ADDR],
- tpnt->dynamic_info[DT_RELOC_TABLE_SIZE], 0);
+ tpnt->dynamic_info[DT_RELOC_TABLE_ADDR],
+ tpnt->dynamic_info[DT_RELOC_TABLE_SIZE], 0);
#if defined (__SUPPORT_LD_DEBUG__)
if(_dl_debug) {
diff --git a/ldso/ldso/startup.c b/ldso/ldso/startup.c
index 0da911f8c..6a131633a 100644
--- a/ldso/ldso/startup.c
+++ b/ldso/ldso/startup.c
@@ -185,16 +185,16 @@ DL_BOOT(unsigned long args)
/* Check the ELF header to make sure everything looks ok. */
if (!header || header->e_ident[EI_CLASS] != ELFCLASS32 ||
- header->e_ident[EI_VERSION] != EV_CURRENT
+ header->e_ident[EI_VERSION] != EV_CURRENT
#if !defined(__powerpc__) && !defined(__mips__) && !defined(__sh__)
- || _dl_strncmp((void *) header, ELFMAGIC, SELFMAG) != 0
+ || _dl_strncmp((void *) header, ELFMAGIC, SELFMAG) != 0
#else
- || header->e_ident[EI_MAG0] != ELFMAG0
- || header->e_ident[EI_MAG1] != ELFMAG1
- || header->e_ident[EI_MAG2] != ELFMAG2
- || header->e_ident[EI_MAG3] != ELFMAG3
+ || header->e_ident[EI_MAG0] != ELFMAG0
+ || header->e_ident[EI_MAG1] != ELFMAG1
+ || header->e_ident[EI_MAG2] != ELFMAG2
+ || header->e_ident[EI_MAG3] != ELFMAG3
#endif
- ) {
+ ) {
SEND_STDERR("Invalid ELF header\n");
_dl_exit(0);
}
@@ -209,28 +209,28 @@ DL_BOOT(unsigned long args)
* happen to know what that is for this architecture. If not,
* we can always read stuff out of the ELF file to find it... */
#if defined(__i386__)
- __asm__("\tmovl %%ebx,%0\n\t":"=a"(got));
+ __asm__("\tmovl %%ebx,%0\n\t":"=a"(got));
#elif defined(__m68k__)
- __asm__("movel %%a5,%0":"=g"(got));
+ __asm__("movel %%a5,%0":"=g"(got));
#elif defined(__sparc__)
- __asm__("\tmov %%l7,%0\n\t":"=r"(got));
+ __asm__("\tmov %%l7,%0\n\t":"=r"(got));
#elif defined(__arm__)
- __asm__("\tmov %0, r10\n\t":"=r"(got));
+ __asm__("\tmov %0, r10\n\t":"=r"(got));
#elif defined(__powerpc__)
- __asm__("\tbl _GLOBAL_OFFSET_TABLE_-4@local\n\t":"=l"(got));
+ __asm__("\tbl _GLOBAL_OFFSET_TABLE_-4@local\n\t":"=l"(got));
#elif defined(__mips__)
- __asm__("\tmove %0, $28\n\tsubu %0,%0,0x7ff0\n\t":"=r"(got));
+ __asm__("\tmove %0, $28\n\tsubu %0,%0,0x7ff0\n\t":"=r"(got));
#elif defined(__sh__) && !defined(__SH5__)
- __asm__(
-" mov.l 1f, %0\n"
-" mova 1f, r0\n"
-" bra 2f\n"
-" add r0, %0\n"
-" .balign 4\n"
-"1: .long _GLOBAL_OFFSET_TABLE_\n"
-"2:" : "=r" (got) : : "r0");
+ __asm__(
+ " mov.l 1f, %0\n"
+ " mova 1f, r0\n"
+ " bra 2f\n"
+ " add r0, %0\n"
+ " .balign 4\n"
+ "1: .long _GLOBAL_OFFSET_TABLE_\n"
+ "2:" : "=r" (got) : : "r0");
#elif defined(__cris__)
- __asm__("\tmove.d $pc,%0\n\tsub.d .:GOTOFF,%0\n\t":"=r"(got));
+ __asm__("\tmove.d $pc,%0\n\tsub.d .:GOTOFF,%0\n\t":"=r"(got));
#else
/* Do things the slow way in C */
{
@@ -252,7 +252,7 @@ DL_BOOT(unsigned long args)
SEND_STDERR("missing dynamic linking information section \n");
_dl_exit(0);
- found_dynamic:
+found_dynamic:
dynamic = (Elf32_Dyn *) (shdr->sh_offset + (char *) header);
/* Find where PT_LOAD is hiding */
@@ -265,7 +265,7 @@ DL_BOOT(unsigned long args)
SEND_STDERR("missing loadable program segment\n");
_dl_exit(0);
- found_pt_load:
+found_pt_load:
/* Now (finally) find where DT_PLTGOT is hiding */
tx_reloc = pt_load->p_vaddr - pt_load->p_offset;
for (; DT_NULL != dynamic->d_tag; ++dynamic) {
@@ -276,7 +276,7 @@ DL_BOOT(unsigned long args)
SEND_STDERR("missing global offset table\n");
_dl_exit(0);
- found_got:
+found_got:
got = (unsigned long *) (dynamic->d_un.d_val - tx_reloc +
(char *) header);
}
@@ -306,7 +306,7 @@ DL_BOOT(unsigned long args)
#ifdef __UCLIBC_PIE_SUPPORT__
/* Find the runtime load address of the main executable, this may be
- * different from what the ELF header says for ET_DYN/PIE executables.
+ * different from what the ELF header says for ET_DYN/PIE executables.
*/
{
ElfW(Phdr) *ppnt;
@@ -462,14 +462,14 @@ DL_BOOT(unsigned long args)
if (ppnt->p_type == PT_LOAD && !(ppnt->p_flags & PF_W))
#ifndef __UCLIBC_PIE_SUPPORT__
_dl_mprotect((void *) (ppnt->p_vaddr & PAGE_ALIGN),
- (ppnt->p_vaddr & ADDR_ALIGN) +
- (unsigned long) ppnt->p_filesz,
- PROT_READ | PROT_WRITE | PROT_EXEC);
+ (ppnt->p_vaddr & ADDR_ALIGN) +
+ (unsigned long) ppnt->p_filesz,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
#else
- _dl_mprotect((void *) ((ppnt->p_vaddr + app_tpnt->loadaddr) & PAGE_ALIGN),
- ((ppnt->p_vaddr + app_tpnt->loadaddr) & ADDR_ALIGN) +
- (unsigned long) ppnt->p_filesz,
- PROT_READ | PROT_WRITE | PROT_EXEC);
+ _dl_mprotect((void *) ((ppnt->p_vaddr + app_tpnt->loadaddr) & PAGE_ALIGN),
+ ((ppnt->p_vaddr + app_tpnt->loadaddr) & ADDR_ALIGN) +
+ (unsigned long) ppnt->p_filesz,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
#endif
}
}
@@ -501,9 +501,9 @@ DL_BOOT(unsigned long args)
rel_addr = (indx ? tpnt->dynamic_info[DT_JMPREL] : tpnt->
- dynamic_info[DT_RELOC_TABLE_ADDR]);
+ dynamic_info[DT_RELOC_TABLE_ADDR]);
rel_size = (indx ? tpnt->dynamic_info[DT_PLTRELSZ] : tpnt->
- dynamic_info[DT_RELOC_TABLE_SIZE]);
+ dynamic_info[DT_RELOC_TABLE_SIZE]);
if (!rel_addr)
continue;