reexec_to_match_kernel(3)

reexec_to_match_kernel3

Re-exec the current binary to match the abi of the running kernel

Usage

#include <libutil.h>

int

reexec_to_match_kernel(void);

int

reexec_to_match_lp64ness(bool isLP64);

Library

System Utilities Library (libutil, -lutil)

Overview

The reexec_to_match_kernel() function re-executes the current binary to match the ABI of the running kernel. That is, if the current kernel is a 64-bit Intel kernel, it will attempt to execute the 64-bit x86_64 userspace slice of the universal binary. The API intentionally does not take arguments because its use should be transparent to the program and to the user.

The reexec_to_match_lp64ness() is coarser-grained, and only attempts to match the word width that is requested. For example, if the current system defaults to executing the 64-bit x86_64 userspace slice, but the program should instead run in 32-bit i386 mode, this routine can be used.

Both reexec_to_match_kernel() and reexec_to_match_lp64ness() can each be used exactly once in a program's lifetime. In certain circumstances, it may even be desirable to use one, and then the other.

Return values

The reexec_to_match_kernel() and reexec_to_match_lp64ness() functions return 0 if re-execution was not required. It returns -1 and sets errno if there was an error performing the re-execution, for example if the binary is not universal, or does not contain a slice to match the running kernel's ABI. If the function succeeds, control never returns to the caller and the program starts from main() again.

Releases

106 releases since Mac OS X 10.6; the text changed 1 time.

  1. 10.6–10.6.8
  2. 10.7–26.5

From libutil 73 in macOS 26.5. Parsed by carta from the page's mdoc source.