Page MenuHomeFreeBSD

D5171.diff
No OneTemporary

D5171.diff

Index: sys/amd64/amd64/elf_machdep.c
===================================================================
--- sys/amd64/amd64/elf_machdep.c
+++ sys/amd64/amd64/elf_machdep.c
@@ -292,3 +292,10 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+
+ return (0);
+}
Index: sys/arm/arm/elf_machdep.c
===================================================================
--- sys/arm/arm/elf_machdep.c
+++ sys/arm/arm/elf_machdep.c
@@ -293,3 +293,10 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+
+ return (0);
+}
Index: sys/arm64/arm64/elf_machdep.c
===================================================================
--- sys/arm64/arm64/elf_machdep.c
+++ sys/arm64/arm64/elf_machdep.c
@@ -215,3 +215,10 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+
+ return (0);
+}
Index: sys/i386/i386/elf_machdep.c
===================================================================
--- sys/i386/i386/elf_machdep.c
+++ sys/i386/i386/elf_machdep.c
@@ -287,3 +287,10 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+
+ return (0);
+}
Index: sys/kern/imgact_elf.c
===================================================================
--- sys/kern/imgact_elf.c
+++ sys/kern/imgact_elf.c
@@ -1665,7 +1665,7 @@
ehdr->e_version = EV_CURRENT;
ehdr->e_entry = 0;
ehdr->e_phoff = sizeof(Elf_Ehdr);
- ehdr->e_flags = 0;
+ ehdr->e_flags = elf_get_eflags();
ehdr->e_ehsize = sizeof(Elf_Ehdr);
ehdr->e_phentsize = sizeof(Elf_Phdr);
ehdr->e_phnum = numsegs + 1;
Index: sys/mips/mips/elf_machdep.c
===================================================================
--- sys/mips/mips/elf_machdep.c
+++ sys/mips/mips/elf_machdep.c
@@ -351,3 +351,37 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+ int eflags = 0;
+
+#if defined(CPU_MIPS4KC)
+ eflags |= EF_MIPS_ARCH_64R2;
+#elif defined(CPU_MIPS24KC)
+ eflags |= EF_MIPS_ARCH_32R2;
+#elif defined(CPU_MIPS74KC)
+ eflags |= EF_MIPS_ARCH_32R2;
+#elif defined(CPU_MIPS1004KC)
+ eflags |= EF_MIPS_ARCH_32R2;
+#elif defined(CPU_MIPS32)
+ eflags |= EF_MIPS_ARCH_32R2;
+#elif defined(CPU_MIPS64)
+ eflags |= EF_MIPS_ARCH_64R2;
+#elif defined(CPU_CNMIPS)
+ eflags |= EF_MIPS_ARCH_64R2;
+#elif defined(CPU_RMI)
+ eflags |= EF_MIPS_ARCH_64R2;
+#elif defined(CPU_SB1)
+ eflags |= EF_MIPS_ARCH_64R2;
+#elif defined(CPU_BERI)
+ eflags |= EF_MIPS_ARCH_64R2;
+#elif defined(CPU_NLM)
+ eflags |= EF_MIPS_ARCH_64R2;
+#else
+ eflags |= EF_MIPS_ARCH_1;
+#endif
+
+ return (eflags);
+}
Index: sys/riscv/riscv/elf_machdep.c
===================================================================
--- sys/riscv/riscv/elf_machdep.c
+++ sys/riscv/riscv/elf_machdep.c
@@ -167,3 +167,10 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+
+ return (0);
+}
Index: sys/sparc64/sparc64/elf_machdep.c
===================================================================
--- sys/sparc64/sparc64/elf_machdep.c
+++ sys/sparc64/sparc64/elf_machdep.c
@@ -422,3 +422,10 @@
return (0);
}
+
+int
+elf_get_eflags(void)
+{
+
+ return (0);
+}
Index: sys/sys/elf_common.h
===================================================================
--- sys/sys/elf_common.h
+++ sys/sys/elf_common.h
@@ -340,10 +340,27 @@
#define EF_MIPS_UCODE 0x00000010
#define EF_MIPS_ABI2 0x00000020 /* N32 */
#define EF_MIPS_OPTIONS_FIRST 0x00000080
-#define EF_MIPS_ARCH_ASE 0x0F000000 /* Architectural extensions */
-#define EF_MIPS_ARCH_ASE_MDMX 0x08000000 /* MDMX multimedia extension */
-#define EF_MIPS_ARCH_ASE_M16 0x04000000 /* MIPS-16 ISA extensions */
-#define EF_MIPS_ARCH 0xF0000000 /* Architecture field */
+#define EF_MIPS_32BITMODE 0x00000100 /* Compiled for 32-bit ABI */
+#define EF_MIPS_FP64 0x00000200 /* 64-bit FP regs, 32-bit CPU */
+#define EF_MIPS_NAN2008 0x00000400 /* Uses IEEE 754-2008 NaN */
+#define EF_MIPS_ABI_O32 0x00001000 /* Uses 1st MIPS ABI (UCODE) */
+#define EF_MIPS_ABI_O64 0x00002000 /* Uses UCODE MIPS64 ABI */
+#define EF_MIPS_ABI_EABI32 0x00003000 /* Uses Embedded ABI 32-bit */
+#define EF_MIPS_ABI_EABI64 0x00004000 /* Uses Embedded ABI 64-bit */
+#define EF_MIPS_ARCH_ASE 0x0F000000 /* Architectural extensions: */
+#define EF_MIPS_ARCH_ASE_MDMX 0x08000000 /* MDMX multimedia extension */
+#define EF_MIPS_ARCH_ASE_M16 0x04000000 /* MIPS-16 ISA extensions */
+#define EF_MIPS_ARCH_ASE_MICRO 0x02000000 /* MicroMips extensions/arch */
+#define EF_MIPS_ARCH 0xF0000000 /* Architecture field: */
+#define EF_MIPS_ARCH_1 0x00000000 /* MIPS I instructions */
+#define EF_MIPS_ARCH_2 0x10000000 /* MIPS II instructions */
+#define EF_MIPS_ARCH_3 0x20000000 /* MIPS III instructions */
+#define EF_MIPS_ARCH_4 0x30000000 /* MIPS IV instructions */
+#define EF_MIPS_ARCH_5 0x40000000 /* (Never introduced) */
+#define EF_MIPS_ARCH_32 0x50000000 /* Mips32 Revision 1 */
+#define EF_MIPS_ARCH_64 0x60000000 /* Mips64 Revision 1 */
+#define EF_MIPS_ARCH_32R2 0x70000000 /* Mips32 Revision 2 */
+#define EF_MIPS_ARCH_64R2 0x80000000 /* Mips64 Revision 2 */
#define EF_PPC_EMB 0x80000000
#define EF_PPC_RELOCATABLE 0x00010000
Index: sys/sys/imgact_elf.h
===================================================================
--- sys/sys/imgact_elf.h
+++ sys/sys/imgact_elf.h
@@ -98,6 +98,9 @@
/* Machine specific function to dump per-thread information. */
void __elfN(dump_thread)(struct thread *, void *, size_t *);
+/* Get the CPU specific e_flags information. */
+int elf_get_eflags(void);
+
extern int __elfN(fallback_brand);
extern Elf_Brandnote __elfN(freebsd_brandnote);
extern Elf_Brandnote __elfN(kfreebsd_brandnote);

File Metadata

Mime Type
text/plain
Expires
Sat, Feb 28, 5:42 PM (6 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29077276
Default Alt Text
D5171.diff (5 KB)

Event Timeline