summaryrefslogtreecommitdiffstats
path: root/chrome/chrome.gyp
diff options
context:
space:
mode:
authormark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-19 20:55:49 +0000
committermark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-19 20:55:49 +0000
commit3115bf87e34f5c40c93eb9349cda1a040f38573b (patch)
tree4d0d143e5bde078ea1bf4bb78d37b72077a0fc88 /chrome/chrome.gyp
parent08f0a19132581e09be48b13933ec2a90813fd052 (diff)
downloadchromium_src-3115bf87e34f5c40c93eb9349cda1a040f38573b.zip
chromium_src-3115bf87e34f5c40c93eb9349cda1a040f38573b.tar.gz
chromium_src-3115bf87e34f5c40c93eb9349cda1a040f38573b.tar.bz2
Add an .order file to ensure that no global text symbol winds up at an address
higher than _ChromeMain, so that CrashReporter stacks and other symbolized stacks aren't so confusing. Add a tool to verify that nothing violates this ordering requirement. BUG=28257 TEST=verify_order, which is part of the build Review URL: http://codereview.chromium.org/414003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32539 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/chrome.gyp')
-rwxr-xr-xchrome/chrome.gyp27
1 files changed, 25 insertions, 2 deletions
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index b9ba723..47ba1d3 100755
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -5726,6 +5726,7 @@
'mac_bundle': 1,
'xcode_settings': {
'CHROMIUM_BUNDLE_ID': '<(mac_bundle_id)',
+
# The dylib versions are of the form a[.b[.c]], where a is a
# 16-bit unsigned integer, and b and c are 8-bit unsigned
# integers. Any missing component is taken to be 0. The
@@ -5733,18 +5734,26 @@
# is to just use the build and patch numbers. There is no
# ambiguity in this scheme because the build number is
# guaranteed unique even across distinct major and minor
- # version numbers.
+ # version numbers. These settings correspond to
+ # -compatibility_version and -current_version.
'DYLIB_COMPATIBILITY_VERSION': '<(version_build_patch)',
'DYLIB_CURRENT_VERSION': '<(version_build_patch)',
+
# The framework is placed within the .app's versioned
- # directory.
+ # directory. DYLIB_INSTALL_NAME_BASE and
+ # LD_DYLIB_INSTALL_NAME affect -install_name.
'DYLIB_INSTALL_NAME_BASE':
'@executable_path/../Versions/<(version_full)',
# See tools/build/mac/copy_framework_unversioned for
# information on LD_DYLIB_INSTALL_NAME.
'LD_DYLIB_INSTALL_NAME':
'$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(WRAPPER_NAME)/$(PRODUCT_NAME)',
+
'INFOPLIST_FILE': 'app/framework-Info.plist',
+
+ # Define the order of symbols within the framework. This
+ # sets -order_file.
+ 'ORDER_FILE': 'app/framework.order',
},
'sources': [
'app/chrome_dll_main.cc',
@@ -5902,6 +5911,20 @@
],
'postbuilds': [
{
+ # This step causes an error to be raised if the .order file
+ # does not account for all global text symbols. It
+ # validates the completeness of the .order file.
+ 'postbuild_name': 'Verify global text symbol order',
+ 'variables': {
+ 'verify_order_path': 'tools/build/mac/verify_order',
+ },
+ 'action': [
+ '<(verify_order_path)',
+ '_ChromeMain',
+ '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
+ ],
+ },
+ {
# Modify the Info.plist as needed. The script explains why
# this is needed. This is also done in the chrome target.
# The framework needs the Breakpad and Keystone keys if