blob: bb1d61975392425150041f11df33a488bdac249f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/usr/bin/env bash
set -e
if [ -z "$1" ]; then
echo "ERROR: No output file specified"
exit 1
fi
OUTPUT_FILE="$1"
shift
rm -f "${OUTPUT_FILE}"
while (( "$#" >= 3 )); do
SECTION_NAME="$1"
INPUT_FILE="$2"
FILE_SIZE="$3"
{
printf ' .file "%s"\n' "${OUTPUT_FILE}"
printf ' .data\n'
printf ' .section %s, "a", @progbits\n' "${SECTION_NAME}"
printf ' .align 4\n'
printf ' .globl %s\n' "${SECTION_NAME}_start"
printf ' .type %s, @object\n' "${SECTION_NAME}_start"
printf ' .size %s, 4\n' "${SECTION_NAME}_start"
printf '%s:\n' "${SECTION_NAME}_start"
printf ' .incbin "%s"\n' "${INPUT_FILE}"
printf ' .section serenity_embedded_resource_info, "a", @progbits\n'
printf ' .align 4\n'
printf ' .globl %s\n' "${SECTION_NAME}_size"
printf ' .type %s, @object\n' "${SECTION_NAME}_size"
printf ' .size %s, 4\n' "${SECTION_NAME}_size"
printf '%s:\n' "${SECTION_NAME}_size"
printf ' .long %s\n' "${FILE_SIZE}"
printf '\n'
} >> "${OUTPUT_FILE}"
shift 3
done
|