Go to file
riastradh ad49149131 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.

   Exceptions:

   - 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
     sys/elf.h.

   - 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
     netbsd_elfcore_procinfo.

   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
   exceptions.

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
  collides.

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.
2024-04-01 18:33:22 +00:00
bin fix spelling mistakes, mainly in comments and log messages. 2024-02-09 22:08:30 +00:00
common snprintb: remove redundant memset in kernel mode 2024-04-01 08:53:42 +00:00
compat update my email address. 2024-02-04 05:43:05 +00:00
crypto libcrypto: Add expected symbol list to check at build-time. 2024-03-20 13:50:51 +00:00
dist/pf Don't write random data to the header. 2023-08-19 14:56:22 +00:00
distrib Add an example devpubd hook that looks for Minipro-compatible EEPROM 2024-03-30 16:47:55 +00:00
doc docs/3RDPARTY: Record vendor and release tags for elftoolchain. 2024-03-31 00:06:23 +00:00
etc Add an examples directory for devpubd hooks. 2024-03-30 06:11:58 +00:00
external elftoolchain: Be consistent about which ELF header files we use. 2024-04-01 18:33:22 +00:00
games Fix header comment to align text using 8 space tabs. 2024-03-26 20:50:29 +00:00
include Sync with tzcode2024a: 2024-02-17 14:54:47 +00:00
lib s/Unfortunatley/Unfortunately/ in comment. 2024-03-30 22:05:07 +00:00
libexec Remove obsolete code. 2024-02-16 19:32:38 +00:00
regress s/multipies/multiplies/. 2023-12-06 22:23:11 +00:00
rescue remove threads; size constraints and behavioral change 2022-05-16 14:55:56 +00:00
sbin fsirand(8): Fix security claims. 2024-03-28 15:39:42 +00:00
share Note NetBSD 10.0 2024-03-30 19:33:05 +00:00
sys Return the correct error from {fetch,store}_user_data and fix 2024-04-01 16:24:01 +00:00
tests elftoolchain: Be consistent about which ELF header files we use. 2024-04-01 18:33:22 +00:00
tools elftoolchain: Be consistent about which ELF header files we use. 2024-04-01 18:33:22 +00:00
usr.bin elftoolchain: Be consistent about which ELF header files we use. 2024-04-01 18:33:22 +00:00
usr.sbin elftoolchain: Be consistent about which ELF header files we use. 2024-04-01 18:33:22 +00:00
BUILDING BUILDING: list known mk.conf vars. tweak section headers 2023-07-22 18:50:04 +00:00
Makefile Makefile: Run `postinstall -d /', not `postinstall -d //'. 2023-09-08 12:01:56 +00:00
Makefile.inc
README.md README: use https for man.NetBSD.org 2021-09-05 12:45:44 +00:00
UPDATING fix spelling mistakes, mainly in comments and log messages. 2024-02-09 22:08:30 +00:00
build.sh Add virt68k to valid_MACHINE_ARCH. 2024-01-03 02:48:45 +00:00

README.md

NetBSD

NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices.

Building

You can cross-build NetBSD from most UNIX-like operating systems. To build for amd64 (x86_64), in the src directory:

./build.sh -U -u -j4 -m amd64 -O ~/obj release

Additional build information available in the BUILDING file.

Binaries

Testing

On a running NetBSD system:

cd /usr/tests; atf-run | atf-report

Troubleshooting

Latest sources

To fetch the main CVS repository:

cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P src

To work in the Git mirror, which is updated every few hours from CVS:

git clone https://github.com/NetBSD/src.git