1*4882a593Smuzhiyun#!/bin/sh 2*4882a593SmuzhiyunNAME="${0##*/}" 3*4882a593SmuzhiyunSTAGING_DIR="${1}" 4*4882a593SmuzhiyunTARGET_DIR="${2}" 5*4882a593Smuzhiyunshift 2 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunSYMBOLS_DIR="${STAGING_DIR}/usr/share/google-breakpad-symbols" 8*4882a593Smuzhiyunrm -rf "${SYMBOLS_DIR}" 9*4882a593Smuzhiyunmkdir -p "${SYMBOLS_DIR}" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyunerror() { 12*4882a593Smuzhiyun fmt="${1}"; shift 13*4882a593Smuzhiyun printf "%s: ${fmt}" "${NAME}" "${@}" >&2 14*4882a593Smuzhiyun exit 1 15*4882a593Smuzhiyun} 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunfor FILE in ${@}; do 18*4882a593Smuzhiyun f="${TARGET_DIR}${FILE}" 19*4882a593Smuzhiyun if [ ! -e "${f}" ]; then 20*4882a593Smuzhiyun error "%s: No such file or directory\n" "${FILE}" 21*4882a593Smuzhiyun fi 22*4882a593Smuzhiyun if [ -d "${f}" ]; then 23*4882a593Smuzhiyun error "%s: Is a directory\n" "${FILE}" 24*4882a593Smuzhiyun fi 25*4882a593Smuzhiyun if dump_syms "${f}" > "${SYMBOLS_DIR}/tmp.sym" 2>/dev/null; then 26*4882a593Smuzhiyun hash=$(head -n1 "${SYMBOLS_DIR}/tmp.sym" | cut -d ' ' -f 4); 27*4882a593Smuzhiyun filename=$(basename "${FILE}"); 28*4882a593Smuzhiyun mkdir -p "${SYMBOLS_DIR}/${filename}/${hash}" 29*4882a593Smuzhiyun mv "${SYMBOLS_DIR}/tmp.sym" "${SYMBOLS_DIR}/${filename}/${hash}/${filename}.sym"; 30*4882a593Smuzhiyun else 31*4882a593Smuzhiyun error "Error dumping symbols for: '%s'\n" "${FILE}" 32*4882a593Smuzhiyun fi 33*4882a593Smuzhiyundone 34*4882a593Smuzhiyunrm -rf "${SYMBOLS_DIR}/tmp" 35