blob: 6695403359520c9f06e931face66f193065edbe7 [file] [log] [blame]
shijie.xiong6760c482022-10-19 14:56:28 +08001#!/bin/bash
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8#Toolchain
9OBJCOPY=${TOOLCHAIN_KEYWORD}-objcopy
10
11#Parse object file segment information
12function parse_segment_information() {
13 TEXT_SECTION=$(readelf -t $1 | grep -wo .text.* | sort -u | uniq)
14 DATA_SECTION=$(readelf -t $1 | grep -wo .data.* | sort -u | uniq)
15 RODATA_SECTION=$(readelf -t $1 | grep -wo .rodata.* | sort -u | uniq)
16 TEXT_ARRY=(${TEXT_SECTION// /})
17 DATA_ARRY=(${DATA_SECTION// /})
18 RODATA_ARRY=(${RODATA_SECTION// /})
19}
20
21#Replace the target file segment name
22function rename_target_file_segment() {
23 RELINK_FLAG="-p"
24 for value in ${TEXT_ARRY[@]}; do
25 RELINK_FLAG="${RELINK_FLAG}"" --rename-section ${value}=.late${value}"
26 done
27
28 for value in ${DATA_ARRY[@]}; do
29 RELINK_FLAG="${RELINK_FLAG}"" --rename-section ${value}=.late${value}"
30 done
31
32 for value in ${RODATA_ARRY[@]}; do
33 RELINK_FLAG="${RELINK_FLAG}"" --rename-section ${value}=.late${value}"
34 done
35
36 ${OBJCOPY} ${RELINK_FLAG} $1 $1
37}
38
39if [ -z "$1" ]; then
40 echo -e "\033[41;33m Notice: .a library file not specified \033[0m"
41 echo -e "\033[33m usage: ./gen_scatter_lib.sh xxx.a \033[0m"
42 exit 1
43elif [ ! -f "$1" ]; then
44 echo -e "\033[41;33m Notice: Please specify a valid library file \033[0m"
45 exit 1
46else
47 parse_segment_information $1
48 rename_target_file_segment $1
49fi