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 9PROG="$(basename "$0")" 10TEMPLATE= 11 12mksets() { 13 "${OBJDUMP:-objdump}" -x "$@" | fgrep "RELOCATION RECORDS FOR [link_set" | \ 14 sort -u | sed 's/^.*\[\(.*\)\]:$/\1/' 15} 16 17while 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 25done 26 27shift $((OPTIND - 1)) 28 29SETS=$(mksets "$@") 30 31if [ -n "${TEMPLATE}" ]; then 32 grep -v '^}$' "${TEMPLATE}" 33fi 34 35for 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 44done 45 46if [ -n "${TEMPLATE}" ]; then 47 printf '}\n' 48fi 49