Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Side by Side Diff: chrome/tools/build/mac/dump_product_syms

Issue 419813005: [Mac] Call dump_syms with the -g flag when building with mac_breakpad=1. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script expects the following environment variables to be set. Xcode 7 # This script expects the following environment variables to be set. Xcode
8 # normally sets them: 8 # normally sets them:
9 # 9 #
10 # CONFIGURATION - Release or Debug; this script only operates when Release. 10 # CONFIGURATION - Release or Debug; this script only operates when Release.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 # SRC_STEM is the name of the file within the DWARF directory of the .dSYM 100 # SRC_STEM is the name of the file within the DWARF directory of the .dSYM
101 # bundle, which comes from the on-disk name of an executable or dylib within 101 # bundle, which comes from the on-disk name of an executable or dylib within
102 # its enclosing .app, .framework or .plugin bundle. This is the bundle name 102 # its enclosing .app, .framework or .plugin bundle. This is the bundle name
103 # without .app, .framework or .plugin appended. For non-bundled types, the 103 # without .app, .framework or .plugin appended. For non-bundled types, the
104 # stem is just the name of the singular file on disk. 104 # stem is just the name of the singular file on disk.
105 SRC_STEM=$(echo "${SRC_NAME}" | sed -Ee 's/\.(app|framework|plugin)$//') 105 SRC_STEM=$(echo "${SRC_NAME}" | sed -Ee 's/\.(app|framework|plugin)$//')
106 DSYM_NAME="${SRC_NAME}.dSYM" 106 DSYM_NAME="${SRC_NAME}.dSYM"
107 DSYM_PATH="${BUILT_PRODUCTS_DIR}/${DSYM_NAME}" 107 DSYM_PATH="${BUILT_PRODUCTS_DIR}/${DSYM_NAME}"
108 DWARF_PATH="${DSYM_PATH}/Contents/Resources/DWARF/${SRC_STEM}" 108 DWARF_PATH="${DSYM_PATH}/Contents/Resources/DWARF/${SRC_STEM}"
109 109
110 # SRC_PATH is the path to the Mach-O file to which the DSYM_PATH corresponds.
111 # If this is a directory, it is a bundle, and the path to the actual image
112 # needs to be computed for dump_syms.
113 SRC_PREFIX="${BUILT_PRODUCTS_DIR}/${SRC_NAME}"
114 SRC_PATH=""
115 if [[ -d "${SRC_PREFIX}" ]]; then
116 BUNDLED_OPTIONS=(
117 # Executables and plugins:
118 "${SRC_PREFIX}/Contents/MacOS/${SRC_STEM}"
119 # Frameworks:
120 "${SRC_PREFIX}/Versions/Current/${SRC_STEM}"
121 )
122 for BUNDLED_OPTION in "${BUNDLED_OPTIONS[@]}"; do
123 if [[ -e "${BUNDLED_OPTION}" ]]; then
Mark Mentovai 2014/07/25 22:28:43 Use a combination of -f and -x, not -e.
Robert Sesek 2014/07/25 22:37:36 Done.
124 SRC_PATH="${BUNDLED_OPTION}"
125 break
126 fi
127 done
128
129 if [[ -z "${SRC_PATH}" ]]; then
130 echo "${0}: Could not find bundled Mach-O file for ${SRC_NAME}"
131 exit 1
132 fi
133 else
134 # The Mach-O file is not a bundle.
135 SRC_PATH="${SRC_PREFIX}"
136 fi
137
110 ARCHS=$(file "${DWARF_PATH}" | sed -Ene 's/^.*(i386|x86_64)$/\1/p') 138 ARCHS=$(file "${DWARF_PATH}" | sed -Ene 's/^.*(i386|x86_64)$/\1/p')
111 if [[ -z "${ARCHS}" ]]; then 139 if [[ -z "${ARCHS}" ]]; then
112 echo "${0}: expected something dumpable in ${DWARF_PATH}" >& 2 140 echo "${0}: expected something dumpable in ${DWARF_PATH}" >& 2
113 exit 1 141 exit 1
114 fi 142 fi
115 143
116 for ARCH in ${ARCHS}; do 144 for ARCH in ${ARCHS}; do
117 BPAD_SYM_NAME="${SRC_NAME}-${FULL_VERSION}-${ARCH}.breakpad" 145 BPAD_SYM_NAME="${SRC_NAME}-${FULL_VERSION}-${ARCH}.breakpad"
118 BPAD_SYM_PATH="${BUILT_PRODUCTS_DIR}/${BPAD_SYM_NAME}" 146 BPAD_SYM_PATH="${BUILT_PRODUCTS_DIR}/${BPAD_SYM_NAME}"
119 147
120 # Only run dump_syms if the file has changed since the last dump. Use -c 148 # Only run dump_syms if the file has changed since the last dump. Use -g
121 # to avoid dumping CFI, because the Breakpad stackwalk is incompatible 149 # to dump data from the dSYM and CFI data from the Mach-O library or
122 # with CFI produced by clang. 150 # executable.
123 # http://code.google.com/p/google-breakpad/issues/detail?id=443
124 if [ "${DWARF_PATH}" -nt "${BPAD_SYM_PATH}" ] ; then 151 if [ "${DWARF_PATH}" -nt "${BPAD_SYM_PATH}" ] ; then
Mark Mentovai 2014/07/25 22:28:43 You should also check if SRC_PATH is newer than BP
Robert Sesek 2014/07/25 22:37:36 Done.
125 "${BREAKPAD_DUMP_SYMS}" -a "${ARCH}" -c "${DWARF_PATH}" > \ 152 "${BREAKPAD_DUMP_SYMS}" -a "${ARCH}" -g "${DWARF_PATH}" "${SRC_PATH}" > \
126 "${BPAD_SYM_PATH}" 153 "${BPAD_SYM_PATH}"
127 fi 154 fi
128 155
129 # Some executables will show up with variant names. The Breakpad symbol 156 # Some executables will show up with variant names. The Breakpad symbol
130 # server looks up modules based on a combination of the module name and 157 # server looks up modules based on a combination of the module name and
131 # identifier (UUID). Produce symbol files for these variant names so that 158 # identifier (UUID). Produce symbol files for these variant names so that
132 # the Breakpad symbol server will have something to return for stacks that 159 # the Breakpad symbol server will have something to return for stacks that
133 # travel through these modules. 160 # travel through these modules.
134 case "${SRC_NAME}" in 161 case "${SRC_NAME}" in
135 "${SRC_APP_NAME}.app") 162 "${SRC_APP_NAME}.app")
(...skipping 24 matching lines...) Expand all
160 # the .dSYM archive if a new one is needed 187 # the .dSYM archive if a new one is needed
161 DSYMS[${#DSYMS[@]}]="${DSYM_NAME}" 188 DSYMS[${#DSYMS[@]}]="${DSYM_NAME}"
162 done 189 done
163 190
164 # Create the archive of .dSYM bundles. 191 # Create the archive of .dSYM bundles.
165 if [ ! -e "${DSYM_TAR_PATH}" ] ; then 192 if [ ! -e "${DSYM_TAR_PATH}" ] ; then
166 # Change directory so that absolute paths aren't included in the archive. 193 # Change directory so that absolute paths aren't included in the archive.
167 (cd "${BUILT_PRODUCTS_DIR}" && 194 (cd "${BUILT_PRODUCTS_DIR}" &&
168 tar -jcf "${DSYM_TAR_PATH}" "${DSYMS[@]}") 195 tar -jcf "${DSYM_TAR_PATH}" "${DSYMS[@]}")
169 fi 196 fi
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698