Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146090155
D5171.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D5171.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D5171: Add e_flags information to ELF core files
Attached
Detach File
Event Timeline
Log In to Comment