summaryrefslogtreecommitdiffstats
path: root/sys/compat/ia32
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2003-12-23 02:42:39 +0000
committerpeter <peter@FreeBSD.org>2003-12-23 02:42:39 +0000
commit998b79089fba1b775a2a89f2c6d325d97dd21ead (patch)
tree1907b96bc90f9f9f4007eae1193fdfe639edb170 /sys/compat/ia32
parent47e1d21299b39eba3b43f8b5986b655cadf52175 (diff)
downloadFreeBSD-src-998b79089fba1b775a2a89f2c6d325d97dd21ead.zip
FreeBSD-src-998b79089fba1b775a2a89f2c6d325d97dd21ead.tar.gz
Add an additional field to the elf brandinfo structure to support
quicker exec-time replacement of the elf interpreter on an emulation environment where an entire /compat/* tree isn't really warranted.
Diffstat (limited to 'sys/compat/ia32')
-rw-r--r--sys/compat/ia32/ia32_sysvec.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/sys/compat/ia32/ia32_sysvec.c b/sys/compat/ia32/ia32_sysvec.c
index 67b7db3..0b2d777 100644
--- a/sys/compat/ia32/ia32_sysvec.c
+++ b/sys/compat/ia32/ia32_sysvec.c
@@ -129,21 +129,34 @@ struct sysentvec ia32_freebsd_sysvec = {
};
-const char freebsd32_emul_path[] = "/compat/ia32";
-
static Elf32_Brandinfo ia32_brand_info = {
ELFOSABI_FREEBSD,
EM_386,
"FreeBSD",
- "/compat/ia32",
- "/usr/libexec/ld-elf.so.1",
- &ia32_freebsd_sysvec
+ NULL,
+ "/libexec/ld-elf.so.1",
+ &ia32_freebsd_sysvec,
+ "/libexec/ld-elf-32.so.1",
};
SYSINIT(ia32, SI_SUB_EXEC, SI_ORDER_ANY,
(sysinit_cfunc_t) elf32_insert_brand_entry,
&ia32_brand_info);
+static Elf32_Brandinfo ia32_brand_oinfo = {
+ ELFOSABI_FREEBSD,
+ EM_386,
+ "FreeBSD",
+ NULL,
+ "/usr/libexec/ld-elf.so.1",
+ &ia32_freebsd_sysvec,
+ "/usr/libexec/ld-elf-32.so.1",
+ };
+
+SYSINIT(oia32, SI_SUB_EXEC, SI_ORDER_ANY,
+ (sysinit_cfunc_t) elf32_insert_brand_entry,
+ &ia32_brand_oinfo);
+
/* XXX may be freebsd32 MI */
static register_t *
ia32_copyout_strings(struct image_params *imgp)
OpenPOWER on IntegriCloud