summaryrefslogtreecommitdiffstats
path: root/lib/csu
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2000-04-18 02:39:26 +0000
committerobrien <obrien@FreeBSD.org>2000-04-18 02:39:26 +0000
commit0eac6bbc676f298cf518321aa0d24cc001c69611 (patch)
tree0215bcb520740db905cae767cb8c981d2e3f8a50 /lib/csu
parent2e1592d902d16ed9876e30509b0d925e1a30e2c7 (diff)
downloadFreeBSD-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 'lib/csu')
-rw-r--r--lib/csu/amd64/crti.S14
-rw-r--r--lib/csu/i386-elf/crti.S14
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/csu/amd64/crti.S b/lib/csu/amd64/crti.S
index 0038497..a4df32e 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 0038497..a4df32e 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
OpenPOWER on IntegriCloud