xref: /aosp_15_r20/external/crosvm/kernel_loader/bindgen.sh (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env bash
2*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors
3*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file.
5*bb4ee6a4SAndroid Build Coastguard Worker
6*bb4ee6a4SAndroid Build Coastguard Worker# Regenerate kernel_loader bindgen bindings.
7*bb4ee6a4SAndroid Build Coastguard Worker
8*bb4ee6a4SAndroid Build Coastguard Workerset -euo pipefail
9*bb4ee6a4SAndroid Build Coastguard Workercd "$(dirname "${BASH_SOURCE[0]}")/.."
10*bb4ee6a4SAndroid Build Coastguard Worker
11*bb4ee6a4SAndroid Build Coastguard Workersource tools/impl/bindgen-common.sh
12*bb4ee6a4SAndroid Build Coastguard Worker
13*bb4ee6a4SAndroid Build Coastguard WorkerKERNEL_LOADER_EXTRA="// Added by kernel_loader/bindgen.sh
14*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::AsBytes;
15*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromBytes;
16*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromZeroes;"
17*bb4ee6a4SAndroid Build Coastguard Worker
18*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \
19*bb4ee6a4SAndroid Build Coastguard Worker    --raw-line "${KERNEL_LOADER_EXTRA}" \
20*bb4ee6a4SAndroid Build Coastguard Worker    --allowlist-type='Elf32_Ehdr' \
21*bb4ee6a4SAndroid Build Coastguard Worker    --allowlist-type='Elf32_Phdr' \
22*bb4ee6a4SAndroid Build Coastguard Worker    --allowlist-type='Elf64_Ehdr' \
23*bb4ee6a4SAndroid Build Coastguard Worker    --allowlist-type='Elf64_Phdr' \
24*bb4ee6a4SAndroid Build Coastguard Worker    --allowlist-var='.+' \
25*bb4ee6a4SAndroid Build Coastguard Worker    --with-derive-custom "elf32_hdr=FromZeroes,FromBytes,AsBytes" \
26*bb4ee6a4SAndroid Build Coastguard Worker    --with-derive-custom "elf64_hdr=FromZeroes,FromBytes,AsBytes" \
27*bb4ee6a4SAndroid Build Coastguard Worker    --with-derive-custom "elf32_phdr=FromZeroes,FromBytes,AsBytes" \
28*bb4ee6a4SAndroid Build Coastguard Worker    --with-derive-custom "elf64_phdr=FromZeroes,FromBytes,AsBytes" \
29*bb4ee6a4SAndroid Build Coastguard Worker    "${BINDGEN_LINUX}/include/uapi/linux/elf.h" \
30*bb4ee6a4SAndroid Build Coastguard Worker    -- \
31*bb4ee6a4SAndroid Build Coastguard Worker    -isystem "${BINDGEN_LINUX}/include" \
32*bb4ee6a4SAndroid Build Coastguard Worker    | replace_linux_int_types \
33*bb4ee6a4SAndroid Build Coastguard Worker    > kernel_loader/src/elf.rs
34