source: buchla-68k/misc/mkhd.sh@ 499da16

Last change on this file since 499da16 was 87361de, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Prepend a header to midas.abs.

  • Property mode set to 100755
File size: 1.3 KB
Line 
1#!/bin/bash
2
3if [ -z "${1}" -o -z "${2}" ]; then
4 echo "usage: mkhd.sh cross-nm elf-file"
5 exit 1
6fi
7
8CROSS_NM=${1}
9ELF_FILE=${2}
10
11${CROSS_NM} --help >/dev/null 2>&1
12
13if [ ${?} -ne 0 ]; then
14 echo "error while executing ${CROSS_NM}"
15 exit 1
16fi
17
18if [ ! -e ${ELF_FILE} ]; then
19 echo "${ELF_FILE} does not exist"
20 exit 1
21fi
22
23getsym() {
24 NAME=${1}
25 HEX=$(${CROSS_NM} ${ELF_FILE} | grep ' '${NAME}'$' | cut -c -8)
26 RET=$(printf '%d' 0x${HEX})
27 printf ' %7s %10s %6s\n' ${NAME} 0x${HEX} ${RET} >&2
28}
29
30echo "creating header for ${ELF_FILE}'s sections:" >&2
31echo >&2
32
33getsym _Lo_RAM; SYM_LO_RAM=${RET}
34getsym _etext; SYM_ETEXT=${RET}
35getsym _edata; SYM_EDATA=${RET}
36getsym _end; SYM_END=${RET}
37
38echo >&2
39
40LEN_TEXT=$((${SYM_ETEXT} - ${SYM_LO_RAM}))
41LEN_DATA=$((${SYM_EDATA} - ${SYM_ETEXT}))
42LEN_BSS=$((${SYM_END} - ${SYM_EDATA}))
43
44out8() {
45 VAL8=${1}
46 HEX8=$(printf '%x' ${VAL8})
47 printf "\x${HEX8}"
48}
49
50out16() {
51 VAL16=${1}
52 HI16=$((VAL16 / 256))
53 LO16=$((VAL16 % 256))
54 out8 ${HI16}
55 out8 ${LO16}
56}
57
58out32() {
59 VAL32=${1}
60 HI32=$((VAL32 / 65536))
61 LO32=$((VAL32 % 65536))
62 out16 ${HI32}
63 out16 ${LO32}
64}
65
66out16 24602
67out32 ${LEN_TEXT}
68out32 ${LEN_DATA}
69out32 ${LEN_BSS}
70out32 0
71out32 0
72out32 ${SYM_LO_RAM}
73out16 65535
Note: See TracBrowser for help on using the repository browser.