diff options
author | obrien <obrien@FreeBSD.org> | 2000-04-18 02:39:26 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2000-04-18 02:39:26 +0000 |
commit | 0eac6bbc676f298cf518321aa0d24cc001c69611 (patch) | |
tree | 0215bcb520740db905cae767cb8c981d2e3f8a50 /sys/svr4 | |
parent | 2e1592d902d16ed9876e30509b0d925e1a30e2c7 (diff) | |
download | FreeBSD-src-0eac6bbc676f298cf518321aa0d24cc001c69611.zip FreeBSD-src-0eac6bbc676f298cf518321aa0d24cc001c69611.tar.gz |
Change our ELF binary branding to something more acceptable to the Binutils
maintainers.
After we established our branding method of writing upto 8 characters of
the OS name into the ELF header in the padding; the Binutils maintainers
and/or SCO (as USL) decided that instead the ELF header should grow two new
fields -- EI_OSABI and EI_ABIVERSION. Each of these are an 8-bit unsigned
integer. SCO has assigned official values for the EI_OSABI field. In
addition to this, the Binutils maintainers and NetBSD decided that a better
ELF branding method was to include ABI information in a ".note" ELF
section.
With this set of changes, we will now create ELF binaries branded using
both "official" methods. Due to the complexity of adding a section to a
binary, binaries branded with ``brandelf'' will only brand using the
EI_OSABI method. Also due to the complexity of pulling a section out of an
ELF file vs. poking around in the ELF header, our image activator only
looks at the EI_OSABI header field.
Note that a new kernel can still properly load old binaries except for
Linux static binaries branded in our old method.
*
* For a short period of time, ``ld'' will also brand ELF binaries
* using our old method. This is so people can still use kernel.old
* with a new world. This support will be removed before 5.0-RELEASE,
* and may not last anywhere upto the actual release. My expiration
* time for this is about 6mo.
*
Diffstat (limited to 'sys/svr4')
-rw-r--r-- | sys/svr4/svr4_sysvec.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/svr4/svr4_sysvec.c b/sys/svr4/svr4_sysvec.c index b470157..c66e61b 100644 --- a/sys/svr4/svr4_sysvec.c +++ b/sys/svr4/svr4_sysvec.c @@ -155,7 +155,7 @@ int bsd_to_svr4_errno[ELAST+1] = { }; -static int svr4_fixup(long **stack_base, struct image_params *imgp); +static int svr4_fixup(register_t **stack_base, struct image_params *imgp); extern struct sysent svr4_sysent[]; #undef szsigcode @@ -183,8 +183,8 @@ struct sysentvec svr4_sysvec = { }; Elf32_Brandinfo svr4_brand = { - "SVR4", - "/compat/svr4", + ELFOSABI_SOLARIS, /* XXX Or should we use ELFOSABI_SYSV here? */ + svr4_emul_path, "/lib/libc.so.1", &svr4_sysvec }; @@ -192,10 +192,10 @@ Elf32_Brandinfo svr4_brand = { const char svr4_emul_path[] = "/compat/svr4"; static int -svr4_fixup(long **stack_base, struct image_params *imgp) +svr4_fixup(register_t **stack_base, struct image_params *imgp) { Elf32_Auxargs *args = (Elf32_Auxargs *)imgp->auxargs; - long *pos; + register_t *pos; pos = *stack_base + (imgp->argc + imgp->envc + 2); |