[uClibc-cvs] uClibc/ldso/ldso hash.c, 1.15, 1.16 ldso.c, 1.87, 1.88 readelflib1.c, 1.61, 1.62 startup.c, 1.2, 1.3

Erik Andersen andersen at uclibc.org
Sun Feb 8 10:58:02 UTC 2004


Update of /var/cvs/uClibc/ldso/ldso
In directory nail:/tmp/cvs-serv11848

Modified Files:
	hash.c ldso.c readelflib1.c startup.c 
Log Message:
Cleanup whitespace and formatting


Index: readelflib1.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/readelflib1.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- readelflib1.c	7 Feb 2004 10:12:25 -0000	1.61
+++ readelflib1.c	8 Feb 2004 10:57:59 -0000	1.62
@@ -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 at 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 @@
 		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 @@
 	_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 @@
 
 	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 @@
 
 	return 0;
 
-  fail:
+fail:
 	_dl_munmap(_dl_cache_addr, _dl_cache_size);
 	_dl_cache_addr = (caddr_t) - 1;
 	return -1;
@@ -115,7 +113,6 @@
 
 	return 0;
 }
-
 #endif
 
 /* This function's behavior must exactly match that
@@ -233,13 +230,9 @@
 }
 
 
-/*
- * 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 @@
 #endif
 				if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
 				{
-				    return tpnt1;
+					return tpnt1;
 				}
 			}
 		}
@@ -312,10 +305,10 @@
 #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 @@
 #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 @@
 	/* 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 @@
 	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 @@
 		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 @@
 	_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 @@
 
 	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 @@
 		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 @@
 		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 @@
 				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 @@
 
 				/* 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 @@
 
 				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 @@
 	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 @@
 		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 @@
 	}
 
 	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 @@
 
 	if (lpnt) {
 		lpnt = (unsigned long *) (dynamic_info[DT_PLTGOT] +
-			((int) libaddr));
+				((int) libaddr));
 		INIT_GOT(lpnt, tpnt);
 	};
 
@@ -744,10 +737,10 @@
 	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 @@
 			_dl_write(fd, start, _dl_strlen(start));
 
 			switch (*ptr++) {
-			case 's':
-				string = va_arg(args, char *);
+				case 's':
+					string = va_arg(args, char *);
 
-				if (!string)
-					_dl_write(fd, "(null)", 6);
-				else
-					_dl_write(fd, string, _dl_strlen(string));
-				break;
+					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);
+				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_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;
+						string = _dl_simple_ltoahex(tmp, num);
+						_dl_write(fd, string, _dl_strlen(string));
+						break;
+					}
+				default:
+					_dl_write(fd, "(null)", 6);
+					break;
 			}
 
 			start = ptr;
@@ -916,8 +909,8 @@
 		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) {

Index: hash.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/hash.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- hash.c	7 Feb 2004 12:05:16 -0000	1.15
+++ hash.c	8 Feb 2004 10:57:59 -0000	1.16
@@ -79,7 +79,7 @@
 
 	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 @@
 					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;
 				}
 			}
 		}

Index: ldso.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/ldso.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -d -r1.87 -r1.88
--- ldso.c	8 Feb 2004 07:57:37 -0000	1.87
+++ ldso.c	8 Feb 2004 10:57:59 -0000	1.88
@@ -104,8 +104,8 @@
 
 
 #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 @@
 #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 @@
 		}
 
 		/* 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 @@
 				}
 			}
 
-			/* 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 @@
 			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 @@
 	_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);
+		const char *dl_debug_output;
 
-	  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());
+		dl_debug_output = _dl_getenv("LD_DEBUG_OUTPUT", envp);
 
-	    len1 = _dl_strlen(dl_debug_output);
-	    len2 = _dl_strlen(tmp1);
+		if (dl_debug_output)
+		{
+			char tmp[22], *tmp1, *filename;
+			int len1, len2;
 
-	    filename = _dl_malloc(len1+len2+2);
+			_dl_memset(tmp, 0, sizeof(tmp));
+			tmp1=_dl_simple_ltoa( tmp, (unsigned long)_dl_getpid());
 
-	    if (filename)
-	    {
-	      _dl_strcpy (filename, dl_debug_output);
-	      filename[len1] = '.';
-	      _dl_strcpy (&filename[len1+1], tmp1);
+			len1 = _dl_strlen(dl_debug_output);
+			len2 = _dl_strlen(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);
-	      }
-	    }
-	  }
+			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 @@
 	_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 @@
 #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 @@
 #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 @@
 		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 @@
 						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 @@
 #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 @@
 #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 @@
 	}
 #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 @@
 					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 @@
 #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 @@
 
 	/*
 	 * 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 @@
 #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 @@
 
 
 	_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 @@
 		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 @@
 #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 @@
 	_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_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 @@
 	return 0;
 }
 
+
 #include "hash.c"
 #include "readelflib1.c"

Index: startup.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/startup.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- startup.c	7 Feb 2004 12:26:09 -0000	1.2
+++ startup.c	8 Feb 2004 10:57:59 -0000	1.3
@@ -185,16 +185,16 @@
 
 	/* 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 @@
 	 * 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 at local\n\t":"=l"(got));
+	__asm__("\tbl _GLOBAL_OFFSET_TABLE_-4 at 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 @@
 		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 @@
 		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 @@
 		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 @@
 
 #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 @@
 				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 @@
 
 
 		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;




More information about the uClibc-cvs mailing list