Setting up repository
[linux-libre-firmware.git] / ath9k_htc / sboot / utility / sh / make_ld.sh
1 #!/bin/sh
2
3 # Copyright (c) 2013 Qualcomm Atheros, Inc.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted (subject to the limitations in the
8 # disclaimer below) provided that the following conditions are met:
9 #
10 #  * Redistributions of source code must retain the above copyright
11 #    notice, this list of conditions and the following disclaimer.
12 #
13 #  * Redistributions in binary form must reproduce the above copyright
14 #    notice, this list of conditions and the following disclaimer in the
15 #    documentation and/or other materials provided with the
16 #    distribution.
17 #
18 #  * Neither the name of Qualcomm Atheros nor the names of its
19 #    contributors may be used to endorse or promote products derived
20 #    from this software without specific prior written permission.
21 #
22 # NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
23 # GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
24 # HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
25 # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
26 # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
31 # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
32 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
33 # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
34 # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
36 # This script is intended for use with separately linked ROM and RAM.
37 # It creates EITHER a linker script that satisfies references made by RAM
38 # applications to ROM symbols OR a linker script that forces symbols to
39 # be included in a ROM image.
40 #
41 # The option "--addrs" causes the RAM linkage script to be generated
42 # and the option "--externs" causes the ROM linkage script to be generated.
43 #
44 # Example usage:
45 #     make_ld.sh --addrs athos.rom.out athos.rom.symbols > rom.addrs.ld
46 #     make_ld.sh --externs athos.rom.symbols > rom.externs.ld
47
48 eval XTNM=xt-nm
49
50 Usage() {
51     echo Usage:
52     echo $progname '{--addrs ROM_ELF_Image | --externs} symbol_file'
53 }
54
55 Provide() {
56     addr0=`echo $1 | sed 's/\r$//'`
57         addr=0x`nm $image_file | grep -w $addr0 | cut -d ' ' -f 1`
58     if [ "$addr" != "0x" ]
59     then
60         echo PROVIDE \( $addr0 = $addr \)\;
61     fi
62 }
63
64 Extern() {
65     echo EXTERN \( $1 \)\;
66 }
67
68 progname=$0
69 script_choice=$1
70
71 if [ "$script_choice"=="--addrs" ]
72 then
73     action=Provide
74     image_file=$2
75
76     if [ ! -r "$image_file" ]
77     then
78         echo "Cannot read ELF image: $image_file"
79         Usage
80     fi
81     symbol_file=$3
82 elif [ "$script_choice"=="--externs" ]
83 then
84     action=Extern
85     symbol_file=$2
86
87         if [ ! -r "$symbol_file" ]
88         then
89             echo "Cannot read symbol list from: $symbol_file"
90             Usage
91         fi
92 else
93     Usage
94 fi
95
96 for i in `cat $symbol_file`
97 do
98     $action $i
99 done