diff options
author | David E. O'Brien <obrien@FreeBSD.org> | 2000-04-18 02:39:26 +0000 |
---|---|---|
committer | David E. O'Brien <obrien@FreeBSD.org> | 2000-04-18 02:39:26 +0000 |
commit | c815a20cb23f53317c4d23d1884cd5e486dee876 (patch) | |
tree | f76576487158a5c7e15c4d35440dc09db280a7da /lib | |
parent | 8d396be510de9306b0efd32352a69860d7d195fc (diff) | |
download | src-c815a20cb23f53317c4d23d1884cd5e486dee876.tar.gz src-c815a20cb23f53317c4d23d1884cd5e486dee876.zip |
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.
*
Notes
Notes:
svn path=/head/; revision=59342
Diffstat (limited to 'lib')
-rw-r--r-- | lib/csu/amd64/crti.S | 14 | ||||
-rw-r--r-- | lib/csu/i386-elf/crti.S | 14 |
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/csu/amd64/crti.S b/lib/csu/amd64/crti.S index 0038497e04ba..a4df32e68e67 100644 --- a/lib/csu/amd64/crti.S +++ b/lib/csu/amd64/crti.S @@ -25,6 +25,20 @@ * $FreeBSD$ */ + /* See http://www.netbsd.org/Documentation/kernel/elf-notes.html for + details on the ELF .note section as we are using it. */ + .section .note.ABI-tag, "a" + .align 4 + .long 1f - 0f # name length + .long 3f - 2f # data length + .long 1 # note type +0: .asciz "FreeBSD" # vendor name +1: .align 4 +2: .long 500000 # data - ABI tag + # (from __FreeBSD_version (param.h)) +3: .align 4 # pad out section + + .section .init,"ax",@progbits .align 4 .globl _init diff --git a/lib/csu/i386-elf/crti.S b/lib/csu/i386-elf/crti.S index 0038497e04ba..a4df32e68e67 100644 --- a/lib/csu/i386-elf/crti.S +++ b/lib/csu/i386-elf/crti.S @@ -25,6 +25,20 @@ * $FreeBSD$ */ + /* See http://www.netbsd.org/Documentation/kernel/elf-notes.html for + details on the ELF .note section as we are using it. */ + .section .note.ABI-tag, "a" + .align 4 + .long 1f - 0f # name length + .long 3f - 2f # data length + .long 1 # note type +0: .asciz "FreeBSD" # vendor name +1: .align 4 +2: .long 500000 # data - ABI tag + # (from __FreeBSD_version (param.h)) +3: .align 4 # pad out section + + .section .init,"ax",@progbits .align 4 .globl _init |