1#!/bin/sh
2# usage: binfile [-i] [-a <align>] <target-src.S> <binary-file> <varname>
3# -a <align>  align data at 2^<align> boundary (default: byte alignment)
4# -i          add to .init.rodata (default: .rodata) section
5
6section=""
7align=0
8
9OPTIND=1
10while getopts "ia:" opt; do
11    case "$opt" in
12    i)
13        section=".init"
14        ;;
15    a)
16        align=$OPTARG
17        ;;
18    esac
19done
20SHIFT=$((OPTIND-1))
21shift $SHIFT
22
23target=$1
24binsource=$2
25varname=$3
26
27cat <<EOF >$target
28#include <xen/linkage.h>
29
30        .section $section.rodata, "a", %progbits
31
32DATA($varname, 1 << $align)
33        .incbin "$binsource"
34.Lend:
35END($varname)
36
37        ASM_INT(${varname}_size, .Lend - $varname)
38EOF
39