OSDN Git Service

Make mips at least compile
authorEric Andersen <andersen@codepoet.org>
Mon, 14 Mar 2005 22:13:36 +0000 (22:13 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 14 Mar 2005 22:13:36 +0000 (22:13 -0000)
ldso/ldso/mips/dl-startup.h
ldso/ldso/mips/dl-sysdep.h

index 0dd92b5..0a19f75 100644 (file)
@@ -51,15 +51,16 @@ asm("" \
 #define PERFORM_BOOTSTRAP_GOT(got, tpnt)                                       \
 do {                                                                           \
        Elf32_Sym *sym;                                                         \
-       unsigned long i;                                                        \
+       Elf32_Addr i;                                                   \
+       Elf32_Addr *mipsgot = (void *) got;                                     \
                                                                                \
        /* Add load address displacement to all local GOT entries */            \
        i = 2;                                                                  \
        while (i < tpnt->dynamic_info[DT_MIPS_LOCAL_GOTNO_IDX])                 \
-               got[i++] += load_addr;                                          \
+               mipsgot[i++] += load_addr;                                      \
                                                                                \
        /* Handle global GOT entries */                                         \
-       got += tpnt->dynamic_info[DT_MIPS_LOCAL_GOTNO_IDX];                     \
+       mipsgot += tpnt->dynamic_info[DT_MIPS_LOCAL_GOTNO_IDX];                 \
        sym = (Elf32_Sym *) (tpnt->dynamic_info[DT_SYMTAB] +                    \
                 load_addr) + tpnt->dynamic_info[DT_MIPS_GOTSYM_IDX];           \
        i = tpnt->dynamic_info[DT_MIPS_SYMTABNO_IDX] - tpnt->dynamic_info[DT_MIPS_GOTSYM_IDX];\
@@ -67,23 +68,22 @@ do {                                                                                \
        while (i--) {                                                           \
                if (sym->st_shndx == SHN_UNDEF ||                               \
                        sym->st_shndx == SHN_COMMON)                            \
-                       *got = load_addr + sym->st_value;                       \
+                       *mipsgot = load_addr + sym->st_value;                   \
                else if (ELF32_ST_TYPE(sym->st_info) == STT_FUNC &&             \
-                       *got != sym->st_value)                                  \
-                       *got += load_addr;                                      \
+                       *mipsgot != sym->st_value)                              \
+                       *mipsgot += load_addr;                                  \
                else if (ELF32_ST_TYPE(sym->st_info) == STT_SECTION) {          \
                        if (sym->st_other == 0)                                 \
-                               *got += load_addr;                              \
+                               *mipsgot += load_addr;                          \
                }                                                               \
                else                                                            \
-                       *got = load_addr + sym->st_value;                       \
+                       *mipsgot = load_addr + sym->st_value;                   \
                                                                                \
-               got++;                                                          \
+               mipsgot++;                                                      \
                sym++;                                                          \
        }                                                                       \
 } while (0)
 
-
 /*
  * Here is a macro to perform a relocation.  This is only used when
  * bootstrapping the dynamic loader.
index 3f46721..7fc75b7 100644 (file)
@@ -8,6 +8,8 @@
 /* Define this if the system uses RELOCA.  */
 #undef ELF_USES_RELOCA
 #include <elf.h>
+#include <link.h>
+
 #define ARCH_NUM 3
 #define DT_MIPS_GOTSYM_IDX     (DT_NUM + OS_NUM)
 #define DT_MIPS_LOCAL_GOTNO_IDX        (DT_NUM + OS_NUM +1)