Browse Source

Kill off an arm specific hack, that fostered three other arch specific
hacks. Just check for the elf magic string one byte at a time....

Eric Andersen 20 years ago
parent
commit
93915a08a4
2 changed files with 5 additions and 13 deletions
  1. 0 4
      ldso/ldso/arm/dl-startup.h
  2. 5 9
      ldso/ldso/dl-startup.c

+ 0 - 4
ldso/ldso/arm/dl-startup.h

@@ -18,8 +18,4 @@ asm("" \
 "	mov	pc, r6\n"		\
 );
 
- /* It seems ARM needs an offset here */
-#undef ELFMAGIC
-#define	    ELFMAGIC	ELFMAG+load_addr
-
 #define DL_BOOT(X)   static void __attribute__ ((unused)) _dl_boot2 (X)

+ 5 - 9
ldso/ldso/dl-startup.c

@@ -90,9 +90,6 @@
 
 #include "ldso.h"
 
-/*  Some arches may need to override this in dl-startup.h */
-#define	ELFMAGIC ELFMAG
-
 /* This is a poor man's malloc, used prior to resolving our internal poor man's malloc */
 #define LD_MALLOC(SIZE) ((void *) (malloc_buffer += SIZE, malloc_buffer - SIZE)) ;  REALIGN();
 
@@ -186,15 +183,14 @@ DL_BOOT(unsigned long args)
 	/* Check the ELF header to make sure everything looks ok.  */
 	if (!header || header->e_ident[EI_CLASS] != ELFCLASS32 ||
 			header->e_ident[EI_VERSION] != EV_CURRENT
-#if !defined(__powerpc__) && !defined(__mips__) && !defined(__sh__)
-			|| _dl_strncmp((void *) header, ELFMAGIC, SELFMAG) != 0
-#else
+			/* Do not use an inline _dl_strncmp here or some arches
+			* will blow chunks, i.e. those that need to relocate all
+			* string constants... */
 			|| header->e_ident[EI_MAG0] != ELFMAG0
 			|| header->e_ident[EI_MAG1] != ELFMAG1
 			|| header->e_ident[EI_MAG2] != ELFMAG2
-			|| header->e_ident[EI_MAG3] != ELFMAG3
-#endif
-	   ) {
+			|| header->e_ident[EI_MAG3] != ELFMAG3)
+	{
 		SEND_STDERR("Invalid ELF header\n");
 		_dl_exit(0);
 	}