diff options
-rw-r--r-- | ldso/ldso/hash.h | 21 | ||||
-rw-r--r-- | ldso/ldso/ld_hash.h | 21 |
2 files changed, 26 insertions, 16 deletions
diff --git a/ldso/ldso/hash.h b/ldso/ldso/hash.h index c7fee6c97..f38361090 100644 --- a/ldso/ldso/hash.h +++ b/ldso/ldso/hash.h @@ -71,8 +71,8 @@ extern char * _dl_find_hash(char * name, struct dyn_elf * rpnt1, int copyrel); extern int _dl_linux_dynamic_link(void); -#ifdef __mc68000__ -/* On m68k constant strings are referenced through the GOT. */ +#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 *__s = (X); \ @@ -84,22 +84,27 @@ extern int _dl_linux_dynamic_link(void); #endif #define SEND_ADDRESS_STDERR(X, add_a_newline) { \ - char tmp[13]; \ - _dl_write(2, _dl_simple_ltoahex_inline( tmp, (unsigned long)(X)), 12); \ + char tmp[13], *tmp1; \ + _dl_memset_inline(tmp, 0, sizeof(tmp)); \ + tmp1=_dl_simple_ltoahex( tmp, (unsigned long)(X)); \ + _dl_write(2, tmp1, _dl_strlen_inline(tmp1)); \ 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); \ + char tmp[13], *tmp1; \ + _dl_memset_inline(tmp, 0, sizeof(tmp)); \ + tmp1=_dl_simple_ltoahex( tmp, (unsigned long)(X)); \ + _dl_write(2, tmp1, _dl_strlen_inline(tmp1)); \ 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_hash.h b/ldso/ldso/ld_hash.h index c7fee6c97..f38361090 100644 --- a/ldso/ldso/ld_hash.h +++ b/ldso/ldso/ld_hash.h @@ -71,8 +71,8 @@ extern char * _dl_find_hash(char * name, struct dyn_elf * rpnt1, int copyrel); extern int _dl_linux_dynamic_link(void); -#ifdef __mc68000__ -/* On m68k constant strings are referenced through the GOT. */ +#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 *__s = (X); \ @@ -84,22 +84,27 @@ extern int _dl_linux_dynamic_link(void); #endif #define SEND_ADDRESS_STDERR(X, add_a_newline) { \ - char tmp[13]; \ - _dl_write(2, _dl_simple_ltoahex_inline( tmp, (unsigned long)(X)), 12); \ + char tmp[13], *tmp1; \ + _dl_memset_inline(tmp, 0, sizeof(tmp)); \ + tmp1=_dl_simple_ltoahex( tmp, (unsigned long)(X)); \ + _dl_write(2, tmp1, _dl_strlen_inline(tmp1)); \ 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); \ + char tmp[13], *tmp1; \ + _dl_memset_inline(tmp, 0, sizeof(tmp)); \ + tmp1=_dl_simple_ltoahex( tmp, (unsigned long)(X)); \ + _dl_write(2, tmp1, _dl_strlen_inline(tmp1)); \ 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; |