---
name: "genassym.sh"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/genassym.sh"
---

# genassym.sh(8)

emit an assym.h file

## NAME

**genassym.sh** – emit an assym.h file

## SYNOPSIS

**sh** **genassym.sh** \[**-c**\] *C* *compiler* *invocation*

## DESCRIPTION

**genassym.sh** is a shell script normally used during the kernel build process to create an assym.h file. This file defines a number of cpp constants derived from the configuration information **genassym.sh** reads from stdin. The generated file is used by kernel sources written in assembler to gain access to information (e.g. structure offsets and sizes) normally only known to the C compiler.

**genassym.sh** resides in the */sys/kern* directory. Arguments to **genassym.sh** are usually of the form *${CC}* *${CFLAGS}* *${CPPFLAGS}* where *${CC}* is the C compiler used to compile the kernel, while *${CFLAGS}* and *${CPPFLAGS}* are flag arguments to the C compiler. The script creates a C source file from its input. Then the C compiler is called according to the script's arguments to compile this file.

Normally **genassym.sh** instructs the C compiler to create an assembler source from the constructed C source. The resulting file is then processed to extract the information needed to create the assym.h file. The **-c** flag instructs **genassym.sh** to create slightly different code, generate an executable from this code and run it. In both cases the assym.h file is written to stdout.

## DIAGNOSTICS

Either self-explanatory, or generated by one of the programs called from the script. The script will exit with the return code from the compiler or, in the **-c** case, with the return code from the generated executable.

## SEE ALSO

[genassym.cf(5)](/genassym.cf/5.md)

## HISTORY

The **genassym.sh** script first appeared in OpenBSD 2.2.
