patch-2.4.20 linux-2.4.20/arch/mips64/kernel/binfmt_elf32.c
Next file: linux-2.4.20/arch/mips64/kernel/cpu-probe.c
Previous file: linux-2.4.20/arch/mips64/kernel/Makefile
Back to the patch index
Back to the overall index
- Lines: 29
- Date:
Thu Nov 28 15:53:10 2002
- Orig file:
linux-2.4.19/arch/mips64/kernel/binfmt_elf32.c
- Orig date:
Fri Aug 2 17:39:43 2002
diff -urN linux-2.4.19/arch/mips64/kernel/binfmt_elf32.c linux-2.4.20/arch/mips64/kernel/binfmt_elf32.c
@@ -27,8 +27,26 @@
typedef double elf_fpreg_t;
typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
-#define elf_check_arch(x) \
- ((x)->e_machine == EM_MIPS)
+/*
+ * This is used to ensure we don't load something for the wrong architecture.
+ */
+#define elf_check_arch(hdr) \
+({ \
+ int __res = 1; \
+ struct elfhdr *__h = (hdr); \
+ \
+ if (__h->e_machine != EM_MIPS) \
+ __res = 0; \
+ if (__h->e_ident[EI_CLASS] != ELFCLASS32) \
+ __res = 0; \
+ if ((__h->e_flags & EF_MIPS_ABI2) != 0) \
+ __res = 0; \
+ if (((__h->e_flags & EF_MIPS_ABI) != 0) && \
+ ((__h->e_flags & EF_MIPS_ABI) != EF_MIPS_ABI_O32)) \
+ __res = 0; \
+ \
+ __res; \
+})
#define TASK32_SIZE 0x80000000UL
#undef ELF_ET_DYN_BASE
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)