Module Name:    src
Committed By:   riastradh
Date:           Mon Apr  1 18:33:24 UTC 2024

Modified Files:
        src/external/bsd/elftoolchain/dist/libelf: _libelf_config.h libelf.h
        src/external/bsd/elftoolchain/lib/libdwarf: Makefile
        src/external/cddl/osnet/dist/lib/libdtrace/common: drti.c dt_module.c
        src/external/cddl/osnet/sys: elf.h
        src/external/cddl/osnet/sys/sys: elf.h
        src/tests/lib/libc/sys: t_ptrace_wait.c
        src/tools/ctfconvert: Makefile
        src/tools/ctfmerge: Makefile
        src/tools/elftoolchain/libdwarf: Makefile
        src/tools/elftoolchain/libelf: Makefile
        src/tools/libctf: Makefile
        src/usr.bin/kdump: Makefile.ioctl-c
        src/usr.sbin/tprof: ksyms.c

Log Message:
elftoolchain: Be consistent about which ELF header files we use.

1. For tools that use elftoolchain: always use elftoolchain's
   elfdefinitions.h.  Don't even think about looking at the host's
   sys/exec_elf.h, which makes no sense and should never happen.

   (ELF tools that don't use elftoolchain, like m68k-elf2coff,
   continue to use nbincludes/sys/exec_elf.h.  But no more nbincludes
   hacks in elftoolchain.)

2. For kernel components (solaris, zfs, dtrace): always use
   sys/exec_elf.h, even in Solaris components via sys/elf.h.
   elfdefinitions.h is not wired up in the kernel build at all.

3. For most userland components that involve libelf: use
   elfdefinitions.h via libelf header files (libelf.h, gelf.h).

   libdtrace in particular requires _all_ R_* reloc type definitions,
   but sys/exec_elf.h brings in only the _current machine's_ R_*
   reloc type definitions.  (While here: Use uintptr_t instead of
   Elf_Addr for pointer-to-integer cast, since Elf_Addr is MD and
   provided only by sys/exec_elf.h, not by elfdefinitions.h.)

   And most userland components using libelf don't rely on any
   properties of the current machine from sys/exec_elf.h, so they can
   use libelf's elfdefinition.h.


   - dtrace drti.c relies on link.h -> link_elf.h -> sys/exec_elf.h,
     but it also relies on sys/dtrace.h -> sys/elf.h ->
     elfdefinitions.h like other userland components using sys/elf.h.

   - kdump-ioctl.c uses sys/exec_elf.h directly and sys/dtrace.h ->
     sys/elf.h -> elfdefinitions like other userland components using

   - t_ptrace_wait.c (via t_ptrace_core_wait.h) uses libelf to parse
     core files, but relies on sys/exec_elf.h for struct

   None of these exceptions needs all R_* reloc type definitions, so
   as a workaround, we can just suppress libelf's elfdefinitions.h by
   defining _SYS_ELFDEFINITIONS_H_ and use sys/exec_elf.h in these

And undo the whole BUILTIN_ELF_HEADERS mistake.  This was:

- half bogus workarounds for missing build_install dependencies in
  tools/Makefile, which are no longer missing now, and
- half futile attempt to use src/sys/sys/exec_elf.h via nbincludes in
  tools involving libelf instead of libelf's elfdefinitions.h, which

Longer-term, we may wish to unify sys/exec_elf.h and libelf's
elfdefinitions.h, so we don't have to play these games.

But at least now the games are limited to three .c files (one of
which is generated by Makefile.ioctl-c), rather than haphazardly
applied tree-wide by monstrous kludges in widely used .h files with
broken hackarounds to get the tools build lurching to completion.

To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
    src/external/bsd/elftoolchain/dist/libelf/_libelf_config.h \
cvs rdiff -u -r1.5 -r1.6 src/external/bsd/elftoolchain/lib/libdwarf/Makefile
cvs rdiff -u -r1.8 -r1.9 \
cvs rdiff -u -r1.18 -r1.19 \
cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/sys/elf.h
cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/sys/sys/elf.h
cvs rdiff -u -r1.191 -r1.192 src/tests/lib/libc/sys/t_ptrace_wait.c
cvs rdiff -u -r1.10 -r1.11 src/tools/ctfconvert/Makefile
cvs rdiff -u -r1.11 -r1.12 src/tools/ctfmerge/Makefile
cvs rdiff -u -r1.6 -r1.7 src/tools/elftoolchain/libdwarf/Makefile
cvs rdiff -u -r1.2 -r1.3 src/tools/elftoolchain/libelf/Makefile
cvs rdiff -u -r1.9 -r1.10 src/tools/libctf/Makefile
cvs rdiff -u -r1.39 -r1.40 src/usr.bin/kdump/Makefile.ioctl-c
cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/tprof/ksyms.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Reply via email to