Binaries without a .note.openbsd.ident section fail to execute. This
note section is mentioned in the ELF man page as follows.

> .note      This section holds information in the note section format
>            described below.  This section is of type SHT_NOTE.  No
>            attribute types are used.  OpenBSD native executables usually
>            contain a .note.openbsd.ident section to identify themselves,
>            for the kernel to bypass any compatibility ELF binary emula-
>            tion tests when loading the file.

The use of the word "usually" makes this read ambiguously to me. In that
it's not clear if this note is present and/or required in all binaries.

Examining binaries on my system it seems this note is indeed always
present and from practise does seem to be required (removing it from
binaries with objcopy -R causes execution to fail). The mention of
"emulation" made we wonder if perhaps this was referring to the old
compat_linux layer. Reviewing the history it seems this part of the man
page is largely unchanged from it's import in V 1.1 which pre-dates the
removal of compat_linux.

Is this indeed a remnant? If so should an update with firmer wording be
made, perhaps something like the following? Though I'm not really sure
what in the underlying implantation this note represents in a post
compat_linux removal world?

diff --git a/share/man/man5/elf.5 b/share/man/man5/elf.5
index d22279f6738..aece235de6b 100644
--- a/share/man/man5/elf.5
+++ b/share/man/man5/elf.5
@@ -1026,10 +1026,9 @@ This section is of type
 .Dv SHT_NOTE .
 No attribute types are used.
 .Ox
-native executables usually contain a
+native executables must contain a
 .Sy .note.openbsd.ident
-section to identify themselves, for the kernel to bypass any compatibility
-ELF binary emulation tests when loading the file.
+section to identify themselves.
 .It .plt
 This section holds the procedure linkage table.
 This section is of type

Reply via email to