shijie.xiong | 6760c48 | 2022-10-19 14:56:28 +0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # |
| 3 | # Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved. |
| 4 | # |
| 5 | # SPDX-License-Identifier: MIT |
| 6 | # |
| 7 | |
| 8 | #Toolchain |
| 9 | OBJCOPY=${TOOLCHAIN_KEYWORD}-objcopy |
| 10 | |
| 11 | #Parse object file segment information |
| 12 | function 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 |
| 22 | function 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 | |
| 39 | if [ -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 |
| 43 | elif [ ! -f "$1" ]; then |
| 44 | echo -e "\033[41;33m Notice: Please specify a valid library file \033[0m" |
| 45 | exit 1 |
| 46 | else |
| 47 | parse_segment_information $1 |
| 48 | rename_target_file_segment $1 |
| 49 | fi |