[git commit ldso-future] ldso.c: move _dl_strdup and _dl_dprintf from dl-elf.c

Peter S. Mazinger ps.m at gmx.net
Mon Apr 11 11:27:03 UTC 2011


commit: http://git.uclibc.org/uClibc/commit/?id=abd8ac564fb6ab661c91232388b54c2e518bd12d
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/ldso-future

Signed-off-by: Peter S. Mazinger <ps.m at gmx.net>
---
 ldso/ldso/dl-elf.c |  105 ----------------------------------------------------
 ldso/ldso/ldso.c   |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 102 insertions(+), 108 deletions(-)

diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 97fa9a3..8c0a954 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -939,111 +939,6 @@ int _dl_fixup(struct dyn_elf *rpnt, int now_flag)
 	return goof;
 }
 
-#ifdef IS_IN_rtld
-/* Minimal printf which handles only %s, %d, and %x */
-static void _dl_dprintf(int fd, const char *__restrict fmt, ...)
-{
-#if __WORDSIZE > 32
-	long int num;
-#else
-	int num;
-#endif
-	va_list args;
-	char *start, *ptr, *string;
-	char *buf;
-
-	if (!fmt)
-		return;
-
-	buf = _dl_mmap((void *) 0, _dl_pagesize, PROT_READ | PROT_WRITE,
-			MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-	if (_dl_mmap_check_error(buf)) {
-		_dl_write(fd, "mmap of a spare page failed!\n", 29);
-		_dl_exit(20);
-	}
-
-	start = ptr = buf;
-
-	if (_dl_strlen(fmt) >= (_dl_pagesize - 1)) {
-		_dl_write(fd, "overflow\n", 11);
-		_dl_exit(20);
-	}
-
-	_dl_strcpy(buf, fmt);
-	va_start(args, fmt);
-
-	while (start) {
-		while (*ptr != '%' && *ptr) {
-			ptr++;
-		}
-
-		if (*ptr == '%') {
-			*ptr++ = '\0';
-			_dl_write(fd, start, _dl_strlen(start));
-
-			switch (*ptr++) {
-				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];
-#if __WORDSIZE > 32
-						num = va_arg(args, long int);
-#else
-						num = va_arg(args, int);
-#endif
-						string = _dl_simple_ltoa(tmp, num);
-						_dl_write(fd, string, _dl_strlen(string));
-						break;
-					}
-				case 'x':
-				case 'p':
-					{
-						char tmp[22];
-#if __WORDSIZE > 32
-						num = va_arg(args, long int);
-#else
-						num = va_arg(args, int);
-#endif
-						string = _dl_simple_ltoahex(tmp, num);
-						_dl_write(fd, string, _dl_strlen(string));
-						break;
-					}
-				default:
-					_dl_write(fd, "(bad format)", 12);
-					break;
-			}
-
-			start = ptr;
-		} else {
-			_dl_write(fd, start, _dl_strlen(start));
-			start = NULL;
-		}
-	}
-	_dl_munmap(buf, _dl_pagesize);
-	return;
-}
-
-static char *_dl_strdup(const char *string)
-{
-	char *retval;
-	int len;
-
-	len = _dl_strlen(string);
-	retval = _dl_malloc(len + 1);
-	_dl_strcpy(retval, string);
-	return retval;
-}
-#endif
-
 unsigned int _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, ElfW(Word) dynamic_info[],
                                     void *debug_addr, DL_LOADADDR_TYPE load_off)
 {
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index dbade03..823e529 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -34,7 +34,108 @@
 
 #include <unsecvars.h>
 
-static void _dl_dprintf(int, const char *__restrict, ...);
+/* Minimal printf which handles only %s, %d, %x and %p */
+static void _dl_dprintf(int fd, const char *__restrict fmt, ...)
+{
+#if __WORDSIZE > 32
+	long int num;
+#else
+	int num;
+#endif
+	va_list args;
+	char *start, *ptr, *string;
+	char *buf;
+
+	if (!fmt)
+		return;
+
+	buf = _dl_mmap((void *) 0, _dl_pagesize, PROT_READ | PROT_WRITE,
+			MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+	if (_dl_mmap_check_error(buf)) {
+		_dl_write(fd, "mmap of a spare page failed!\n", 29);
+		_dl_exit(20);
+	}
+
+	start = ptr = buf;
+
+	if (_dl_strlen(fmt) >= (_dl_pagesize - 1)) {
+		_dl_write(fd, "overflow\n", 11);
+		_dl_exit(20);
+	}
+
+	_dl_strcpy(buf, fmt);
+	va_start(args, fmt);
+
+	while (start) {
+		while (*ptr != '%' && *ptr) {
+			ptr++;
+		}
+
+		if (*ptr == '%') {
+			*ptr++ = '\0';
+			_dl_write(fd, start, _dl_strlen(start));
+
+			switch (*ptr++) {
+				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];
+#if __WORDSIZE > 32
+						num = va_arg(args, long int);
+#else
+						num = va_arg(args, int);
+#endif
+						string = _dl_simple_ltoa(tmp, num);
+						_dl_write(fd, string, _dl_strlen(string));
+						break;
+					}
+				case 'x':
+				case 'p':
+					{
+						char tmp[22];
+#if __WORDSIZE > 32
+						num = va_arg(args, long int);
+#else
+						num = va_arg(args, int);
+#endif
+						string = _dl_simple_ltoahex(tmp, num);
+						_dl_write(fd, string, _dl_strlen(string));
+						break;
+					}
+				default:
+					_dl_write(fd, "(bad format)", 12);
+					break;
+			}
+
+			start = ptr;
+		} else {
+			_dl_write(fd, start, _dl_strlen(start));
+			start = NULL;
+		}
+	}
+	_dl_munmap(buf, _dl_pagesize);
+	return;
+}
+
+static __attribute_noinline__ char *_dl_strdup(const char *string)
+{
+	char *retval;
+	int len;
+
+	len = _dl_strlen(string);
+	retval = _dl_malloc(len + 1);
+	_dl_strcpy(retval, string);
+	return retval;
+}
 
 /* Pull in common debug code */
 #include "dl-debug.c"
@@ -110,8 +211,6 @@ uintptr_t __guard attribute_relro;
 # endif
 #endif
 
-static __attribute_noinline__ char *_dl_strdup(const char *);
-
 static __attribute_noinline__ char *_dl_getenv(const char *symbol, char **envp)
 {
 	char *pnt;
-- 
1.7.3.4



More information about the uClibc-cvs mailing list