summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-06-15 20:14:44 +0000
committerEric Andersen <andersen@codepoet.org>2001-06-15 20:14:44 +0000
commitf5d08871d3ecec7a6daf3ec0dabcdf440b614e02 (patch)
tree4f837821303376f538e0c5b3322b36ae9bbc1520
parent5792927ed57ac3f6c655c25a4cd9d1f3f1ff5549 (diff)
Make some nice SEND_ADDRESS_STDERR and SEND_NUMBER_STDERR macros that
operate inline, to help when debugging ldso (i.e. before we can do things like function calls). -Erik
-rw-r--r--ldso/ldso/boot1.c9
-rw-r--r--ldso/ldso/hash.h18
-rw-r--r--ldso/ldso/ld-uClibc.c9
-rw-r--r--ldso/ldso/ld_hash.h18
-rw-r--r--ldso/ldso/ld_string.h6
-rw-r--r--ldso/ldso/ldso.c9
-rw-r--r--ldso/ldso/string.h6
7 files changed, 49 insertions, 26 deletions
diff --git a/ldso/ldso/boot1.c b/ldso/ldso/boot1.c
index 1da2b3466..c6dc5f628 100644
--- a/ldso/ldso/boot1.c
+++ b/ldso/ldso/boot1.c
@@ -219,11 +219,9 @@ void _dl_boot(unsigned int args)
}
#ifdef DL_DEBUG
SEND_STDERR("ELF header =");
- SEND_STDERR(_dl_simple_ltoahex(load_addr));
- SEND_STDERR("\n");
+ SEND_ADDRESS_STDERR(load_addr, 1);
#endif
-
/* Locate the global offset table. Since this code must be PIC
* we can take advantage of the magic offset register, if we
* happen to know what that is for this architecture. If not,
@@ -288,8 +286,7 @@ found_got:
dpnt = (Elf32_Dyn *) (*got + load_addr);
#ifdef DL_DEBUG
SEND_STDERR("First Dynamic section entry=");
- SEND_STDERR(_dl_simple_ltoahex((unsigned long)dpnt));
- SEND_STDERR("\n");
+ SEND_ADDRESS_STDERR(dpnt, 1);
#endif
@@ -1012,7 +1009,7 @@ void *_dl_malloc(int size)
#ifdef DL_DEBUG
SEND_STDERR("malloc: request for ");
- SEND_STDERR(_dl_simple_itoa(size));
+ SEND_NUMBER_STDERR(size, 0);
SEND_STDERR(" bytes\n");
#endif
diff --git a/ldso/ldso/hash.h b/ldso/ldso/hash.h
index cc1c56c42..c7fee6c97 100644
--- a/ldso/ldso/hash.h
+++ b/ldso/ldso/hash.h
@@ -82,6 +82,24 @@ extern int _dl_linux_dynamic_link(void);
#else
#define SEND_STDERR(X) _dl_write(2, X, _dl_strlen_inline(X));
#endif
+
+#define SEND_ADDRESS_STDERR(X, add_a_newline) { \
+ char tmp[13]; \
+ _dl_write(2, _dl_simple_ltoahex_inline( tmp, (unsigned long)(X)), 12); \
+ if (add_a_newline) { \
+ tmp[0]='\n'; \
+ _dl_write(2, tmp, 1); \
+ } \
+};
+
+#define SEND_NUMBER_STDERR(X, add_a_newline) { \
+ char tmp[13]; \
+ _dl_write(2, (void *)_dl_simple_ltoahex_inline( tmp, (unsigned long)(X)), 12); \
+ if (add_a_newline) { \
+ tmp[0]='\n'; \
+ _dl_write(2, tmp, 1); \
+ } \
+};
extern int _dl_fdprintf(int, const char *, ...);
extern char * _dl_library_path;
extern char * _dl_not_lazy;
diff --git a/ldso/ldso/ld-uClibc.c b/ldso/ldso/ld-uClibc.c
index 1da2b3466..c6dc5f628 100644
--- a/ldso/ldso/ld-uClibc.c
+++ b/ldso/ldso/ld-uClibc.c
@@ -219,11 +219,9 @@ void _dl_boot(unsigned int args)
}
#ifdef DL_DEBUG
SEND_STDERR("ELF header =");
- SEND_STDERR(_dl_simple_ltoahex(load_addr));
- SEND_STDERR("\n");
+ SEND_ADDRESS_STDERR(load_addr, 1);
#endif
-
/* Locate the global offset table. Since this code must be PIC
* we can take advantage of the magic offset register, if we
* happen to know what that is for this architecture. If not,
@@ -288,8 +286,7 @@ found_got:
dpnt = (Elf32_Dyn *) (*got + load_addr);
#ifdef DL_DEBUG
SEND_STDERR("First Dynamic section entry=");
- SEND_STDERR(_dl_simple_ltoahex((unsigned long)dpnt));
- SEND_STDERR("\n");
+ SEND_ADDRESS_STDERR(dpnt, 1);
#endif
@@ -1012,7 +1009,7 @@ void *_dl_malloc(int size)
#ifdef DL_DEBUG
SEND_STDERR("malloc: request for ");
- SEND_STDERR(_dl_simple_itoa(size));
+ SEND_NUMBER_STDERR(size, 0);
SEND_STDERR(" bytes\n");
#endif
diff --git a/ldso/ldso/ld_hash.h b/ldso/ldso/ld_hash.h
index cc1c56c42..c7fee6c97 100644
--- a/ldso/ldso/ld_hash.h
+++ b/ldso/ldso/ld_hash.h
@@ -82,6 +82,24 @@ extern int _dl_linux_dynamic_link(void);
#else
#define SEND_STDERR(X) _dl_write(2, X, _dl_strlen_inline(X));
#endif
+
+#define SEND_ADDRESS_STDERR(X, add_a_newline) { \
+ char tmp[13]; \
+ _dl_write(2, _dl_simple_ltoahex_inline( tmp, (unsigned long)(X)), 12); \
+ if (add_a_newline) { \
+ tmp[0]='\n'; \
+ _dl_write(2, tmp, 1); \
+ } \
+};
+
+#define SEND_NUMBER_STDERR(X, add_a_newline) { \
+ char tmp[13]; \
+ _dl_write(2, (void *)_dl_simple_ltoahex_inline( tmp, (unsigned long)(X)), 12); \
+ if (add_a_newline) { \
+ tmp[0]='\n'; \
+ _dl_write(2, tmp, 1); \
+ } \
+};
extern int _dl_fdprintf(int, const char *, ...);
extern char * _dl_library_path;
extern char * _dl_not_lazy;
diff --git a/ldso/ldso/ld_string.h b/ldso/ldso/ld_string.h
index 4a3462683..46de5320f 100644
--- a/ldso/ldso/ld_string.h
+++ b/ldso/ldso/ld_string.h
@@ -170,10 +170,9 @@ static inline char *_dl_get_last_path_component_inline(char *path)
/* Early on, we can't call printf, so use this to print out
* numbers using the SEND_STDERR() macro */
-static inline char *_dl_simple_ltoa_inline(unsigned long i)
+static inline char *_dl_simple_ltoa_inline(char * local, unsigned long i)
{
/* 21 digits plus null terminator, good for 64-bit or smaller ints */
- static char local[22];
char *p = &local[21];
*p-- = '\0';
do {
@@ -183,10 +182,9 @@ static inline char *_dl_simple_ltoa_inline(unsigned long i)
return p + 1;
}
-static inline char *_dl_simple_ltoahex(unsigned long i)
+static inline char *_dl_simple_ltoahex_inline(char * local, unsigned long i)
{
/* 21 digits plus null terminator, good for 64-bit or smaller ints */
- static char local[22];
char *p = &local[21];
*p-- = '\0';
do {
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index 1da2b3466..c6dc5f628 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -219,11 +219,9 @@ void _dl_boot(unsigned int args)
}
#ifdef DL_DEBUG
SEND_STDERR("ELF header =");
- SEND_STDERR(_dl_simple_ltoahex(load_addr));
- SEND_STDERR("\n");
+ SEND_ADDRESS_STDERR(load_addr, 1);
#endif
-
/* Locate the global offset table. Since this code must be PIC
* we can take advantage of the magic offset register, if we
* happen to know what that is for this architecture. If not,
@@ -288,8 +286,7 @@ found_got:
dpnt = (Elf32_Dyn *) (*got + load_addr);
#ifdef DL_DEBUG
SEND_STDERR("First Dynamic section entry=");
- SEND_STDERR(_dl_simple_ltoahex((unsigned long)dpnt));
- SEND_STDERR("\n");
+ SEND_ADDRESS_STDERR(dpnt, 1);
#endif
@@ -1012,7 +1009,7 @@ void *_dl_malloc(int size)
#ifdef DL_DEBUG
SEND_STDERR("malloc: request for ");
- SEND_STDERR(_dl_simple_itoa(size));
+ SEND_NUMBER_STDERR(size, 0);
SEND_STDERR(" bytes\n");
#endif
diff --git a/ldso/ldso/string.h b/ldso/ldso/string.h
index 4a3462683..46de5320f 100644
--- a/ldso/ldso/string.h
+++ b/ldso/ldso/string.h
@@ -170,10 +170,9 @@ static inline char *_dl_get_last_path_component_inline(char *path)
/* Early on, we can't call printf, so use this to print out
* numbers using the SEND_STDERR() macro */
-static inline char *_dl_simple_ltoa_inline(unsigned long i)
+static inline char *_dl_simple_ltoa_inline(char * local, unsigned long i)
{
/* 21 digits plus null terminator, good for 64-bit or smaller ints */
- static char local[22];
char *p = &local[21];
*p-- = '\0';
do {
@@ -183,10 +182,9 @@ static inline char *_dl_simple_ltoa_inline(unsigned long i)
return p + 1;
}
-static inline char *_dl_simple_ltoahex(unsigned long i)
+static inline char *_dl_simple_ltoahex_inline(char * local, unsigned long i)
{
/* 21 digits plus null terminator, good for 64-bit or smaller ints */
- static char local[22];
char *p = &local[21];
*p-- = '\0';
do {