1 #!/bin/sh
2 # $NetBSD: mkldscript.sh,v 1.3 2014/11/12 13:23:41 christos Exp $
3 #
4 # This script is used by cats, luna68k and shark to produce
5 # a kernel linker script that merges link sets for a.out kernels
6 # (without -t). It is also used for the same reason by kernel modules
7 # (with -t).
8
9 PROG="$(basename "$0")"
10 TEMPLATE=
11
12 mksets() {
13 "${OBJDUMP:-objdump}" -x "$@" | fgrep "RELOCATION RECORDS FOR [link_set" | \
14 sort -u | sed 's/^.*\[\(.*\)\]:$/\1/'
15 }
16
17 while getopts "t:" f; do
18 case "$f" in
19 t)
20 TEMPLATE=${OPTARG};;
21 *)
22 echo "Usage: $PROG [-t <template>] objs" 1>^&2
23 exit 1;;
24 esac
25 done
26
27 shift $((OPTIND - 1))
28
29 SETS=$(mksets "$@")
30
31 if [ -n "${TEMPLATE}" ]; then
32 grep -v '^}$' "${TEMPLATE}"
33 fi
34
35 for s in $SETS; do
36 printf ' . = ALIGN(4);\n'
37 printf ' PROVIDE (__start_%s = .);\n' $s
38 if [ -n "${TEMPLATE}" ]; then
39 printf ' %s : { *(%s) }\n' $s $s
40 else
41 printf ' *(%s)\n' $s
42 fi
43 printf ' PROVIDE (__stop_%s = .);\n' $s
44 done
45
46 if [ -n "${TEMPLATE}" ]; then
47 printf '}\n'
48 fi
Cache object: c727b0a53fc51eccd546cc3ab540233a
|