aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc/powerpc/elf_machdep.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2003-12-23 02:42:39 +0000
committerPeter Wemm <peter@FreeBSD.org>2003-12-23 02:42:39 +0000
commit9b68618df04240a0ab6d6eed0d119246f07ee2cc (patch)
tree1907b96bc90f9f9f4007eae1193fdfe639edb170 /sys/powerpc/powerpc/elf_machdep.c
parentfeb5832efb9ee1916742286b5574c8833c0c96a7 (diff)
downloadsrc-9b68618df04240a0ab6d6eed0d119246f07ee2cc.tar.gz
src-9b68618df04240a0ab6d6eed0d119246f07ee2cc.zip
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.
Notes
Notes: svn path=/head/; revision=123742
Diffstat (limited to 'sys/powerpc/powerpc/elf_machdep.c')
-rw-r--r--sys/powerpc/powerpc/elf_machdep.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sys/powerpc/powerpc/elf_machdep.c b/sys/powerpc/powerpc/elf_machdep.c
index eab70db61c7b..1a4486fadcf1 100644
--- a/sys/powerpc/powerpc/elf_machdep.c
+++ b/sys/powerpc/powerpc/elf_machdep.c
@@ -80,15 +80,30 @@ static Elf32_Brandinfo freebsd_brand_info = {
ELFOSABI_FREEBSD,
EM_PPC,
"FreeBSD",
- "",
+ NULL,
"/libexec/ld-elf.so.1",
- &elf32_freebsd_sysvec
+ &elf32_freebsd_sysvec,
+ NULL,
};
SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_ANY,
(sysinit_cfunc_t) elf32_insert_brand_entry,
&freebsd_brand_info);
+static Elf32_Brandinfo freebsd_brand_oinfo = {
+ ELFOSABI_FREEBSD,
+ EM_PPC,
+ "FreeBSD",
+ NULL,
+ "/usr/libexec/ld-elf.so.1",
+ &elf32_freebsd_sysvec,
+ NULL,
+ };
+
+SYSINIT(oelf32, SI_SUB_EXEC, SI_ORDER_ANY,
+ (sysinit_cfunc_t) elf32_insert_brand_entry,
+ &freebsd_brand_oinfo);
+
/* Process one elf relocation with addend. */
static int
elf_reloc_internal(linker_file_t lf, const void *data, int type, int local)