Browse Source

Merge arm support into the mainstream. This change is pretty
minor, just carefully memset 0 strings before using them, and
also referencs strings via the GOT for ARM as well.
-Erik

Eric Andersen 24 years ago
parent
commit
f95be941de
2 changed files with 26 additions and 16 deletions
  1. 13 8
      ldso/ldso/hash.h
  2. 13 8
      ldso/ldso/ld_hash.h

+ 13 - 8
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;

+ 13 - 8
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;