OSDN Git Service

Kill off an arm specific hack, that fostered three other arch specific
authorEric Andersen <andersen@codepoet.org>
Tue, 17 Feb 2004 07:33:12 +0000 (07:33 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 17 Feb 2004 07:33:12 +0000 (07:33 -0000)
hacks.  Just check for the elf magic string one byte at a time....

ldso/ldso/arm/dl-startup.h
ldso/ldso/dl-startup.c

index 383fe4e..6e30339 100644 (file)
@@ -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)
index 63c0c7f..0ac5c0b 100644 (file)
@@ -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);
        }