diff options
| -rw-r--r-- | ldso/ldso/ld_string.h | 31 | ||||
| -rw-r--r-- | ldso/ldso/ldso.c | 10 | 
2 files changed, 18 insertions, 23 deletions
| diff --git a/ldso/ldso/ld_string.h b/ldso/ldso/ld_string.h index 822d6f313..b94b1c5f9 100644 --- a/ldso/ldso/ld_string.h +++ b/ldso/ldso/ld_string.h @@ -224,30 +224,17 @@ static inline char *_dl_simple_ltoahex(char * local, unsigned long i)  #if defined mc68000 || defined __arm__  /* On some arches constant strings are referenced through the GOT. */  /* XXX Requires load_addr to be defined. */ -#define SEND_STDERR(X)			\ -{					\ -    const char *ptr, *str;		\ -    ptr = str = (char *)(X);		\ -    if(str < (const char *)load_addr) {	\ -       	str += load_addr;		\ -       	ptr += load_addr;		\ -    }					\ -    while (*ptr)			\ -	ptr++;				\ -    _dl_write(2, str, ptr - str);	\ -} +#define SEND_STDERR(X)				\ +  { const char *__s = (X);			\ +    if (__s < (const char *) load_addr) __s += load_addr;	\ +    _dl_write (2, __s, _dl_strlen (__s));	\ +  }  #else -#define SEND_STDERR(str)		\ -{					\ -    register char *ptr = (char *) str;	\ -    while (*ptr)			\ -	ptr++;				\ -    _dl_write(2, str, ptr - str);	\ -} +#define SEND_STDERR(X) _dl_write(2, X, _dl_strlen(X));  #endif  #define SEND_ADDRESS_STDERR(X, add_a_newline) { \ -    char tmp[22], *tmp1; \ +    char tmp[13], *tmp1; \      _dl_memset(tmp, 0, sizeof(tmp)); \      tmp1=_dl_simple_ltoahex( tmp, (unsigned long)(X)); \      _dl_write(2, tmp1, _dl_strlen(tmp1)); \ @@ -258,9 +245,9 @@ static inline char *_dl_simple_ltoahex(char * local, unsigned long i)  };  #define SEND_NUMBER_STDERR(X, add_a_newline) { \ -    char tmp[22], *tmp1; \ +    char tmp[13], *tmp1; \      _dl_memset(tmp, 0, sizeof(tmp)); \ -    tmp1=_dl_simple_ltoa( tmp, (unsigned long)(X)); \ +    tmp1=_dl_simple_ltoahex( tmp, (unsigned long)(X)); \      _dl_write(2, tmp1, _dl_strlen(tmp1)); \      if (add_a_newline) { \  	tmp[0]='\n'; \ diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index 07d4a85c3..b330fa6d6 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -447,9 +447,12 @@ DL_BOOT(unsigned long args)  	}  #endif +  	/* OK, now do the relocations.  We do not do a lazy binding here, so  	   that once we are done, we have considerably more flexibility. */ - +#ifdef DL_DEBUG +	SEND_STDERR("About to do library loader relocations.\n"); +#endif  	goof = 0;  	for (indx = 0; indx < 2; indx++) {  		int i; @@ -505,6 +508,11 @@ DL_BOOT(unsigned long args)  					SEND_STDERR(" undefined.\n");  					goof++;  				} +#ifdef DL_DEBUG +				SEND_STDERR("About to fixup symbol: "); +				SEND_STDERR(strtab + symtab[symtab_index].st_name); +				SEND_STDERR("\n"); +#endif    			}  			/*  			 * Use this machine-specific macro to perform the actual relocation. | 
