]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Change our ELF binary branding to something more acceptable to the Binutils
authorDavid E. O'Brien <obrien@FreeBSD.org>
Tue, 18 Apr 2000 02:39:26 +0000 (02:39 +0000)
committerDavid E. O'Brien <obrien@FreeBSD.org>
Tue, 18 Apr 2000 02:39:26 +0000 (02:39 +0000)
commitc815a20cb23f53317c4d23d1884cd5e486dee876
treef76576487158a5c7e15c4d35440dc09db280a7da
parent8d396be510de9306b0efd32352a69860d7d195fc
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.
  *
14 files changed:
contrib/binutils/bfd/elf.c
lib/csu/amd64/crti.S
lib/csu/i386-elf/crti.S
sys/alpha/linux/linux_sysvec.c
sys/compat/svr4/svr4_sysvec.c
sys/i386/linux/linux_sysvec.c
sys/kern/imgact_elf.c
sys/svr4/svr4_sysvec.c
sys/sys/elf_common.h
sys/sys/imgact_elf.h
usr.bin/brandelf/Makefile
usr.bin/brandelf/brandelf.1
usr.bin/brandelf/brandelf.c
usr.bin/gcore/elfcore.c