k...@munnari.oz.au (Robert Elz) writes:

>The way you have it coded, I suspect that 9.1 binaries will appear to
>be 9.1.0 instead (the ver_patch data is always appended for ver_maj >= 9).

True. Here is a patch that ignores a zero patch level.

Index: external/bsd/file/dist/src/readelf.c
===================================================================
RCS file: /cvsroot/src/external/bsd/file/dist/src/readelf.c,v
retrieving revision 1.25
diff -p -u -r1.25 readelf.c
--- external/bsd/file/dist/src/readelf.c        9 Apr 2021 19:11:42 -0000       
1.25
+++ external/bsd/file/dist/src/readelf.c        21 Sep 2022 23:17:49 -0000
@@ -456,7 +456,13 @@ do_note_netbsd_version(struct magic_set 
 
                if (file_printf(ms, " %u.%u", ver_maj, ver_min) == -1)
                        return -1;
-               if (ver_rel == 0 && ver_patch != 0) {
+               if (ver_maj >= 9) {
+                       ver_patch += 100 * ver_rel;
+                       if (ver_patch != 0) {
+                               if (file_printf(ms, ".%u", ver_patch) == -1)
+                                       return -1;
+                       }
+               } else if (ver_rel == 0 && ver_patch != 0) {
                        if (file_printf(ms, ".%u", ver_patch) == -1)
                                return -1;
                } else if (ver_rel != 0) {


>However, I wonder why this kind of info is embedded in ELF files, what
>point does that have?   Maybe it would be better to have them just say
>x.99 (and forget the kernel ABI bump number) ?

The note has little value, best it can do is identify from which
release the binary came, in case you have a mixed installation. And
then the full version number is required.

Reply via email to