|
|
Created:
7 years, 7 months ago by scottmg Modified:
7 years, 7 months ago CC:
chromium-reviews Base URL:
svn://svn.chromium.org/chrome/trunk/src Visibility:
Public. |
DescriptionIdentify data exports during split_link
Generates proper .def files that include "DATA" so that non-functions are
correctly exported.
However, for split_link because the "other" side won't import them properly
(__declspec(dllimport) is required) split_link notes them, and errors out.
This also adds support for linking individual objs out of libs so that some
_constants.cc and _switches.cc files can easily be linked into both DLLs.
R=cpu@chromium.org
BUG=237249
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=201119
Patch Set 1 #Patch Set 2 : report data deps, since we don't have a good way to export them #Patch Set 3 : . #Patch Set 4 : ability to pull individual obj from lib #Patch Set 5 : add some constants and switches to both sides via sub obj extraction #Patch Set 6 : some more 'all' sub objs #Patch Set 7 : error checking and a couple more objs #Patch Set 8 : . #Messages
Total messages: 10 (0 generated)
Here's the current list: After https://codereview.chromium.org/15403002/ (almost?) all of them are just int or string constants. If we can split just those constants out in to separate .cc files (and ideally separate gyp targets/.libs) then we can just put them in both sides in here: https://code.google.com/p/chromium/codesearch#chromium/src/build/split_link_p... If it's too messy to make new targets for the constants files, I could also make split_link crack .lib files and put particular .obj files in both sides, so then we'd only have to break them out into a file, but not mess with gyp too much. part 0 contains data export: wchar_t const * const appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache @@3QB_WB) part 0 contains data export: char const * const switches::kAudioBufferSize (aka ?kAudioBufferSize@switches@@3QBDB) part 0 contains data export: int const fileapi::kCreateFilePermissions (aka ?kCreateFilePermissions@fileapi@@3HB) part 0 contains data export: wchar_t const * const webkit_database::kDatabaseDirectoryName (aka ?kDatabaseDirectoryName@webkit_database@@3QB_WB) part 0 contains data export: char const * const switches::kDebugPluginLoading (aka ?kDebugPluginLoading@switches@@3QBDB) part 0 contains data export: public: static char const * const media::AudioManagerBase::kDefaultDeviceId (aka ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) part 0 contains data export: char const * const switches::kDisableEncryptedMedia (aka ?kDisableEncryptedMedia@switches @@3QBDB) part 0 contains data export: char const * const switches::kDisablePepper3d (aka ?kDisablePepper3d@switches@@3QBDB) part 0 contains data export: char const * const switches::kEnableEac3Playback (aka ?kEnableEac3Playback@switches@@3QBDB) part 0 contains data export: char const * const switches::kEnableOpusPlayback (aka ?kEnableOpusPlayback@switches@@3QBDB) part 0 contains data export: char const * const switches::kEnableVp8AlphaPlayback (aka ?kEnableVp8AlphaPlayback@switches @@3QBDB) part 0 contains data export: char const * const switches::kEnableVp9Playback (aka ?kEnableVp9Playback@switches@@3QBDB) part 0 contains data export: char const * const kFlashPluginName (aka ?kFlashPluginName@@3QBDB) part 0 contains data export: char const * const kFlashPluginSplDescription (aka ?kFlashPluginSplDescription@@3QBDB) part 0 contains data export: char const * const kFlashPluginSplExtension (aka ?kFlashPluginSplExtension@@3QBDB) part 0 contains data export: char const * const kFlashPluginSplMimeType (aka ?kFlashPluginSplMimeType@@3QBDB) part 0 contains data export: char const * const kFlashPluginSwfDescription (aka ?kFlashPluginSwfDescription@@3QBDB) part 0 contains data export: char const * const kFlashPluginSwfExtension (aka ?kFlashPluginSwfExtension@@3QBDB) part 0 contains data export: char const * const kFlashPluginSwfMimeType (aka ?kFlashPluginSwfMimeType@@3QBDB) part 0 contains data export: char const * const fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi@@3QBDB) part 0 contains data export: wchar_t const * const webkit::npapi::kNewWMPPlugin (aka ?kNewWMPPlugin@npapi@webkit@@3QB_WB) part 0 contains data export: int const fileapi::kOpenFilePermissions (aka ?kOpenFilePermissions@fileapi@@3HB) part 0 contains data export: wchar_t const * const webkit::npapi::kPaintMessageName (aka ?kPaintMessageName@npapi@webkit@ @3QB_WB) part 0 contains data export: char const * const switches::kPpapiFlashArgs (aka ?kPpapiFlashArgs@switches@@3QBDB) part 0 contains data export: int const fileapi::kReadFilePermissions (aka ?kReadFilePermissions@fileapi@@3HB) part 0 contains data export: wchar_t const * const webkit::npapi::kRegistryMozillaPlugins (aka ?kRegistryMozillaPlugins@npapi @webkit@@3QB_WB) part 0 contains data export: wchar_t const * const webkit_database::kTrackerDatabaseFileName (aka ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) part 0 contains data export: char const * const switches::kVideoThreads (aka ?kVideoThreads@switches@@3QBDB) part 0 contains data export: wchar_t const * const webkit::npapi::kWrapperNativeWindowClassName (aka ?kWrapperNativeWindowClassName@npapi@webkit@@3QB_WB) part 0 contains data export: int const fileapi::kWriteFilePermissions (aka ?kWriteFilePermissions@fileapi@@3HB) part 1 contains data export: int const printing::FIRST_PAGE_INDEX (aka ?FIRST_PAGE_INDEX@printing@@3HB) part 1 contains data export: private: static class content::ChildProcess * content::ChildProcess::child_process_ (aka ?child_process_@ChildProcess @content@@0PAV12@A) part 1 contains data export: unsigned int const gMask_00FF00FF (aka ?gMask_00FF00FF@@3IB) part 1 contains data export: private: static unsigned int const * const SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) part 1 contains data export: enum logging::DcheckState logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1@A) part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@@3HA) part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@@3HA) part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@@3HA) part 1 contains data export: private: static class base::StatsTable * base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ @0PAV12@A) part 1 contains data export: char const * const content::kAboutBlankURL (aka ?kAboutBlankURL@content@@3QBDB) part 1 contains data export: char const * const chrome::kAboutScheme (aka ?kAboutScheme@chrome@@3QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kAcceptEncoding (aka ?kAcceptEncoding@HttpRequestHeaders@net@@2QBDB) part 1 contains data export: char const * const extension_misc::kAppLaunchHistogram (aka ?kAppLaunchHistogram@extension_misc @@3QBDB) part 1 contains data export: char const * const extension_misc::kAppStateCannotRun (aka ?kAppStateCannotRun@extension_misc @@3QBDB) part 1 contains data export: char const * const extension_misc::kAppStateReadyToRun (aka ?kAppStateReadyToRun@extension_misc @@3QBDB) part 1 contains data export: char const * const extension_misc::kAppStateRunning (aka ?kAppStateRunning@extension_misc @@3QBDB) part 1 contains data export: char const * const switches::kAppsCheckoutURL (aka ?kAppsCheckoutURL@switches@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeAutoSize (aka ?kAttributeAutoSize@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeContentWindow (aka ?kAttributeContentWindow@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeMaxHeight (aka ?kAttributeMaxHeight@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeMaxWidth (aka ?kAttributeMaxWidth@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeMinHeight (aka ?kAttributeMinHeight@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeMinWidth (aka ?kAttributeMinWidth@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeName (aka ?kAttributeName@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributePartition (aka ?kAttributePartition@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kAttributeSrc (aka ?kAttributeSrc@browser_plugin @content@@3QBDB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kAutoGainControl (aka ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: char const * const cc::switches::kBackgroundColorInsteadOfCheckerboard (aka ?kBackgroundColorInsteadOfCheckerboard@switches@cc@@3QBDB) part 1 contains data export: char const * const content::kBrowserPluginMimeType (aka ?kBrowserPluginMimeType@content@@3QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kCacheControl (aka ?kCacheControl@HttpRequestHeaders@net@@2QBDB) part 1 contains data export: char const * const extension_manifest_errors::kCannotAccessPage (aka ?kCannotAccessPage@extension_manifest_errors@@3QBDB) part 1 contains data export: char const * const chrome::kChromeDevToolsScheme (aka ?kChromeDevToolsScheme@chrome@@3QBDB) part 1 contains data export: char const * const switches::kChromeFrame (aka ?kChromeFrame@switches@@3QBDB) part 1 contains data export: char const * const chrome::kChromeInternalScheme (aka ?kChromeInternalScheme@chrome@@3QBDB) part 1 contains data export: char const * const chrome::kChromeSearchMostVisitedUrl (aka ?kChromeSearchMostVisitedUrl@chrome @@3QBDB) part 1 contains data export: char const * const chrome::kChromeSearchScheme (aka ?kChromeSearchScheme@chrome@@3QBDB) part 1 contains data export: char const * const chrome::kChromeSearchSuggestionUrl (aka ?kChromeSearchSuggestionUrl@chrome @@3QBDB) part 1 contains data export: char const * const content::kChromeUICrashURL (aka ?kChromeUICrashURL@content@@3QBDB) part 1 contains data export: char const * const chrome::kChromeUIExtensionIconHost (aka ?kChromeUIExtensionIconHost@chrome @@3QBDB) part 1 contains data export: char const * const content::kChromeUIHangURL (aka ?kChromeUIHangURL@content@@3QBDB) part 1 contains data export: char const * const content::kChromeUIKillURL (aka ?kChromeUIKillURL@content@@3QBDB) part 1 contains data export: char const * const chrome::kChromeUIScheme (aka ?kChromeUIScheme@chrome@@3QBDB) part 1 contains data export: char const * const content::kChromeUIShorthangURL (aka ?kChromeUIShorthangURL@content@@3QBDB) part 1 contains data export: char const * const base::kCodepageUTF8 (aka ?kCodepageUTF8@base@@3QBDB) part 1 contains data export: char const * const cc::switches::kCompositeToMailbox (aka ?kCompositeToMailbox@switches@cc@ @3QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kContentLength (aka ?kContentLength@HttpRequestHeaders@net@@2QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kContentType (aka ?kContentType@HttpRequestHeaders @net@@2QBDB) part 1 contains data export: public: static wchar_t const * const base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath@base@ @2QB_WB) part 1 contains data export: char const * const chrome::kDataScheme (aka ?kDataScheme@chrome@@3QBDB) part 1 contains data export: public: static char const * const base::debug::CategoryFilter::kDefaultCategoryFilterString (aka ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) part 1 contains data export: char const * const switches::kDefaultTileHeight (aka ?kDefaultTileHeight@switches@@3QBDB) part 1 contains data export: char const * const switches::kDefaultTileWidth (aka ?kDefaultTileWidth@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisable3DAPIs (aka ?kDisable3DAPIs@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableAcceleratedCompositing (aka ?kDisableAcceleratedCompositing@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableAcceleratedVideoDecode (aka ?kDisableAcceleratedVideoDecode@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableApplicationCache (aka ?kDisableApplicationCache@switches @@3QBDB) part 1 contains data export: char const * const switches::kDisableAudio (aka ?kDisableAudio@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableClientSidePhishingDetection (aka ?kDisableClientSidePhishingDetection@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kDisableColorEstimator (aka ?kDisableColorEstimator@switches @cc@@3QBDB) part 1 contains data export: char const * const switches::kDisableCompositingForFixedPosition (aka ?kDisableCompositingForFixedPosition@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableDatabases (aka ?kDisableDatabases@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableDesktopNotifications (aka ?kDisableDesktopNotifications@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableDeviceOrientation (aka ?kDisableDeviceOrientation@switches @@3QBDB) part 1 contains data export: char const * const switches::kDisableExtensionsResourceWhitelist (aka ?kDisableExtensionsResourceWhitelist@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableFileSystem (aka ?kDisableFileSystem@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableFlashFullscreen3d (aka ?kDisableFlashFullscreen3d@switches @@3QBDB) part 1 contains data export: char const * const switches::kDisableFullScreen (aka ?kDisableFullScreen@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableGeolocation (aka ?kDisableGeolocation@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableGpuVsync (aka ?kDisableGpuVsync@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableHTMLNotifications (aka ?kDisableHTMLNotifications@switches @@3QBDB) part 1 contains data export: char const * const switches::kDisableHistogramCustomizer (aka ?kDisableHistogramCustomizer@switches@@3QBDB) part 1 contains data export: char const * const autofill::switches::kDisableInteractiveAutocomplete (aka ?kDisableInteractiveAutocomplete@switches@autofill@@3QBDB) part 1 contains data export: char const * const switches::kDisableJavaScriptI18NAPI (aka ?kDisableJavaScriptI18NAPI@switches @@3QBDB) part 1 contains data export: char const * const switches::kDisableLocalStorage (aka ?kDisableLocalStorage@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableScriptedPrintThrottling (aka ?kDisableScriptedPrintThrottling@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableSessionStorage (aka ?kDisableSessionStorage@switches @@3QBDB) part 1 contains data export: char const * const switches::kDisableSharedWorkers (aka ?kDisableSharedWorkers@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableSpeechInput (aka ?kDisableSpeechInput@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kDisableThreadedAnimation (aka ?kDisableThreadedAnimation@switches@cc@@3QBDB) part 1 contains data export: char const * const switches::kDisableWebAudio (aka ?kDisableWebAudio@switches@@3QBDB) part 1 contains data export: char const * const switches::kDisableWebKitMediaSource (aka ?kDisableWebKitMediaSource@switches @@3QBDB) part 1 contains data export: char const * const switches::kDomAutomationController (aka ?kDomAutomationController@switches @@3QBDB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kEchoCancellation (aka ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@ @std@@B) part 1 contains data export: public: static struct tagVARIANT const base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant @win@base@@2UtagVARIANT@@B) part 1 contains data export: char const * const switches::kEnableAcceleratedPainting (aka ?kEnableAcceleratedPainting@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableAccessibilityLogging (aka ?kEnableAccessibilityLogging@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableAdview (aka ?kEnableAdview@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableAdviewSrcAttribute (aka ?kEnableAdviewSrcAttribute@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableBenchmarking (aka ?kEnableBenchmarking@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableBrowserPluginForAllViewTypes (aka ?kEnableBrowserPluginForAllViewTypes@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableCompositingForFixedPosition (aka ?kEnableCompositingForFixedPosition@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kEnableCompositorFrameMessage (aka ?kEnableCompositorFrameMessage@switches@cc@@3QBDB) part 1 contains data export: char const * const switches::kEnableDelegatedRenderer (aka ?kEnableDelegatedRenderer@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableDeviceMotion (aka ?kEnableDeviceMotion@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableExperimentalCanvasFeatures (aka ?kEnableExperimentalCanvasFeatures@switches@@3QBDB) part 1 contains data export: char const * const autofill::switches::kEnableExperimentalFormFilling (aka ?kEnableExperimentalFormFilling@switches@autofill@@3QBDB) part 1 contains data export: char const * const switches::kEnableExperimentalWebKitFeatures (aka ?kEnableExperimentalWebKitFeatures@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableFixedLayout (aka ?kEnableFixedLayout@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableGpuBenchmarking (aka ?kEnableGpuBenchmarking@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableHighDpiCompositingForFixedPosition (aka ?kEnableHighDpiCompositingForFixedPosition@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableIPCFuzzing (aka ?kEnableIPCFuzzing@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableMemoryBenchmarking (aka ?kEnableMemoryBenchmarking@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableNaCl (aka ?kEnableNaCl@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableNetBenchmarking (aka ?kEnableNetBenchmarking@switches @@3QBDB) part 1 contains data export: char const * const cc::switches::kEnablePartialSwap (aka ?kEnablePartialSwap@switches@cc@ @3QBDB) part 1 contains data export: char const * const switches::kEnablePasswordGeneration (aka ?kEnablePasswordGeneration@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnablePepperTesting (aka ?kEnablePepperTesting@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kEnablePerTilePainting (aka ?kEnablePerTilePainting@switches @cc@@3QBDB) part 1 contains data export: char const * const switches::kEnablePinch (aka ?kEnablePinch@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kEnablePinchZoomScrollbars (aka ?kEnablePinchZoomScrollbars@switches@cc@@3QBDB) part 1 contains data export: char const * const switches::kEnablePnacl (aka ?kEnablePnacl@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnablePreparsedJsCaching (aka ?kEnablePreparsedJsCaching@switches @@3QBDB) part 1 contains data export: char const * const cc::switches::kEnableRightAlignedScheduling (aka ?kEnableRightAlignedScheduling@switches@cc@@3QBDB) part 1 contains data export: char const * const switches::kEnableSkiaBenchmarking (aka ?kEnableSkiaBenchmarking@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableSoftwareCompositingGLAdapter (aka ?kEnableSoftwareCompositingGLAdapter@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableSpeechSynthesis (aka ?kEnableSpeechSynthesis@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableSpellingAutoCorrect (aka ?kEnableSpellingAutoCorrect@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableStrictSiteIsolation (aka ?kEnableStrictSiteIsolation@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableThreadedCompositing (aka ?kEnableThreadedCompositing@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kEnableTopControlsPositionCalculation (aka ?kEnableTopControlsPositionCalculation@switches@cc@@3QBDB) part 1 contains data export: char const * const switches::kEnableViewport (aka ?kEnableViewport@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableVsyncNotification (aka ?kEnableVsyncNotification@switches @@3QBDB) part 1 contains data export: char const * const switches::kEnableWatchdog (aka ?kEnableWatchdog@switches@@3QBDB) part 1 contains data export: char const * const switches::kEnableWebMIDI (aka ?kEnableWebMIDI@switches@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kErrorAlreadyNavigated (aka ?kErrorAlreadyNavigated@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kErrorCannotRemovePartition (aka ?kErrorCannotRemovePartition@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const net::kErrorDomain (aka ?kErrorDomain@net@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kErrorInvalidPartition (aka ?kErrorInvalidPartition@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventClose (aka ?kEventClose@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventConsoleMessage (aka ?kEventConsoleMessage@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventContentLoad (aka ?kEventContentLoad@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventExit (aka ?kEventExit@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventLoadAbort (aka ?kEventLoadAbort@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventLoadCommit (aka ?kEventLoadCommit@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventLoadRedirect (aka ?kEventLoadRedirect@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventLoadStart (aka ?kEventLoadStart@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventLoadStop (aka ?kEventLoadStop@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventNewWindow (aka ?kEventNewWindow@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventRequestPermission (aka ?kEventRequestPermission@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventResponsive (aka ?kEventResponsive@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventSizeChanged (aka ?kEventSizeChanged@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kEventUnresponsive (aka ?kEventUnresponsive@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const chrome::kExtensionInvalidRequestURL (aka ?kExtensionInvalidRequestURL@chrome @@3QBDB) part 1 contains data export: char const * const switches::kExtensionProcess (aka ?kExtensionProcess@switches@@3QBDB) part 1 contains data export: char const * const chrome::kExtensionResourceInvalidRequestURL (aka ?kExtensionResourceInvalidRequestURL@chrome@@3QBDB) part 1 contains data export: char const * const chrome::kExtensionResourceScheme (aka ?kExtensionResourceScheme@chrome @@3QBDB) part 1 contains data export: char const * const extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) part 1 contains data export: public: static int const ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) part 1 contains data export: int const gfx::kFaviconSize (aka ?kFaviconSize@gfx@@3HB) part 1 contains data export: char const * const chrome::kFileScheme (aka ?kFileScheme@chrome@@3QBDB) part 1 contains data export: char const * const switches::kForceFieldTrials (aka ?kForceFieldTrials@switches@@3QBDB) part 1 contains data export: char const * const chrome::kFtpScheme (aka ?kFtpScheme@chrome@@3QBDB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kHighpassFilter (aka ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: int const content::kHistogramSynchronizerReservedSequenceNumber (aka ?kHistogramSynchronizerReservedSequenceNumber@content@@3HB) part 1 contains data export: public: static char const * const LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError @@2QBDB) part 1 contains data export: char const * const chrome::kHttpScheme (aka ?kHttpScheme@chrome@@3QBDB) part 1 contains data export: char const * const chrome::kHttpsScheme (aka ?kHttpsScheme@chrome@@3QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kIfModifiedSince (aka ?kIfModifiedSince@HttpRequestHeaders@net@@2QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kIfNoneMatch (aka ?kIfNoneMatch@HttpRequestHeaders @net@@2QBDB) part 1 contains data export: char const * const switches::kInProcessPlugins (aka ?kInProcessPlugins@switches@@3QBDB) part 1 contains data export: int const content::browser_plugin::kInstanceIDNone (aka ?kInstanceIDNone@browser_plugin@content@@3HB) part 1 contains data export: char const * const switches::kInstantProcess (aka ?kInstantProcess@switches@@3QBDB) part 1 contains data export: public: static void * base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ @2QAXA) part 1 contains data export: public: static struct PP_NetAddress_Private const ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@@2UPP_NetAddress_Private@@B) part 1 contains data export: char const * const printing::kIsFirstRequest (aka ?kIsFirstRequest@printing@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kIsTopLevel (aka ?kIsTopLevel@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const switches::kJavaScriptFlags (aka ?kJavaScriptFlags@switches@@3QBDB) part 1 contains data export: char const * const chrome::kJavaScriptScheme (aka ?kJavaScriptScheme@chrome@@3QBDB) part 1 contains data export: char const * const switches::kLang (aka ?kLang@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kLowResolutionContentsScaleFactor (aka ?kLowResolutionContentsScaleFactor@switches@cc@@3QBDB) part 1 contains data export: int const content::kMaxSessionHistoryEntries (aka ?kMaxSessionHistoryEntries@content@@3HB) part 1 contains data export: char const * const cc::switches::kMaxTilesForInterestArea (aka ?kMaxTilesForInterestArea@switches@cc@@3QBDB) part 1 contains data export: unsigned int const content::kMaxTitleChars (aka ?kMaxTitleChars@content@@3IB) part 1 contains data export: unsigned int const content::kMaxURLChars (aka ?kMaxURLChars@content@@3IB) part 1 contains data export: char const * const switches::kMaxUntiledLayerHeight (aka ?kMaxUntiledLayerHeight@switches @@3QBDB) part 1 contains data export: char const * const switches::kMaxUntiledLayerWidth (aka ?kMaxUntiledLayerWidth@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kMaxUnusedResourceMemoryUsagePercentage (aka ?kMaxUnusedResourceMemoryUsagePercentage@switches@cc@@3QBDB) part 1 contains data export: double const content::kMaximumZoomFactor (aka ?kMaximumZoomFactor@content@@3NB) part 1 contains data export: char const * const extension_misc::kMediaFileSystemPathPart (aka ?kMediaFileSystemPathPart@extension_misc@@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content@@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content @@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content@@3QBDB) part 1 contains data export: char const * const switches::kMemoryMetrics (aka ?kMemoryMetrics@switches@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodBack (aka ?kMethodBack@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodCanGoBack (aka ?kMethodCanGoBack@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodCanGoForward (aka ?kMethodCanGoForward@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodForward (aka ?kMethodForward@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodGetProcessId (aka ?kMethodGetProcessId@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodGetRouteId (aka ?kMethodGetRouteId@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodGo (aka ?kMethodGo@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodInternalAttachWindowTo (aka ?kMethodInternalAttachWindowTo@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodInternalPersistObject (aka ?kMethodInternalPersistObject@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodInternalSetPermission (aka ?kMethodInternalSetPermission@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodReload (aka ?kMethodReload@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodStop (aka ?kMethodStop@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kMethodTerminate (aka ?kMethodTerminate@browser_plugin@content@@3QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard@ui@ @2QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@@2QBDB) part 1 contains data export: double const content::kMinimumZoomFactor (aka ?kMinimumZoomFactor@content@@3NB) part 1 contains data export: public: static char const * const chrome::ChromeContentClient::kNaClPluginName (aka ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) part 1 contains data export: char const * const content::browser_plugin::kNewHeight (aka ?kNewHeight@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const content::browser_plugin::kNewURL (aka ?kNewURL@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const content::browser_plugin::kNewWidth (aka ?kNewWidth@browser_plugin@content@ @3QBDB) part 1 contains data export: public: static int const content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@@2HB) part 1 contains data export: char const * const switches::kNoJsRandomness (aka ?kNoJsRandomness@switches@@3QBDB) part 1 contains data export: char const * const switches::kNoSandbox (aka ?kNoSandbox@switches@@3QBDB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kNoiseSuppression (aka ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: char const * const cc::switches::kNumRasterThreads (aka ?kNumRasterThreads@switches@cc@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kOldHeight (aka ?kOldHeight@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const content::browser_plugin::kOldURL (aka ?kOldURL@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const content::browser_plugin::kOldWidth (aka ?kOldWidth@browser_plugin@content@ @3QBDB) part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits (aka ?kPPIdTypeBits@ppapi@@3IB) part 1 contains data export: char const * const content::browser_plugin::kPermission (aka ?kPermission@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kPermissionTypeDownload (aka ?kPermissionTypeDownload@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kPermissionTypeGeolocation (aka ?kPermissionTypeGeolocation@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kPermissionTypeMedia (aka ?kPermissionTypeMedia@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kPermissionTypeNewWindow (aka ?kPermissionTypeNewWindow@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kPermissionTypePointerLock (aka ?kPermissionTypePointerLock@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kPersistPrefix (aka ?kPersistPrefix@browser_plugin @content@@3QBDB) part 1 contains data export: char const * const extension_misc::kPlatformAppLaunchHistogram (aka ?kPlatformAppLaunchHistogram@extension_misc@@3QBDB) part 1 contains data export: char const * const switches::kPlaybackMode (aka ?kPlaybackMode@switches@@3QBDB) part 1 contains data export: char const * const printing::kPreviewRequestID (aka ?kPreviewRequestID@printing@@3QBDB) part 1 contains data export: char const * const printing::kPreviewUIID (aka ?kPreviewUIID@printing@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kProcessId (aka ?kProcessId@browser_plugin@content@ @3QBDB) part 1 contains data export: public: static char const * const net::HttpRequestHeaders::kRange (aka ?kRange@HttpRequestHeaders@net@@2QBDB) part 1 contains data export: char const * const content::browser_plugin::kReason (aka ?kReason@browser_plugin@content@ @3QBDB) part 1 contains data export: char const * const switches::kRecordMode (aka ?kRecordMode@switches@@3QBDB) part 1 contains data export: char const * const switches::kRendererAssertTest (aka ?kRendererAssertTest@switches@@3QBDB) part 1 contains data export: char const * const switches::kRendererPrintPreview (aka ?kRendererPrintPreview@switches@@3QBDB) part 1 contains data export: char const * const switches::kRendererStartupDialog (aka ?kRendererStartupDialog@switches @@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kRequestId (aka ?kRequestId@browser_plugin@content@ @3QBDB) part 1 contains data export: unsigned int const autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill @@3IB) part 1 contains data export: public: static wchar_t const * const base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) part 1 contains data export: char const * const printing::kSettingFitToPageEnabled (aka ?kSettingFitToPageEnabled@printing @@3QBDB) part 1 contains data export: char const * const printing::kSettingGenerateDraftData (aka ?kSettingGenerateDraftData@printing @@3QBDB) part 1 contains data export: char const * const printing::kSettingHeaderFooterDate (aka ?kSettingHeaderFooterDate@printing @@3QBDB) part 1 contains data export: char const * const printing::kSettingHeaderFooterEnabled (aka ?kSettingHeaderFooterEnabled@printing@@3QBDB) part 1 contains data export: char const * const printing::kSettingHeaderFooterTitle (aka ?kSettingHeaderFooterTitle@printing @@3QBDB) part 1 contains data export: char const * const printing::kSettingHeaderFooterURL (aka ?kSettingHeaderFooterURL@printing @@3QBDB) part 1 contains data export: char const * const printing::kSettingMarginsType (aka ?kSettingMarginsType@printing@@3QBDB) part 1 contains data export: char const * const printing::kSettingPreviewModifiable (aka ?kSettingPreviewModifiable@printing @@3QBDB) part 1 contains data export: char const * const printing::kSettingPrintToPDF (aka ?kSettingPrintToPDF@printing@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowCompositedLayerBorders (aka ?kShowCompositedLayerBorders@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowCompositedLayerTree (aka ?kShowCompositedLayerTree@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowFPSCounter (aka ?kShowFPSCounter@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowNonOccludingRects (aka ?kShowNonOccludingRects@switches @cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowOccludingRects (aka ?kShowOccludingRects@switches@cc@ @3QBDB) part 1 contains data export: char const * const switches::kShowPaintRects (aka ?kShowPaintRects@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowPropertyChangedRects (aka ?kShowPropertyChangedRects@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowReplicaScreenSpaceRects (aka ?kShowReplicaScreenSpaceRects@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kShowScreenSpaceRects (aka ?kShowScreenSpaceRects@switches@cc@ @3QBDB) part 1 contains data export: char const * const cc::switches::kShowSurfaceDamageRects (aka ?kShowSurfaceDamageRects@switches @cc@@3QBDB) part 1 contains data export: char const * const switches::kSigninProcess (aka ?kSigninProcess@switches@@3QBDB) part 1 contains data export: char const * const switches::kSingleProcess (aka ?kSingleProcess@switches@@3QBDB) part 1 contains data export: char const * const switches::kSitePerProcess (aka ?kSitePerProcess@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kSlowDownRasterScaleFactor (aka ?kSlowDownRasterScaleFactor@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kStrictLayerPropertyChangeChecking (aka ?kStrictLayerPropertyChangeChecking@switches@cc@@3QBDB) part 1 contains data export: char const * const chrome::kSwappedOutScheme (aka ?kSwappedOutScheme@chrome@@3QBDB) part 1 contains data export: char const * const content::kSwappedOutURL (aka ?kSwappedOutURL@content@@3QBDB) part 1 contains data export: char const * const switches::kTestSandbox (aka ?kTestSandbox@switches@@3QBDB) part 1 contains data export: char const * const cc::switches::kTopControlsHeight (aka ?kTopControlsHeight@switches@cc@ @3QBDB) part 1 contains data export: char const * const cc::switches::kTopControlsHideThreshold (aka ?kTopControlsHideThreshold@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kTopControlsShowThreshold (aka ?kTopControlsShowThreshold@switches@cc@@3QBDB) part 1 contains data export: char const * const cc::switches::kTraceOverdraw (aka ?kTraceOverdraw@switches@cc@@3QBDB) part 1 contains data export: char const * const content::browser_plugin::kURL (aka ?kURL@browser_plugin@content@@3QBDB) part 1 contains data export: char const * const chrome::kUnknownLanguageCode (aka ?kUnknownLanguageCode@chrome@@3QBDB) part 1 contains data export: char const * const content::kUnreachableWebDataURL (aka ?kUnreachableWebDataURL@content@@3QBDB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kValueFalse (aka ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: char const * const chrome::kViewSourceScheme (aka ?kViewSourceScheme@chrome@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeAll (aka ?kViewTypeAll@extensions@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeAppShell (aka ?kViewTypeAppShell@extensions@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeBackgroundPage (aka ?kViewTypeBackgroundPage@extensions @@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeExtensionDialog (aka ?kViewTypeExtensionDialog@extensions@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeInfobar (aka ?kViewTypeInfobar@extensions@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeNotification (aka ?kViewTypeNotification@extensions @@3QBDB) part 1 contains data export: char const * const extensions::kViewTypePanel (aka ?kViewTypePanel@extensions@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypePopup (aka ?kViewTypePopup@extensions@@3QBDB) part 1 contains data export: char const * const extensions::kViewTypeTabContents (aka ?kViewTypeTabContents@extensions @@3QBDB) part 1 contains data export: char const * const switches::kWaitForDebugger (aka ?kWaitForDebugger@switches@@3QBDB) part 1 contains data export: char const * const switches::kWebCoreLogChannels (aka ?kWebCoreLogChannels@switches@@3QBDB) part 1 contains data export: wchar_t const * const kWhitespaceUTF16 (aka ?kWhitespaceUTF16@@3QB_WB) part 1 contains data export: wchar_t const * const kWhitespaceWide (aka ?kWhitespaceWide@@3QB_WB) part 1 contains data export: private: static class ppapi::PpapiGlobals * ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals@ppapi@ @0PAV12@A) On Fri, May 17, 2013 at 9:20 PM, <scottmg@chromium.org> wrote: > Reviewers: cpu, ananta, > > Description: > add DATA declarations to split_link .def files > > And report error when they're added so they can be fixed. > > R=cpu@chromium.org, ananta@chromium.org > BUG=237249 > > Please review this at https://codereview.chromium.**org/15310002/<https://codereview.chromium.org/1... > > SVN Base: svn://svn.chromium.org/chrome/**trunk/src<http://svn.chromium.org/chrome/trunk/src> > > Affected files: > M tools/win/split_link/split_**link.py > > > Index: tools/win/split_link/split_**link.py > diff --git a/tools/win/split_link/split_**link.py > b/tools/win/split_link/split_**link.py > index 2b035c5418b2a70389ee903fb30820**d3a1c4d469..** > 7598df4e3c2f0f80419396c0db6f27**ae438fea2f 100644 > --- a/tools/win/split_link/split_**link.py > +++ b/tools/win/split_link/split_**link.py > @@ -179,6 +179,29 @@ def RunLinker(flags, index, inputs, phase): > return stdout, popen.returncode, output_name > > > +def Unmangle(export): > + "Returns the human-presentable name of a mangled symbol.""" > + # Use dbghelp.dll to demangle the name. > + # TODO(scottmg): Perhaps a simple cache? Seems pretty fast though. > + UnDecorateSymbolName = ctypes.windll.dbghelp.**UnDecorateSymbolName > + buffer_size = 2048 > + output_string = ctypes.create_string_buffer(**buffer_size) > + if not UnDecorateSymbolName( > + export, ctypes.byref(output_string), buffer_size, 0): > + raise ctypes.WinError() > + return output_string.value > + > + > +def IsDataDefinition(export): > + """Determines if a given name is data rather than a function. Always > returns > + False for C-style (as opposed to C++-style names).""" > + if export[0] != '?': > + return False > + > + # If it contains a '(' we assume it's a function. > + return '(' not in Unmangle(export) > + > + > def GenerateDefFiles(unresolved_**by_part): > """Given a list of unresolved externals, generates a .def file that will > cause all those symbols to be exported.""" > @@ -192,7 +215,10 @@ def GenerateDefFiles(unresolved_**by_part): > for j, part in enumerate(unresolved_by_part): > if i == j: > continue > - print >> f, '\n'.join(' ' + export for export in part) > + is_data = [' DATA' if IsDataDefinition(export) else '' > + for export in part] > + print >> f, '\n'.join(' ' + export + data > + for export, data in zip(part, is_data)) > deffiles.append(deffile) > return deffiles > > @@ -267,17 +293,31 @@ def main(): > import_libs = [None] * num_parts > deffiles = [None] * num_parts > > + data_exports = 0 > for i in range(5): > Log('--- starting pass %d' % i) > ok, dlls, unresolved_by_part = AttemptLink( > flags, inputs_by_part, unresolved_by_part, deffiles, import_libs) > if ok: > break > + data_exports = 0 > + for i, part in enumerate(unresolved_by_part): > + for export in part: > + if IsDataDefinition(export): > + print 'part %d contains data export: %s (aka %s)' % ( > + i, Unmangle(export), export) > + data_exports += 1 > deffiles = GenerateDefFiles(unresolved_**by_part) > import_libs = BuildImportLibs(flags, inputs_by_part, deffiles) > else: > return 1 > > + if data_exports: > + print 'Data exports found, see report above.' > + print('These cannot be exported, and must be either duplicated to the > ' > + 'target DLL, or wrapped in a function.') > + return 1 > + > mt_exe = GetMtPath() > for i, dll in enumerate(dlls): > Log('embedding manifest in %s' % dll) > > >
Another slightly crazy idea that might work for the constants: have the split linker find the value of those symbols in the other DLL, generate a C file with the contents, and then link that into the other side. I'm not sure how easy it is to get the value though. On Fri, May 17, 2013 at 9:25 PM, Scott Graham <scottmg@chromium.org> wrote: > Here's the current list: > > After https://codereview.chromium.org/15403002/ (almost?) all of them are > just int or string constants. If we can split just those constants out in > to separate .cc files (and ideally separate gyp targets/.libs) then we can > just put them in both sides in here: > https://code.google.com/p/chromium/codesearch#chromium/src/build/split_link_p... > > If it's too messy to make new targets for the constants files, I could > also make split_link crack .lib files and put particular .obj files in both > sides, so then we'd only have to break them out into a file, but not mess > with gyp too much. > > part 0 contains data export: wchar_t const * const > appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache > @@3QB_WB) > part 0 contains data export: char const * const switches::kAudioBufferSize > (aka ?kAudioBufferSize@switches@@3QBDB) > part 0 contains data export: int const fileapi::kCreateFilePermissions > (aka ?kCreateFilePermissions@fileapi@@3HB) > part 0 contains data export: wchar_t const * const > webkit_database::kDatabaseDirectoryName (aka > ?kDatabaseDirectoryName@webkit_database@@3QB_WB) > part 0 contains data export: char const * const > switches::kDebugPluginLoading (aka ?kDebugPluginLoading@switches@@3QBDB) > part 0 contains data export: public: static char const * const > media::AudioManagerBase::kDefaultDeviceId (aka > ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) > part 0 contains data export: char const * const > switches::kDisableEncryptedMedia (aka ?kDisableEncryptedMedia@switches > @@3QBDB) > part 0 contains data export: char const * const switches::kDisablePepper3d > (aka ?kDisablePepper3d@switches@@3QBDB) > part 0 contains data export: char const * const > switches::kEnableEac3Playback (aka ?kEnableEac3Playback@switches@@3QBDB) > part 0 contains data export: char const * const > switches::kEnableOpusPlayback (aka ?kEnableOpusPlayback@switches@@3QBDB) > part 0 contains data export: char const * const > switches::kEnableVp8AlphaPlayback (aka ?kEnableVp8AlphaPlayback@switches > @@3QBDB) > part 0 contains data export: char const * const > switches::kEnableVp9Playback (aka ?kEnableVp9Playback@switches@@3QBDB) > part 0 contains data export: char const * const kFlashPluginName (aka > ?kFlashPluginName@@3QBDB) > part 0 contains data export: char const * const kFlashPluginSplDescription > (aka ?kFlashPluginSplDescription@@3QBDB) > part 0 contains data export: char const * const kFlashPluginSplExtension > (aka ?kFlashPluginSplExtension@@3QBDB) > part 0 contains data export: char const * const kFlashPluginSplMimeType > (aka ?kFlashPluginSplMimeType@@3QBDB) > part 0 contains data export: char const * const kFlashPluginSwfDescription > (aka ?kFlashPluginSwfDescription@@3QBDB) > part 0 contains data export: char const * const kFlashPluginSwfExtension > (aka ?kFlashPluginSwfExtension@@3QBDB) > part 0 contains data export: char const * const kFlashPluginSwfMimeType > (aka ?kFlashPluginSwfMimeType@@3QBDB) > part 0 contains data export: char const * const > fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi@@3QBDB) > part 0 contains data export: wchar_t const * const > webkit::npapi::kNewWMPPlugin (aka ?kNewWMPPlugin@npapi@webkit@@3QB_WB) > part 0 contains data export: int const fileapi::kOpenFilePermissions (aka > ?kOpenFilePermissions@fileapi@@3HB) > part 0 contains data export: wchar_t const * const > webkit::npapi::kPaintMessageName (aka ?kPaintMessageName@npapi@webkit@ > @3QB_WB) > part 0 contains data export: char const * const switches::kPpapiFlashArgs > (aka ?kPpapiFlashArgs@switches@@3QBDB) > part 0 contains data export: int const fileapi::kReadFilePermissions (aka > ?kReadFilePermissions@fileapi@@3HB) > part 0 contains data export: wchar_t const * const > webkit::npapi::kRegistryMozillaPlugins (aka ?kRegistryMozillaPlugins@npapi > @webkit@@3QB_WB) > part 0 contains data export: wchar_t const * const > webkit_database::kTrackerDatabaseFileName (aka > ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) > part 0 contains data export: char const * const switches::kVideoThreads > (aka ?kVideoThreads@switches@@3QBDB) > part 0 contains data export: wchar_t const * const > webkit::npapi::kWrapperNativeWindowClassName (aka > ?kWrapperNativeWindowClassName@npapi@webkit@@3QB_WB) > part 0 contains data export: int const fileapi::kWriteFilePermissions (aka > ?kWriteFilePermissions@fileapi@@3HB) > part 1 contains data export: int const printing::FIRST_PAGE_INDEX (aka > ?FIRST_PAGE_INDEX@printing@@3HB) > part 1 contains data export: private: static class content::ChildProcess * > content::ChildProcess::child_process_ (aka ?child_process_@ChildProcess > @content@@0PAV12@A) > part 1 contains data export: unsigned int const gMask_00FF00FF (aka > ?gMask_00FF00FF@@3IB) > part 1 contains data export: private: static unsigned int const * const > SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) > part 1 contains data export: enum logging::DcheckState > logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1@A) > part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@@3HA) > part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@@3HA) > part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@@3HA) > part 1 contains data export: private: static class base::StatsTable * > base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ > @0PAV12@A) > part 1 contains data export: char const * const content::kAboutBlankURL > (aka ?kAboutBlankURL@content@@3QBDB) > part 1 contains data export: char const * const chrome::kAboutScheme (aka > ?kAboutScheme@chrome@@3QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kAcceptEncoding (aka > ?kAcceptEncoding@HttpRequestHeaders@net@@2QBDB) > part 1 contains data export: char const * const > extension_misc::kAppLaunchHistogram (aka ?kAppLaunchHistogram@extension_misc > @@3QBDB) > part 1 contains data export: char const * const > extension_misc::kAppStateCannotRun (aka ?kAppStateCannotRun@extension_misc > @@3QBDB) > part 1 contains data export: char const * const > extension_misc::kAppStateReadyToRun (aka ?kAppStateReadyToRun@extension_misc > @@3QBDB) > part 1 contains data export: char const * const > extension_misc::kAppStateRunning (aka ?kAppStateRunning@extension_misc > @@3QBDB) > part 1 contains data export: char const * const switches::kAppsCheckoutURL > (aka ?kAppsCheckoutURL@switches@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeAutoSize (aka > ?kAttributeAutoSize@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeContentWindow (aka > ?kAttributeContentWindow@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeMaxHeight (aka > ?kAttributeMaxHeight@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeMaxWidth (aka > ?kAttributeMaxWidth@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeMinHeight (aka > ?kAttributeMinHeight@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeMinWidth (aka > ?kAttributeMinWidth@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeName (aka ?kAttributeName@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributePartition (aka > ?kAttributePartition@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kAttributeSrc (aka ?kAttributeSrc@browser_plugin > @content@@3QBDB) > part 1 contains data export: public: static char const * const > webrtc::MediaConstraintsInterface::kAutoGainControl (aka > ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) > part 1 contains data export: char const * const > cc::switches::kBackgroundColorInsteadOfCheckerboard (aka > ?kBackgroundColorInsteadOfCheckerboard@switches@cc@@3QBDB) > part 1 contains data export: char const * const > content::kBrowserPluginMimeType (aka ?kBrowserPluginMimeType@content > @@3QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kCacheControl (aka > ?kCacheControl@HttpRequestHeaders@net@@2QBDB) > part 1 contains data export: char const * const > extension_manifest_errors::kCannotAccessPage (aka > ?kCannotAccessPage@extension_manifest_errors@@3QBDB) > part 1 contains data export: char const * const > chrome::kChromeDevToolsScheme (aka ?kChromeDevToolsScheme@chrome@@3QBDB) > part 1 contains data export: char const * const switches::kChromeFrame > (aka ?kChromeFrame@switches@@3QBDB) > part 1 contains data export: char const * const > chrome::kChromeInternalScheme (aka ?kChromeInternalScheme@chrome@@3QBDB) > part 1 contains data export: char const * const > chrome::kChromeSearchMostVisitedUrl (aka ?kChromeSearchMostVisitedUrl@chrome > @@3QBDB) > part 1 contains data export: char const * const > chrome::kChromeSearchScheme (aka ?kChromeSearchScheme@chrome@@3QBDB) > part 1 contains data export: char const * const > chrome::kChromeSearchSuggestionUrl (aka ?kChromeSearchSuggestionUrl@chrome > @@3QBDB) > part 1 contains data export: char const * const content::kChromeUICrashURL > (aka ?kChromeUICrashURL@content@@3QBDB) > part 1 contains data export: char const * const > chrome::kChromeUIExtensionIconHost (aka ?kChromeUIExtensionIconHost@chrome > @@3QBDB) > part 1 contains data export: char const * const content::kChromeUIHangURL > (aka ?kChromeUIHangURL@content@@3QBDB) > part 1 contains data export: char const * const content::kChromeUIKillURL > (aka ?kChromeUIKillURL@content@@3QBDB) > part 1 contains data export: char const * const chrome::kChromeUIScheme > (aka ?kChromeUIScheme@chrome@@3QBDB) > part 1 contains data export: char const * const > content::kChromeUIShorthangURL (aka ?kChromeUIShorthangURL@content@@3QBDB) > part 1 contains data export: char const * const base::kCodepageUTF8 (aka > ?kCodepageUTF8@base@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kCompositeToMailbox (aka ?kCompositeToMailbox@switches@cc@ > @3QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kContentLength (aka > ?kContentLength@HttpRequestHeaders@net@@2QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kContentType (aka ?kContentType@HttpRequestHeaders > @net@@2QBDB) > part 1 contains data export: public: static wchar_t const * const > base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath@base@ > @2QB_WB) > part 1 contains data export: char const * const chrome::kDataScheme (aka > ?kDataScheme@chrome@@3QBDB) > part 1 contains data export: public: static char const * const > base::debug::CategoryFilter::kDefaultCategoryFilterString (aka > ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) > part 1 contains data export: char const * const > switches::kDefaultTileHeight (aka ?kDefaultTileHeight@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDefaultTileWidth (aka ?kDefaultTileWidth@switches@@3QBDB) > part 1 contains data export: char const * const switches::kDisable3DAPIs > (aka ?kDisable3DAPIs@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableAcceleratedCompositing (aka > ?kDisableAcceleratedCompositing@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableAcceleratedVideoDecode (aka > ?kDisableAcceleratedVideoDecode@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableApplicationCache (aka ?kDisableApplicationCache@switches > @@3QBDB) > part 1 contains data export: char const * const switches::kDisableAudio > (aka ?kDisableAudio@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableClientSidePhishingDetection (aka > ?kDisableClientSidePhishingDetection@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kDisableColorEstimator (aka ?kDisableColorEstimator@switches > @cc@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableCompositingForFixedPosition (aka > ?kDisableCompositingForFixedPosition@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableDatabases (aka ?kDisableDatabases@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableDesktopNotifications (aka > ?kDisableDesktopNotifications@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableDeviceOrientation (aka ?kDisableDeviceOrientation@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDisableExtensionsResourceWhitelist (aka > ?kDisableExtensionsResourceWhitelist@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableFileSystem (aka ?kDisableFileSystem@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableFlashFullscreen3d (aka ?kDisableFlashFullscreen3d@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDisableFullScreen (aka ?kDisableFullScreen@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableGeolocation (aka ?kDisableGeolocation@switches@@3QBDB) > part 1 contains data export: char const * const switches::kDisableGpuVsync > (aka ?kDisableGpuVsync@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableHTMLNotifications (aka ?kDisableHTMLNotifications@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDisableHistogramCustomizer (aka > ?kDisableHistogramCustomizer@switches@@3QBDB) > part 1 contains data export: char const * const > autofill::switches::kDisableInteractiveAutocomplete (aka > ?kDisableInteractiveAutocomplete@switches@autofill@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableJavaScriptI18NAPI (aka ?kDisableJavaScriptI18NAPI@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDisableLocalStorage (aka ?kDisableLocalStorage@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableScriptedPrintThrottling (aka > ?kDisableScriptedPrintThrottling@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableSessionStorage (aka ?kDisableSessionStorage@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDisableSharedWorkers (aka ?kDisableSharedWorkers@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDisableSpeechInput (aka ?kDisableSpeechInput@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kDisableThreadedAnimation (aka > ?kDisableThreadedAnimation@switches@cc@@3QBDB) > part 1 contains data export: char const * const switches::kDisableWebAudio > (aka ?kDisableWebAudio@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kDisableWebKitMediaSource (aka ?kDisableWebKitMediaSource@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kDomAutomationController (aka ?kDomAutomationController@switches > @@3QBDB) > part 1 contains data export: public: static char const * const > webrtc::MediaConstraintsInterface::kEchoCancellation (aka > ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) > part 1 contains data export: class std::basic_string<char,struct > std::char_traits<char>,class std::allocator<char> > const > google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal > @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D > @2@@std@@B) > part 1 contains data export: public: static struct tagVARIANT const > base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant > @win@base@@2UtagVARIANT@@B) > part 1 contains data export: char const * const > switches::kEnableAcceleratedPainting (aka > ?kEnableAcceleratedPainting@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableAccessibilityLogging (aka > ?kEnableAccessibilityLogging@switches@@3QBDB) > part 1 contains data export: char const * const switches::kEnableAdview > (aka ?kEnableAdview@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableAdviewSrcAttribute (aka ?kEnableAdviewSrcAttribute@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kEnableBenchmarking (aka ?kEnableBenchmarking@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableBrowserPluginForAllViewTypes (aka > ?kEnableBrowserPluginForAllViewTypes@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableCompositingForFixedPosition (aka > ?kEnableCompositingForFixedPosition@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kEnableCompositorFrameMessage (aka > ?kEnableCompositorFrameMessage@switches@cc@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableDelegatedRenderer (aka ?kEnableDelegatedRenderer@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kEnableDeviceMotion (aka ?kEnableDeviceMotion@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableExperimentalCanvasFeatures (aka > ?kEnableExperimentalCanvasFeatures@switches@@3QBDB) > part 1 contains data export: char const * const > autofill::switches::kEnableExperimentalFormFilling (aka > ?kEnableExperimentalFormFilling@switches@autofill@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableExperimentalWebKitFeatures (aka > ?kEnableExperimentalWebKitFeatures@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableFixedLayout (aka ?kEnableFixedLayout@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableGpuBenchmarking (aka ?kEnableGpuBenchmarking@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kEnableHighDpiCompositingForFixedPosition (aka > ?kEnableHighDpiCompositingForFixedPosition@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableIPCFuzzing (aka ?kEnableIPCFuzzing@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableMemoryBenchmarking (aka ?kEnableMemoryBenchmarking@switches > @@3QBDB) > part 1 contains data export: char const * const switches::kEnableNaCl (aka > ?kEnableNaCl@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableNetBenchmarking (aka ?kEnableNetBenchmarking@switches > @@3QBDB) > part 1 contains data export: char const * const > cc::switches::kEnablePartialSwap (aka ?kEnablePartialSwap@switches@cc@ > @3QBDB) > part 1 contains data export: char const * const > switches::kEnablePasswordGeneration (aka ?kEnablePasswordGeneration@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kEnablePepperTesting (aka ?kEnablePepperTesting@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kEnablePerTilePainting (aka ?kEnablePerTilePainting@switches > @cc@@3QBDB) > part 1 contains data export: char const * const switches::kEnablePinch > (aka ?kEnablePinch@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kEnablePinchZoomScrollbars (aka > ?kEnablePinchZoomScrollbars@switches@cc@@3QBDB) > part 1 contains data export: char const * const switches::kEnablePnacl > (aka ?kEnablePnacl@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnablePreparsedJsCaching (aka ?kEnablePreparsedJsCaching@switches > @@3QBDB) > part 1 contains data export: char const * const > cc::switches::kEnableRightAlignedScheduling (aka > ?kEnableRightAlignedScheduling@switches@cc@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableSkiaBenchmarking (aka ?kEnableSkiaBenchmarking@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kEnableSoftwareCompositingGLAdapter (aka > ?kEnableSoftwareCompositingGLAdapter@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableSpeechSynthesis (aka ?kEnableSpeechSynthesis@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kEnableSpellingAutoCorrect (aka > ?kEnableSpellingAutoCorrect@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableStrictSiteIsolation (aka > ?kEnableStrictSiteIsolation@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableThreadedCompositing (aka > ?kEnableThreadedCompositing@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kEnableTopControlsPositionCalculation (aka > ?kEnableTopControlsPositionCalculation@switches@cc@@3QBDB) > part 1 contains data export: char const * const switches::kEnableViewport > (aka ?kEnableViewport@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kEnableVsyncNotification (aka ?kEnableVsyncNotification@switches > @@3QBDB) > part 1 contains data export: char const * const switches::kEnableWatchdog > (aka ?kEnableWatchdog@switches@@3QBDB) > part 1 contains data export: char const * const switches::kEnableWebMIDI > (aka ?kEnableWebMIDI@switches@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kErrorAlreadyNavigated (aka > ?kErrorAlreadyNavigated@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kErrorCannotRemovePartition (aka > ?kErrorCannotRemovePartition@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const net::kErrorDomain (aka > ?kErrorDomain@net@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kErrorInvalidPartition (aka > ?kErrorInvalidPartition@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventClose (aka ?kEventClose@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventConsoleMessage (aka > ?kEventConsoleMessage@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventContentLoad (aka > ?kEventContentLoad@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventExit (aka ?kEventExit@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventLoadAbort (aka > ?kEventLoadAbort@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventLoadCommit (aka > ?kEventLoadCommit@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventLoadRedirect (aka > ?kEventLoadRedirect@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventLoadStart (aka > ?kEventLoadStart@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventLoadStop (aka ?kEventLoadStop@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventNewWindow (aka > ?kEventNewWindow@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventRequestPermission (aka > ?kEventRequestPermission@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventResponsive (aka > ?kEventResponsive@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventSizeChanged (aka > ?kEventSizeChanged@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kEventUnresponsive (aka > ?kEventUnresponsive@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > chrome::kExtensionInvalidRequestURL (aka ?kExtensionInvalidRequestURL@chrome > @@3QBDB) > part 1 contains data export: char const * const > switches::kExtensionProcess (aka ?kExtensionProcess@switches@@3QBDB) > part 1 contains data export: char const * const > chrome::kExtensionResourceInvalidRequestURL (aka > ?kExtensionResourceInvalidRequestURL@chrome@@3QBDB) > part 1 contains data export: char const * const > chrome::kExtensionResourceScheme (aka ?kExtensionResourceScheme@chrome > @@3QBDB) > part 1 contains data export: char const * const > extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) > part 1 contains data export: public: static int const > ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka > ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) > part 1 contains data export: int const gfx::kFaviconSize (aka > ?kFaviconSize@gfx@@3HB) > part 1 contains data export: char const * const chrome::kFileScheme (aka > ?kFileScheme@chrome@@3QBDB) > part 1 contains data export: char const * const > switches::kForceFieldTrials (aka ?kForceFieldTrials@switches@@3QBDB) > part 1 contains data export: char const * const chrome::kFtpScheme (aka > ?kFtpScheme@chrome@@3QBDB) > part 1 contains data export: public: static char const * const > webrtc::MediaConstraintsInterface::kHighpassFilter (aka > ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) > part 1 contains data export: int const > content::kHistogramSynchronizerReservedSequenceNumber (aka > ?kHistogramSynchronizerReservedSequenceNumber@content@@3HB) > part 1 contains data export: public: static char const * const > LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError > @@2QBDB) > part 1 contains data export: char const * const chrome::kHttpScheme (aka > ?kHttpScheme@chrome@@3QBDB) > part 1 contains data export: char const * const chrome::kHttpsScheme (aka > ?kHttpsScheme@chrome@@3QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kIfModifiedSince (aka > ?kIfModifiedSince@HttpRequestHeaders@net@@2QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kIfNoneMatch (aka ?kIfNoneMatch@HttpRequestHeaders > @net@@2QBDB) > part 1 contains data export: char const * const > switches::kInProcessPlugins (aka ?kInProcessPlugins@switches@@3QBDB) > part 1 contains data export: int const > content::browser_plugin::kInstanceIDNone (aka > ?kInstanceIDNone@browser_plugin@content@@3HB) > part 1 contains data export: char const * const switches::kInstantProcess > (aka ?kInstantProcess@switches@@3QBDB) > part 1 contains data export: public: static void * > base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ > @2QAXA) > part 1 contains data export: public: static struct PP_NetAddress_Private > const ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka > ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@@2UPP_NetAddress_Private@ > @B) > part 1 contains data export: char const * const printing::kIsFirstRequest > (aka ?kIsFirstRequest@printing@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kIsTopLevel (aka ?kIsTopLevel@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const switches::kJavaScriptFlags > (aka ?kJavaScriptFlags@switches@@3QBDB) > part 1 contains data export: char const * const chrome::kJavaScriptScheme > (aka ?kJavaScriptScheme@chrome@@3QBDB) > part 1 contains data export: char const * const switches::kLang (aka > ?kLang@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kLowResolutionContentsScaleFactor (aka > ?kLowResolutionContentsScaleFactor@switches@cc@@3QBDB) > part 1 contains data export: int const content::kMaxSessionHistoryEntries > (aka ?kMaxSessionHistoryEntries@content@@3HB) > part 1 contains data export: char const * const > cc::switches::kMaxTilesForInterestArea (aka > ?kMaxTilesForInterestArea@switches@cc@@3QBDB) > part 1 contains data export: unsigned int const content::kMaxTitleChars > (aka ?kMaxTitleChars@content@@3IB) > part 1 contains data export: unsigned int const content::kMaxURLChars (aka > ?kMaxURLChars@content@@3IB) > part 1 contains data export: char const * const > switches::kMaxUntiledLayerHeight (aka ?kMaxUntiledLayerHeight@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kMaxUntiledLayerWidth (aka ?kMaxUntiledLayerWidth@switches > @@3QBDB) > part 1 contains data export: char const * const > cc::switches::kMaxUnusedResourceMemoryUsagePercentage (aka > ?kMaxUnusedResourceMemoryUsagePercentage@switches@cc@@3QBDB) > part 1 contains data export: double const content::kMaximumZoomFactor (aka > ?kMaximumZoomFactor@content@@3NB) > part 1 contains data export: char const * const > extension_misc::kMediaFileSystemPathPart (aka > ?kMediaFileSystemPathPart@extension_misc@@3QBDB) > part 1 contains data export: char const * const > content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) > part 1 contains data export: char const * const > content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content@@3QBDB) > part 1 contains data export: char const * const > content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content > @@3QBDB) > part 1 contains data export: char const * const > content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content@@3QBDB) > part 1 contains data export: char const * const switches::kMemoryMetrics > (aka ?kMemoryMetrics@switches@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodBack (aka ?kMethodBack@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodCanGoBack (aka > ?kMethodCanGoBack@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodCanGoForward (aka > ?kMethodCanGoForward@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodForward (aka ?kMethodForward@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodGetProcessId (aka > ?kMethodGetProcessId@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodGetRouteId (aka > ?kMethodGetRouteId@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodGo (aka ?kMethodGo@browser_plugin@content@ > @3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodInternalAttachWindowTo (aka > ?kMethodInternalAttachWindowTo@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodInternalPersistObject (aka > ?kMethodInternalPersistObject@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodInternalSetPermission (aka > ?kMethodInternalSetPermission@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodReload (aka ?kMethodReload@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodStop (aka ?kMethodStop@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kMethodTerminate (aka > ?kMethodTerminate@browser_plugin@content@@3QBDB) > part 1 contains data export: public: static char const * const > ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard > @ui@@2QBDB) > part 1 contains data export: public: static char const * const > ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) > part 1 contains data export: public: static char const * const > ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) > part 1 contains data export: public: static char const * const > ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@ > @2QBDB) > part 1 contains data export: double const content::kMinimumZoomFactor (aka > ?kMinimumZoomFactor@content@@3NB) > part 1 contains data export: public: static char const * const > chrome::ChromeContentClient::kNaClPluginName (aka > ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kNewHeight (aka ?kNewHeight@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kNewURL (aka ?kNewURL@browser_plugin@content@ > @3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kNewWidth (aka ?kNewWidth@browser_plugin@content@ > @3QBDB) > part 1 contains data export: public: static int const > content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@ > @2HB) > part 1 contains data export: char const * const switches::kNoJsRandomness > (aka ?kNoJsRandomness@switches@@3QBDB) > part 1 contains data export: char const * const switches::kNoSandbox (aka > ?kNoSandbox@switches@@3QBDB) > part 1 contains data export: public: static char const * const > webrtc::MediaConstraintsInterface::kNoiseSuppression (aka > ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) > part 1 contains data export: char const * const > cc::switches::kNumRasterThreads (aka ?kNumRasterThreads@switches@cc@ > @3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kOldHeight (aka ?kOldHeight@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kOldURL (aka ?kOldURL@browser_plugin@content@ > @3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kOldWidth (aka ?kOldWidth@browser_plugin@content@ > @3QBDB) > part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits (aka > ?kPPIdTypeBits@ppapi@@3IB) > part 1 contains data export: char const * const > content::browser_plugin::kPermission (aka ?kPermission@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kPermissionTypeDownload (aka > ?kPermissionTypeDownload@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kPermissionTypeGeolocation (aka > ?kPermissionTypeGeolocation@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kPermissionTypeMedia (aka > ?kPermissionTypeMedia@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kPermissionTypeNewWindow (aka > ?kPermissionTypeNewWindow@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kPermissionTypePointerLock (aka > ?kPermissionTypePointerLock@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kPersistPrefix (aka ?kPersistPrefix@browser_plugin > @content@@3QBDB) > part 1 contains data export: char const * const > extension_misc::kPlatformAppLaunchHistogram (aka > ?kPlatformAppLaunchHistogram@extension_misc@@3QBDB) > part 1 contains data export: char const * const switches::kPlaybackMode > (aka ?kPlaybackMode@switches@@3QBDB) > part 1 contains data export: char const * const > printing::kPreviewRequestID (aka ?kPreviewRequestID@printing@@3QBDB) > part 1 contains data export: char const * const printing::kPreviewUIID > (aka ?kPreviewUIID@printing@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kProcessId (aka ?kProcessId@browser_plugin > @content@@3QBDB) > part 1 contains data export: public: static char const * const > net::HttpRequestHeaders::kRange (aka ?kRange@HttpRequestHeaders@net@ > @2QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kReason (aka ?kReason@browser_plugin@content@ > @3QBDB) > part 1 contains data export: char const * const switches::kRecordMode (aka > ?kRecordMode@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kRendererAssertTest (aka ?kRendererAssertTest@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kRendererPrintPreview (aka ?kRendererPrintPreview@switches > @@3QBDB) > part 1 contains data export: char const * const > switches::kRendererStartupDialog (aka ?kRendererStartupDialog@switches > @@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kRequestId (aka ?kRequestId@browser_plugin > @content@@3QBDB) > part 1 contains data export: unsigned int const > autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill > @@3IB) > part 1 contains data export: public: static wchar_t const * const > base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) > part 1 contains data export: char const * const > printing::kSettingFitToPageEnabled (aka ?kSettingFitToPageEnabled@printing > @@3QBDB) > part 1 contains data export: char const * const > printing::kSettingGenerateDraftData (aka ?kSettingGenerateDraftData@printing > @@3QBDB) > part 1 contains data export: char const * const > printing::kSettingHeaderFooterDate (aka ?kSettingHeaderFooterDate@printing > @@3QBDB) > part 1 contains data export: char const * const > printing::kSettingHeaderFooterEnabled (aka > ?kSettingHeaderFooterEnabled@printing@@3QBDB) > part 1 contains data export: char const * const > printing::kSettingHeaderFooterTitle (aka ?kSettingHeaderFooterTitle@printing > @@3QBDB) > part 1 contains data export: char const * const > printing::kSettingHeaderFooterURL (aka ?kSettingHeaderFooterURL@printing > @@3QBDB) > part 1 contains data export: char const * const > printing::kSettingMarginsType (aka ?kSettingMarginsType@printing@@3QBDB) > part 1 contains data export: char const * const > printing::kSettingPreviewModifiable (aka ?kSettingPreviewModifiable@printing > @@3QBDB) > part 1 contains data export: char const * const > printing::kSettingPrintToPDF (aka ?kSettingPrintToPDF@printing@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowCompositedLayerBorders (aka > ?kShowCompositedLayerBorders@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowCompositedLayerTree (aka > ?kShowCompositedLayerTree@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowFPSCounter (aka ?kShowFPSCounter@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowNonOccludingRects (aka ?kShowNonOccludingRects@switches > @cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowOccludingRects (aka ?kShowOccludingRects@switches@cc@ > @3QBDB) > part 1 contains data export: char const * const switches::kShowPaintRects > (aka ?kShowPaintRects@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowPropertyChangedRects (aka > ?kShowPropertyChangedRects@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowReplicaScreenSpaceRects (aka > ?kShowReplicaScreenSpaceRects@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowScreenSpaceRects (aka ?kShowScreenSpaceRects@switches > @cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kShowSurfaceDamageRects (aka ?kShowSurfaceDamageRects@switches > @cc@@3QBDB) > part 1 contains data export: char const * const switches::kSigninProcess > (aka ?kSigninProcess@switches@@3QBDB) > part 1 contains data export: char const * const switches::kSingleProcess > (aka ?kSingleProcess@switches@@3QBDB) > part 1 contains data export: char const * const switches::kSitePerProcess > (aka ?kSitePerProcess@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kSlowDownRasterScaleFactor (aka > ?kSlowDownRasterScaleFactor@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kStrictLayerPropertyChangeChecking (aka > ?kStrictLayerPropertyChangeChecking@switches@cc@@3QBDB) > part 1 contains data export: char const * const chrome::kSwappedOutScheme > (aka ?kSwappedOutScheme@chrome@@3QBDB) > part 1 contains data export: char const * const content::kSwappedOutURL > (aka ?kSwappedOutURL@content@@3QBDB) > part 1 contains data export: char const * const switches::kTestSandbox > (aka ?kTestSandbox@switches@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kTopControlsHeight (aka ?kTopControlsHeight@switches@cc@ > @3QBDB) > part 1 contains data export: char const * const > cc::switches::kTopControlsHideThreshold (aka > ?kTopControlsHideThreshold@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kTopControlsShowThreshold (aka > ?kTopControlsShowThreshold@switches@cc@@3QBDB) > part 1 contains data export: char const * const > cc::switches::kTraceOverdraw (aka ?kTraceOverdraw@switches@cc@@3QBDB) > part 1 contains data export: char const * const > content::browser_plugin::kURL (aka ?kURL@browser_plugin@content@@3QBDB) > part 1 contains data export: char const * const > chrome::kUnknownLanguageCode (aka ?kUnknownLanguageCode@chrome@@3QBDB) > part 1 contains data export: char const * const > content::kUnreachableWebDataURL (aka ?kUnreachableWebDataURL@content > @@3QBDB) > part 1 contains data export: public: static char const * const > webrtc::MediaConstraintsInterface::kValueFalse (aka > ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) > part 1 contains data export: char const * const chrome::kViewSourceScheme > (aka ?kViewSourceScheme@chrome@@3QBDB) > part 1 contains data export: char const * const extensions::kViewTypeAll > (aka ?kViewTypeAll@extensions@@3QBDB) > part 1 contains data export: char const * const > extensions::kViewTypeAppShell (aka ?kViewTypeAppShell@extensions@@3QBDB) > part 1 contains data export: char const * const > extensions::kViewTypeBackgroundPage (aka ?kViewTypeBackgroundPage@extensions > @@3QBDB) > part 1 contains data export: char const * const > extensions::kViewTypeExtensionDialog (aka > ?kViewTypeExtensionDialog@extensions@@3QBDB) > part 1 contains data export: char const * const > extensions::kViewTypeInfobar (aka ?kViewTypeInfobar@extensions@@3QBDB) > part 1 contains data export: char const * const > extensions::kViewTypeNotification (aka ?kViewTypeNotification@extensions > @@3QBDB) > part 1 contains data export: char const * const extensions::kViewTypePanel > (aka ?kViewTypePanel@extensions@@3QBDB) > part 1 contains data export: char const * const extensions::kViewTypePopup > (aka ?kViewTypePopup@extensions@@3QBDB) > part 1 contains data export: char const * const > extensions::kViewTypeTabContents (aka ?kViewTypeTabContents@extensions > @@3QBDB) > part 1 contains data export: char const * const switches::kWaitForDebugger > (aka ?kWaitForDebugger@switches@@3QBDB) > part 1 contains data export: char const * const > switches::kWebCoreLogChannels (aka ?kWebCoreLogChannels@switches@@3QBDB) > part 1 contains data export: wchar_t const * const kWhitespaceUTF16 (aka > ?kWhitespaceUTF16@@3QB_WB) > part 1 contains data export: wchar_t const * const kWhitespaceWide (aka > ?kWhitespaceWide@@3QB_WB) > part 1 contains data export: private: static class ppapi::PpapiGlobals * > ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals > @ppapi@@0PAV12@A) > > > > On Fri, May 17, 2013 at 9:20 PM, <scottmg@chromium.org> wrote: > >> Reviewers: cpu, ananta, >> >> Description: >> add DATA declarations to split_link .def files >> >> And report error when they're added so they can be fixed. >> >> R=cpu@chromium.org, ananta@chromium.org >> BUG=237249 >> >> Please review this at https://codereview.chromium.**org/15310002/<https://codereview.chromium.org/1... >> >> SVN Base: svn://svn.chromium.org/chrome/**trunk/src<http://svn.chromium.org/chrome/trunk/src> >> >> Affected files: >> M tools/win/split_link/split_**link.py >> >> >> Index: tools/win/split_link/split_**link.py >> diff --git a/tools/win/split_link/split_**link.py >> b/tools/win/split_link/split_**link.py >> index 2b035c5418b2a70389ee903fb30820**d3a1c4d469..** >> 7598df4e3c2f0f80419396c0db6f27**ae438fea2f 100644 >> --- a/tools/win/split_link/split_**link.py >> +++ b/tools/win/split_link/split_**link.py >> @@ -179,6 +179,29 @@ def RunLinker(flags, index, inputs, phase): >> return stdout, popen.returncode, output_name >> >> >> +def Unmangle(export): >> + "Returns the human-presentable name of a mangled symbol.""" >> + # Use dbghelp.dll to demangle the name. >> + # TODO(scottmg): Perhaps a simple cache? Seems pretty fast though. >> + UnDecorateSymbolName = ctypes.windll.dbghelp.**UnDecorateSymbolName >> + buffer_size = 2048 >> + output_string = ctypes.create_string_buffer(**buffer_size) >> + if not UnDecorateSymbolName( >> + export, ctypes.byref(output_string), buffer_size, 0): >> + raise ctypes.WinError() >> + return output_string.value >> + >> + >> +def IsDataDefinition(export): >> + """Determines if a given name is data rather than a function. Always >> returns >> + False for C-style (as opposed to C++-style names).""" >> + if export[0] != '?': >> + return False >> + >> + # If it contains a '(' we assume it's a function. >> + return '(' not in Unmangle(export) >> + >> + >> def GenerateDefFiles(unresolved_**by_part): >> """Given a list of unresolved externals, generates a .def file that >> will >> cause all those symbols to be exported.""" >> @@ -192,7 +215,10 @@ def GenerateDefFiles(unresolved_**by_part): >> for j, part in enumerate(unresolved_by_part): >> if i == j: >> continue >> - print >> f, '\n'.join(' ' + export for export in part) >> + is_data = [' DATA' if IsDataDefinition(export) else '' >> + for export in part] >> + print >> f, '\n'.join(' ' + export + data >> + for export, data in zip(part, is_data)) >> deffiles.append(deffile) >> return deffiles >> >> @@ -267,17 +293,31 @@ def main(): >> import_libs = [None] * num_parts >> deffiles = [None] * num_parts >> >> + data_exports = 0 >> for i in range(5): >> Log('--- starting pass %d' % i) >> ok, dlls, unresolved_by_part = AttemptLink( >> flags, inputs_by_part, unresolved_by_part, deffiles, import_libs) >> if ok: >> break >> + data_exports = 0 >> + for i, part in enumerate(unresolved_by_part): >> + for export in part: >> + if IsDataDefinition(export): >> + print 'part %d contains data export: %s (aka %s)' % ( >> + i, Unmangle(export), export) >> + data_exports += 1 >> deffiles = GenerateDefFiles(unresolved_**by_part) >> import_libs = BuildImportLibs(flags, inputs_by_part, deffiles) >> else: >> return 1 >> >> + if data_exports: >> + print 'Data exports found, see report above.' >> + print('These cannot be exported, and must be either duplicated to >> the ' >> + 'target DLL, or wrapped in a function.') >> + return 1 >> + >> mt_exe = GetMtPath() >> for i, dll in enumerate(dlls): >> Log('embedding manifest in %s' % dll) >> >> >> >
Some more craziness, const variables don't export with __declspec(dllexport) or a .def file. e.g. these do not show up in the DLL exports. __declspec(dllexport) const char* const kSomeConstant = "stuffy"; __declspec(dllexport) const int kSomeIntConstant = 34343; Adding an extern declaration makes it work, but obviously we don't want to have to do that. These do export: extern __declspec(dllexport) const char* const kSomeConstant; __declspec(dllexport) const char* const kSomeConstant = "stuffy"; extern __declspec(dllexport) const int kSomeIntConstant; __declspec(dllexport) const int kSomeIntConstant = 34343; So... yeah. Not too important, but could cause extra confusion. On Sat, May 18, 2013 at 7:26 PM, Scott Graham <scottmg@chromium.org> wrote: > Another slightly crazy idea that might work for the constants: have the > split linker find the value of those symbols in the other DLL, generate a C > file with the contents, and then link that into the other side. > > I'm not sure how easy it is to get the value though. > > > On Fri, May 17, 2013 at 9:25 PM, Scott Graham <scottmg@chromium.org>wrote: > >> Here's the current list: >> >> After https://codereview.chromium.org/15403002/ (almost?) all of them >> are just int or string constants. If we can split just those constants out >> in to separate .cc files (and ideally separate gyp targets/.libs) then we >> can just put them in both sides in here: >> https://code.google.com/p/chromium/codesearch#chromium/src/build/split_link_p... >> >> If it's too messy to make new targets for the constants files, I could >> also make split_link crack .lib files and put particular .obj files in both >> sides, so then we'd only have to break them out into a file, but not mess >> with gyp too much. >> >> part 0 contains data export: wchar_t const * const >> appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache >> @@3QB_WB) >> part 0 contains data export: char const * const >> switches::kAudioBufferSize (aka ?kAudioBufferSize@switches@@3QBDB) >> part 0 contains data export: int const fileapi::kCreateFilePermissions >> (aka ?kCreateFilePermissions@fileapi@@3HB) >> part 0 contains data export: wchar_t const * const >> webkit_database::kDatabaseDirectoryName (aka >> ?kDatabaseDirectoryName@webkit_database@@3QB_WB) >> part 0 contains data export: char const * const >> switches::kDebugPluginLoading (aka ?kDebugPluginLoading@switches@@3QBDB) >> part 0 contains data export: public: static char const * const >> media::AudioManagerBase::kDefaultDeviceId (aka >> ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) >> part 0 contains data export: char const * const >> switches::kDisableEncryptedMedia (aka ?kDisableEncryptedMedia@switches >> @@3QBDB) >> part 0 contains data export: char const * const >> switches::kDisablePepper3d (aka ?kDisablePepper3d@switches@@3QBDB) >> part 0 contains data export: char const * const >> switches::kEnableEac3Playback (aka ?kEnableEac3Playback@switches@@3QBDB) >> part 0 contains data export: char const * const >> switches::kEnableOpusPlayback (aka ?kEnableOpusPlayback@switches@@3QBDB) >> part 0 contains data export: char const * const >> switches::kEnableVp8AlphaPlayback (aka ?kEnableVp8AlphaPlayback@switches >> @@3QBDB) >> part 0 contains data export: char const * const >> switches::kEnableVp9Playback (aka ?kEnableVp9Playback@switches@@3QBDB) >> part 0 contains data export: char const * const kFlashPluginName (aka >> ?kFlashPluginName@@3QBDB) >> part 0 contains data export: char const * const >> kFlashPluginSplDescription (aka ?kFlashPluginSplDescription@@3QBDB) >> part 0 contains data export: char const * const kFlashPluginSplExtension >> (aka ?kFlashPluginSplExtension@@3QBDB) >> part 0 contains data export: char const * const kFlashPluginSplMimeType >> (aka ?kFlashPluginSplMimeType@@3QBDB) >> part 0 contains data export: char const * const >> kFlashPluginSwfDescription (aka ?kFlashPluginSwfDescription@@3QBDB) >> part 0 contains data export: char const * const kFlashPluginSwfExtension >> (aka ?kFlashPluginSwfExtension@@3QBDB) >> part 0 contains data export: char const * const kFlashPluginSwfMimeType >> (aka ?kFlashPluginSwfMimeType@@3QBDB) >> part 0 contains data export: char const * const >> fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi@@3QBDB) >> part 0 contains data export: wchar_t const * const >> webkit::npapi::kNewWMPPlugin (aka ?kNewWMPPlugin@npapi@webkit@@3QB_WB) >> part 0 contains data export: int const fileapi::kOpenFilePermissions (aka >> ?kOpenFilePermissions@fileapi@@3HB) >> part 0 contains data export: wchar_t const * const >> webkit::npapi::kPaintMessageName (aka ?kPaintMessageName@npapi@webkit@ >> @3QB_WB) >> part 0 contains data export: char const * const switches::kPpapiFlashArgs >> (aka ?kPpapiFlashArgs@switches@@3QBDB) >> part 0 contains data export: int const fileapi::kReadFilePermissions (aka >> ?kReadFilePermissions@fileapi@@3HB) >> part 0 contains data export: wchar_t const * const >> webkit::npapi::kRegistryMozillaPlugins (aka ?kRegistryMozillaPlugins@npapi >> @webkit@@3QB_WB) >> part 0 contains data export: wchar_t const * const >> webkit_database::kTrackerDatabaseFileName (aka >> ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) >> part 0 contains data export: char const * const switches::kVideoThreads >> (aka ?kVideoThreads@switches@@3QBDB) >> part 0 contains data export: wchar_t const * const >> webkit::npapi::kWrapperNativeWindowClassName (aka >> ?kWrapperNativeWindowClassName@npapi@webkit@@3QB_WB) >> part 0 contains data export: int const fileapi::kWriteFilePermissions >> (aka ?kWriteFilePermissions@fileapi@@3HB) >> part 1 contains data export: int const printing::FIRST_PAGE_INDEX (aka >> ?FIRST_PAGE_INDEX@printing@@3HB) >> part 1 contains data export: private: static class content::ChildProcess >> * content::ChildProcess::child_process_ (aka ?child_process_@ChildProcess >> @content@@0PAV12@A) >> part 1 contains data export: unsigned int const gMask_00FF00FF (aka >> ?gMask_00FF00FF@@3IB) >> part 1 contains data export: private: static unsigned int const * const >> SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) >> part 1 contains data export: enum logging::DcheckState >> logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1@A) >> part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@ >> @3HA) >> part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@ >> @3HA) >> part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@ >> @3HA) >> part 1 contains data export: private: static class base::StatsTable * >> base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ >> @0PAV12@A) >> part 1 contains data export: char const * const content::kAboutBlankURL >> (aka ?kAboutBlankURL@content@@3QBDB) >> part 1 contains data export: char const * const chrome::kAboutScheme (aka >> ?kAboutScheme@chrome@@3QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kAcceptEncoding (aka >> ?kAcceptEncoding@HttpRequestHeaders@net@@2QBDB) >> part 1 contains data export: char const * const >> extension_misc::kAppLaunchHistogram (aka ?kAppLaunchHistogram@extension_misc >> @@3QBDB) >> part 1 contains data export: char const * const >> extension_misc::kAppStateCannotRun (aka ?kAppStateCannotRun@extension_misc >> @@3QBDB) >> part 1 contains data export: char const * const >> extension_misc::kAppStateReadyToRun (aka ?kAppStateReadyToRun@extension_misc >> @@3QBDB) >> part 1 contains data export: char const * const >> extension_misc::kAppStateRunning (aka ?kAppStateRunning@extension_misc >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kAppsCheckoutURL (aka ?kAppsCheckoutURL@switches@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeAutoSize (aka >> ?kAttributeAutoSize@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeContentWindow (aka >> ?kAttributeContentWindow@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeMaxHeight (aka >> ?kAttributeMaxHeight@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeMaxWidth (aka >> ?kAttributeMaxWidth@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeMinHeight (aka >> ?kAttributeMinHeight@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeMinWidth (aka >> ?kAttributeMinWidth@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeName (aka ?kAttributeName@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributePartition (aka >> ?kAttributePartition@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kAttributeSrc (aka ?kAttributeSrc@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: public: static char const * const >> webrtc::MediaConstraintsInterface::kAutoGainControl (aka >> ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) >> part 1 contains data export: char const * const >> cc::switches::kBackgroundColorInsteadOfCheckerboard (aka >> ?kBackgroundColorInsteadOfCheckerboard@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> content::kBrowserPluginMimeType (aka ?kBrowserPluginMimeType@content >> @@3QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kCacheControl (aka >> ?kCacheControl@HttpRequestHeaders@net@@2QBDB) >> part 1 contains data export: char const * const >> extension_manifest_errors::kCannotAccessPage (aka >> ?kCannotAccessPage@extension_manifest_errors@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kChromeDevToolsScheme (aka ?kChromeDevToolsScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const switches::kChromeFrame >> (aka ?kChromeFrame@switches@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kChromeInternalScheme (aka ?kChromeInternalScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kChromeSearchMostVisitedUrl (aka ?kChromeSearchMostVisitedUrl@chrome >> @@3QBDB) >> part 1 contains data export: char const * const >> chrome::kChromeSearchScheme (aka ?kChromeSearchScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kChromeSearchSuggestionUrl (aka ?kChromeSearchSuggestionUrl@chrome >> @@3QBDB) >> part 1 contains data export: char const * const >> content::kChromeUICrashURL (aka ?kChromeUICrashURL@content@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kChromeUIExtensionIconHost (aka ?kChromeUIExtensionIconHost@chrome >> @@3QBDB) >> part 1 contains data export: char const * const content::kChromeUIHangURL >> (aka ?kChromeUIHangURL@content@@3QBDB) >> part 1 contains data export: char const * const content::kChromeUIKillURL >> (aka ?kChromeUIKillURL@content@@3QBDB) >> part 1 contains data export: char const * const chrome::kChromeUIScheme >> (aka ?kChromeUIScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const >> content::kChromeUIShorthangURL (aka ?kChromeUIShorthangURL@content >> @@3QBDB) >> part 1 contains data export: char const * const base::kCodepageUTF8 (aka >> ?kCodepageUTF8@base@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kCompositeToMailbox (aka ?kCompositeToMailbox@switches@cc@ >> @3QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kContentLength (aka >> ?kContentLength@HttpRequestHeaders@net@@2QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kContentType (aka ?kContentType@HttpRequestHeaders >> @net@@2QBDB) >> part 1 contains data export: public: static wchar_t const * const >> base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath@base@ >> @2QB_WB) >> part 1 contains data export: char const * const chrome::kDataScheme (aka >> ?kDataScheme@chrome@@3QBDB) >> part 1 contains data export: public: static char const * const >> base::debug::CategoryFilter::kDefaultCategoryFilterString (aka >> ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) >> part 1 contains data export: char const * const >> switches::kDefaultTileHeight (aka ?kDefaultTileHeight@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDefaultTileWidth (aka ?kDefaultTileWidth@switches@@3QBDB) >> part 1 contains data export: char const * const switches::kDisable3DAPIs >> (aka ?kDisable3DAPIs@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableAcceleratedCompositing (aka >> ?kDisableAcceleratedCompositing@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableAcceleratedVideoDecode (aka >> ?kDisableAcceleratedVideoDecode@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableApplicationCache (aka ?kDisableApplicationCache@switches >> @@3QBDB) >> part 1 contains data export: char const * const switches::kDisableAudio >> (aka ?kDisableAudio@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableClientSidePhishingDetection (aka >> ?kDisableClientSidePhishingDetection@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kDisableColorEstimator (aka ?kDisableColorEstimator@switches >> @cc@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableCompositingForFixedPosition (aka >> ?kDisableCompositingForFixedPosition@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableDatabases (aka ?kDisableDatabases@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableDesktopNotifications (aka >> ?kDisableDesktopNotifications@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableDeviceOrientation (aka ?kDisableDeviceOrientation@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableExtensionsResourceWhitelist (aka >> ?kDisableExtensionsResourceWhitelist@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableFileSystem (aka ?kDisableFileSystem@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableFlashFullscreen3d (aka ?kDisableFlashFullscreen3d@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableFullScreen (aka ?kDisableFullScreen@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableGeolocation (aka ?kDisableGeolocation@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableGpuVsync (aka ?kDisableGpuVsync@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableHTMLNotifications (aka ?kDisableHTMLNotifications@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableHistogramCustomizer (aka >> ?kDisableHistogramCustomizer@switches@@3QBDB) >> part 1 contains data export: char const * const >> autofill::switches::kDisableInteractiveAutocomplete (aka >> ?kDisableInteractiveAutocomplete@switches@autofill@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableJavaScriptI18NAPI (aka ?kDisableJavaScriptI18NAPI@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableLocalStorage (aka ?kDisableLocalStorage@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableScriptedPrintThrottling (aka >> ?kDisableScriptedPrintThrottling@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableSessionStorage (aka ?kDisableSessionStorage@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableSharedWorkers (aka ?kDisableSharedWorkers@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableSpeechInput (aka ?kDisableSpeechInput@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kDisableThreadedAnimation (aka >> ?kDisableThreadedAnimation@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableWebAudio (aka ?kDisableWebAudio@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kDisableWebKitMediaSource (aka ?kDisableWebKitMediaSource@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kDomAutomationController (aka ?kDomAutomationController@switches >> @@3QBDB) >> part 1 contains data export: public: static char const * const >> webrtc::MediaConstraintsInterface::kEchoCancellation (aka >> ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) >> part 1 contains data export: class std::basic_string<char,struct >> std::char_traits<char>,class std::allocator<char> > const >> google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal >> @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D >> @2@@std@@B) >> part 1 contains data export: public: static struct tagVARIANT const >> base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant >> @win@base@@2UtagVARIANT@@B) >> part 1 contains data export: char const * const >> switches::kEnableAcceleratedPainting (aka >> ?kEnableAcceleratedPainting@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableAccessibilityLogging (aka >> ?kEnableAccessibilityLogging@switches@@3QBDB) >> part 1 contains data export: char const * const switches::kEnableAdview >> (aka ?kEnableAdview@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableAdviewSrcAttribute (aka ?kEnableAdviewSrcAttribute@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableBenchmarking (aka ?kEnableBenchmarking@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableBrowserPluginForAllViewTypes (aka >> ?kEnableBrowserPluginForAllViewTypes@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableCompositingForFixedPosition (aka >> ?kEnableCompositingForFixedPosition@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kEnableCompositorFrameMessage (aka >> ?kEnableCompositorFrameMessage@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableDelegatedRenderer (aka ?kEnableDelegatedRenderer@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableDeviceMotion (aka ?kEnableDeviceMotion@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableExperimentalCanvasFeatures (aka >> ?kEnableExperimentalCanvasFeatures@switches@@3QBDB) >> part 1 contains data export: char const * const >> autofill::switches::kEnableExperimentalFormFilling (aka >> ?kEnableExperimentalFormFilling@switches@autofill@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableExperimentalWebKitFeatures (aka >> ?kEnableExperimentalWebKitFeatures@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableFixedLayout (aka ?kEnableFixedLayout@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableGpuBenchmarking (aka ?kEnableGpuBenchmarking@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableHighDpiCompositingForFixedPosition (aka >> ?kEnableHighDpiCompositingForFixedPosition@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableIPCFuzzing (aka ?kEnableIPCFuzzing@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableMemoryBenchmarking (aka ?kEnableMemoryBenchmarking@switches >> @@3QBDB) >> part 1 contains data export: char const * const switches::kEnableNaCl >> (aka ?kEnableNaCl@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableNetBenchmarking (aka ?kEnableNetBenchmarking@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kEnablePartialSwap (aka ?kEnablePartialSwap@switches@cc@ >> @3QBDB) >> part 1 contains data export: char const * const >> switches::kEnablePasswordGeneration (aka ?kEnablePasswordGeneration@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnablePepperTesting (aka ?kEnablePepperTesting@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kEnablePerTilePainting (aka ?kEnablePerTilePainting@switches >> @cc@@3QBDB) >> part 1 contains data export: char const * const switches::kEnablePinch >> (aka ?kEnablePinch@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kEnablePinchZoomScrollbars (aka >> ?kEnablePinchZoomScrollbars@switches@cc@@3QBDB) >> part 1 contains data export: char const * const switches::kEnablePnacl >> (aka ?kEnablePnacl@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnablePreparsedJsCaching (aka ?kEnablePreparsedJsCaching@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kEnableRightAlignedScheduling (aka >> ?kEnableRightAlignedScheduling@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableSkiaBenchmarking (aka ?kEnableSkiaBenchmarking@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableSoftwareCompositingGLAdapter (aka >> ?kEnableSoftwareCompositingGLAdapter@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableSpeechSynthesis (aka ?kEnableSpeechSynthesis@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableSpellingAutoCorrect (aka >> ?kEnableSpellingAutoCorrect@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableStrictSiteIsolation (aka >> ?kEnableStrictSiteIsolation@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableThreadedCompositing (aka >> ?kEnableThreadedCompositing@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kEnableTopControlsPositionCalculation (aka >> ?kEnableTopControlsPositionCalculation@switches@cc@@3QBDB) >> part 1 contains data export: char const * const switches::kEnableViewport >> (aka ?kEnableViewport@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kEnableVsyncNotification (aka ?kEnableVsyncNotification@switches >> @@3QBDB) >> part 1 contains data export: char const * const switches::kEnableWatchdog >> (aka ?kEnableWatchdog@switches@@3QBDB) >> part 1 contains data export: char const * const switches::kEnableWebMIDI >> (aka ?kEnableWebMIDI@switches@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kErrorAlreadyNavigated (aka >> ?kErrorAlreadyNavigated@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kErrorCannotRemovePartition (aka >> ?kErrorCannotRemovePartition@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const net::kErrorDomain (aka >> ?kErrorDomain@net@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kErrorInvalidPartition (aka >> ?kErrorInvalidPartition@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventClose (aka ?kEventClose@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventConsoleMessage (aka >> ?kEventConsoleMessage@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventContentLoad (aka >> ?kEventContentLoad@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventExit (aka ?kEventExit@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventLoadAbort (aka >> ?kEventLoadAbort@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventLoadCommit (aka >> ?kEventLoadCommit@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventLoadRedirect (aka >> ?kEventLoadRedirect@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventLoadStart (aka >> ?kEventLoadStart@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventLoadStop (aka ?kEventLoadStop@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventNewWindow (aka >> ?kEventNewWindow@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventRequestPermission (aka >> ?kEventRequestPermission@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventResponsive (aka >> ?kEventResponsive@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventSizeChanged (aka >> ?kEventSizeChanged@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kEventUnresponsive (aka >> ?kEventUnresponsive@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kExtensionInvalidRequestURL (aka ?kExtensionInvalidRequestURL@chrome >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kExtensionProcess (aka ?kExtensionProcess@switches@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kExtensionResourceInvalidRequestURL (aka >> ?kExtensionResourceInvalidRequestURL@chrome@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kExtensionResourceScheme (aka ?kExtensionResourceScheme@chrome >> @@3QBDB) >> part 1 contains data export: char const * const >> extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) >> part 1 contains data export: public: static int const >> ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka >> ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) >> part 1 contains data export: int const gfx::kFaviconSize (aka >> ?kFaviconSize@gfx@@3HB) >> part 1 contains data export: char const * const chrome::kFileScheme (aka >> ?kFileScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const >> switches::kForceFieldTrials (aka ?kForceFieldTrials@switches@@3QBDB) >> part 1 contains data export: char const * const chrome::kFtpScheme (aka >> ?kFtpScheme@chrome@@3QBDB) >> part 1 contains data export: public: static char const * const >> webrtc::MediaConstraintsInterface::kHighpassFilter (aka >> ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) >> part 1 contains data export: int const >> content::kHistogramSynchronizerReservedSequenceNumber (aka >> ?kHistogramSynchronizerReservedSequenceNumber@content@@3HB) >> part 1 contains data export: public: static char const * const >> LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError >> @@2QBDB) >> part 1 contains data export: char const * const chrome::kHttpScheme (aka >> ?kHttpScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const chrome::kHttpsScheme (aka >> ?kHttpsScheme@chrome@@3QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kIfModifiedSince (aka >> ?kIfModifiedSince@HttpRequestHeaders@net@@2QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kIfNoneMatch (aka ?kIfNoneMatch@HttpRequestHeaders >> @net@@2QBDB) >> part 1 contains data export: char const * const >> switches::kInProcessPlugins (aka ?kInProcessPlugins@switches@@3QBDB) >> part 1 contains data export: int const >> content::browser_plugin::kInstanceIDNone (aka >> ?kInstanceIDNone@browser_plugin@content@@3HB) >> part 1 contains data export: char const * const switches::kInstantProcess >> (aka ?kInstantProcess@switches@@3QBDB) >> part 1 contains data export: public: static void * >> base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ >> @2QAXA) >> part 1 contains data export: public: static struct PP_NetAddress_Private >> const ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka >> ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@@2UPP_NetAddress_Private@ >> @B) >> part 1 contains data export: char const * const >> printing::kIsFirstRequest (aka ?kIsFirstRequest@printing@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kIsTopLevel (aka ?kIsTopLevel@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> switches::kJavaScriptFlags (aka ?kJavaScriptFlags@switches@@3QBDB) >> part 1 contains data export: char const * const chrome::kJavaScriptScheme >> (aka ?kJavaScriptScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const switches::kLang (aka >> ?kLang@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kLowResolutionContentsScaleFactor (aka >> ?kLowResolutionContentsScaleFactor@switches@cc@@3QBDB) >> part 1 contains data export: int const content::kMaxSessionHistoryEntries >> (aka ?kMaxSessionHistoryEntries@content@@3HB) >> part 1 contains data export: char const * const >> cc::switches::kMaxTilesForInterestArea (aka >> ?kMaxTilesForInterestArea@switches@cc@@3QBDB) >> part 1 contains data export: unsigned int const content::kMaxTitleChars >> (aka ?kMaxTitleChars@content@@3IB) >> part 1 contains data export: unsigned int const content::kMaxURLChars >> (aka ?kMaxURLChars@content@@3IB) >> part 1 contains data export: char const * const >> switches::kMaxUntiledLayerHeight (aka ?kMaxUntiledLayerHeight@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kMaxUntiledLayerWidth (aka ?kMaxUntiledLayerWidth@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kMaxUnusedResourceMemoryUsagePercentage (aka >> ?kMaxUnusedResourceMemoryUsagePercentage@switches@cc@@3QBDB) >> part 1 contains data export: double const content::kMaximumZoomFactor >> (aka ?kMaximumZoomFactor@content@@3NB) >> part 1 contains data export: char const * const >> extension_misc::kMediaFileSystemPathPart (aka >> ?kMediaFileSystemPathPart@extension_misc@@3QBDB) >> part 1 contains data export: char const * const >> content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) >> part 1 contains data export: char const * const >> content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content@@3QBDB) >> part 1 contains data export: char const * const >> content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content >> @@3QBDB) >> part 1 contains data export: char const * const >> content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content >> @@3QBDB) >> part 1 contains data export: char const * const switches::kMemoryMetrics >> (aka ?kMemoryMetrics@switches@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodBack (aka ?kMethodBack@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodCanGoBack (aka >> ?kMethodCanGoBack@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodCanGoForward (aka >> ?kMethodCanGoForward@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodForward (aka ?kMethodForward@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodGetProcessId (aka >> ?kMethodGetProcessId@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodGetRouteId (aka >> ?kMethodGetRouteId@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodGo (aka ?kMethodGo@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodInternalAttachWindowTo (aka >> ?kMethodInternalAttachWindowTo@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodInternalPersistObject (aka >> ?kMethodInternalPersistObject@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodInternalSetPermission (aka >> ?kMethodInternalSetPermission@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodReload (aka ?kMethodReload@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodStop (aka ?kMethodStop@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kMethodTerminate (aka >> ?kMethodTerminate@browser_plugin@content@@3QBDB) >> part 1 contains data export: public: static char const * const >> ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard >> @ui@@2QBDB) >> part 1 contains data export: public: static char const * const >> ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) >> part 1 contains data export: public: static char const * const >> ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) >> part 1 contains data export: public: static char const * const >> ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@ >> @2QBDB) >> part 1 contains data export: double const content::kMinimumZoomFactor >> (aka ?kMinimumZoomFactor@content@@3NB) >> part 1 contains data export: public: static char const * const >> chrome::ChromeContentClient::kNaClPluginName (aka >> ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kNewHeight (aka ?kNewHeight@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kNewURL (aka ?kNewURL@browser_plugin@content@ >> @3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kNewWidth (aka ?kNewWidth@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: public: static int const >> content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@ >> @2HB) >> part 1 contains data export: char const * const switches::kNoJsRandomness >> (aka ?kNoJsRandomness@switches@@3QBDB) >> part 1 contains data export: char const * const switches::kNoSandbox (aka >> ?kNoSandbox@switches@@3QBDB) >> part 1 contains data export: public: static char const * const >> webrtc::MediaConstraintsInterface::kNoiseSuppression (aka >> ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) >> part 1 contains data export: char const * const >> cc::switches::kNumRasterThreads (aka ?kNumRasterThreads@switches@cc@ >> @3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kOldHeight (aka ?kOldHeight@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kOldURL (aka ?kOldURL@browser_plugin@content@ >> @3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kOldWidth (aka ?kOldWidth@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits (aka >> ?kPPIdTypeBits@ppapi@@3IB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPermission (aka ?kPermission@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPermissionTypeDownload (aka >> ?kPermissionTypeDownload@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPermissionTypeGeolocation (aka >> ?kPermissionTypeGeolocation@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPermissionTypeMedia (aka >> ?kPermissionTypeMedia@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPermissionTypeNewWindow (aka >> ?kPermissionTypeNewWindow@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPermissionTypePointerLock (aka >> ?kPermissionTypePointerLock@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kPersistPrefix (aka ?kPersistPrefix@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: char const * const >> extension_misc::kPlatformAppLaunchHistogram (aka >> ?kPlatformAppLaunchHistogram@extension_misc@@3QBDB) >> part 1 contains data export: char const * const switches::kPlaybackMode >> (aka ?kPlaybackMode@switches@@3QBDB) >> part 1 contains data export: char const * const >> printing::kPreviewRequestID (aka ?kPreviewRequestID@printing@@3QBDB) >> part 1 contains data export: char const * const printing::kPreviewUIID >> (aka ?kPreviewUIID@printing@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kProcessId (aka ?kProcessId@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: public: static char const * const >> net::HttpRequestHeaders::kRange (aka ?kRange@HttpRequestHeaders@net@ >> @2QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kReason (aka ?kReason@browser_plugin@content@ >> @3QBDB) >> part 1 contains data export: char const * const switches::kRecordMode >> (aka ?kRecordMode@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kRendererAssertTest (aka ?kRendererAssertTest@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kRendererPrintPreview (aka ?kRendererPrintPreview@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kRendererStartupDialog (aka ?kRendererStartupDialog@switches >> @@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kRequestId (aka ?kRequestId@browser_plugin >> @content@@3QBDB) >> part 1 contains data export: unsigned int const >> autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill >> @@3IB) >> part 1 contains data export: public: static wchar_t const * const >> base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) >> part 1 contains data export: char const * const >> printing::kSettingFitToPageEnabled (aka ?kSettingFitToPageEnabled@printing >> @@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingGenerateDraftData (aka ?kSettingGenerateDraftData@printing >> @@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingHeaderFooterDate (aka ?kSettingHeaderFooterDate@printing >> @@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingHeaderFooterEnabled (aka >> ?kSettingHeaderFooterEnabled@printing@@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingHeaderFooterTitle (aka ?kSettingHeaderFooterTitle@printing >> @@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingHeaderFooterURL (aka ?kSettingHeaderFooterURL@printing >> @@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingMarginsType (aka ?kSettingMarginsType@printing@@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingPreviewModifiable (aka ?kSettingPreviewModifiable@printing >> @@3QBDB) >> part 1 contains data export: char const * const >> printing::kSettingPrintToPDF (aka ?kSettingPrintToPDF@printing@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowCompositedLayerBorders (aka >> ?kShowCompositedLayerBorders@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowCompositedLayerTree (aka >> ?kShowCompositedLayerTree@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowFPSCounter (aka ?kShowFPSCounter@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowNonOccludingRects (aka ?kShowNonOccludingRects@switches >> @cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowOccludingRects (aka ?kShowOccludingRects@switches@cc@ >> @3QBDB) >> part 1 contains data export: char const * const switches::kShowPaintRects >> (aka ?kShowPaintRects@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowPropertyChangedRects (aka >> ?kShowPropertyChangedRects@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowReplicaScreenSpaceRects (aka >> ?kShowReplicaScreenSpaceRects@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowScreenSpaceRects (aka ?kShowScreenSpaceRects@switches >> @cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kShowSurfaceDamageRects (aka ?kShowSurfaceDamageRects@switches >> @cc@@3QBDB) >> part 1 contains data export: char const * const switches::kSigninProcess >> (aka ?kSigninProcess@switches@@3QBDB) >> part 1 contains data export: char const * const switches::kSingleProcess >> (aka ?kSingleProcess@switches@@3QBDB) >> part 1 contains data export: char const * const switches::kSitePerProcess >> (aka ?kSitePerProcess@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kSlowDownRasterScaleFactor (aka >> ?kSlowDownRasterScaleFactor@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kStrictLayerPropertyChangeChecking (aka >> ?kStrictLayerPropertyChangeChecking@switches@cc@@3QBDB) >> part 1 contains data export: char const * const chrome::kSwappedOutScheme >> (aka ?kSwappedOutScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const content::kSwappedOutURL >> (aka ?kSwappedOutURL@content@@3QBDB) >> part 1 contains data export: char const * const switches::kTestSandbox >> (aka ?kTestSandbox@switches@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kTopControlsHeight (aka ?kTopControlsHeight@switches@cc@ >> @3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kTopControlsHideThreshold (aka >> ?kTopControlsHideThreshold@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kTopControlsShowThreshold (aka >> ?kTopControlsShowThreshold@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> cc::switches::kTraceOverdraw (aka ?kTraceOverdraw@switches@cc@@3QBDB) >> part 1 contains data export: char const * const >> content::browser_plugin::kURL (aka ?kURL@browser_plugin@content@@3QBDB) >> part 1 contains data export: char const * const >> chrome::kUnknownLanguageCode (aka ?kUnknownLanguageCode@chrome@@3QBDB) >> part 1 contains data export: char const * const >> content::kUnreachableWebDataURL (aka ?kUnreachableWebDataURL@content >> @@3QBDB) >> part 1 contains data export: public: static char const * const >> webrtc::MediaConstraintsInterface::kValueFalse (aka >> ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) >> part 1 contains data export: char const * const chrome::kViewSourceScheme >> (aka ?kViewSourceScheme@chrome@@3QBDB) >> part 1 contains data export: char const * const extensions::kViewTypeAll >> (aka ?kViewTypeAll@extensions@@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypeAppShell (aka ?kViewTypeAppShell@extensions@@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypeBackgroundPage (aka ?kViewTypeBackgroundPage@extensions >> @@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypeExtensionDialog (aka >> ?kViewTypeExtensionDialog@extensions@@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypeInfobar (aka ?kViewTypeInfobar@extensions@@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypeNotification (aka ?kViewTypeNotification@extensions >> @@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypePanel (aka ?kViewTypePanel@extensions@@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypePopup (aka ?kViewTypePopup@extensions@@3QBDB) >> part 1 contains data export: char const * const >> extensions::kViewTypeTabContents (aka ?kViewTypeTabContents@extensions >> @@3QBDB) >> part 1 contains data export: char const * const >> switches::kWaitForDebugger (aka ?kWaitForDebugger@switches@@3QBDB) >> part 1 contains data export: char const * const >> switches::kWebCoreLogChannels (aka ?kWebCoreLogChannels@switches@@3QBDB) >> part 1 contains data export: wchar_t const * const kWhitespaceUTF16 (aka >> ?kWhitespaceUTF16@@3QB_WB) >> part 1 contains data export: wchar_t const * const kWhitespaceWide (aka >> ?kWhitespaceWide@@3QB_WB) >> part 1 contains data export: private: static class ppapi::PpapiGlobals * >> ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals >> @ppapi@@0PAV12@A) >> >> >> >> On Fri, May 17, 2013 at 9:20 PM, <scottmg@chromium.org> wrote: >> >>> Reviewers: cpu, ananta, >>> >>> Description: >>> add DATA declarations to split_link .def files >>> >>> And report error when they're added so they can be fixed. >>> >>> R=cpu@chromium.org, ananta@chromium.org >>> BUG=237249 >>> >>> Please review this at https://codereview.chromium.**org/15310002/<https://codereview.chromium.org/1... >>> >>> SVN Base: svn://svn.chromium.org/chrome/**trunk/src<http://svn.chromium.org/chrome/trunk/src> >>> >>> Affected files: >>> M tools/win/split_link/split_**link.py >>> >>> >>> Index: tools/win/split_link/split_**link.py >>> diff --git a/tools/win/split_link/split_**link.py >>> b/tools/win/split_link/split_**link.py >>> index 2b035c5418b2a70389ee903fb30820**d3a1c4d469..** >>> 7598df4e3c2f0f80419396c0db6f27**ae438fea2f 100644 >>> --- a/tools/win/split_link/split_**link.py >>> +++ b/tools/win/split_link/split_**link.py >>> @@ -179,6 +179,29 @@ def RunLinker(flags, index, inputs, phase): >>> return stdout, popen.returncode, output_name >>> >>> >>> +def Unmangle(export): >>> + "Returns the human-presentable name of a mangled symbol.""" >>> + # Use dbghelp.dll to demangle the name. >>> + # TODO(scottmg): Perhaps a simple cache? Seems pretty fast though. >>> + UnDecorateSymbolName = ctypes.windll.dbghelp.**UnDecorateSymbolName >>> + buffer_size = 2048 >>> + output_string = ctypes.create_string_buffer(**buffer_size) >>> + if not UnDecorateSymbolName( >>> + export, ctypes.byref(output_string), buffer_size, 0): >>> + raise ctypes.WinError() >>> + return output_string.value >>> + >>> + >>> +def IsDataDefinition(export): >>> + """Determines if a given name is data rather than a function. Always >>> returns >>> + False for C-style (as opposed to C++-style names).""" >>> + if export[0] != '?': >>> + return False >>> + >>> + # If it contains a '(' we assume it's a function. >>> + return '(' not in Unmangle(export) >>> + >>> + >>> def GenerateDefFiles(unresolved_**by_part): >>> """Given a list of unresolved externals, generates a .def file that >>> will >>> cause all those symbols to be exported.""" >>> @@ -192,7 +215,10 @@ def GenerateDefFiles(unresolved_**by_part): >>> for j, part in enumerate(unresolved_by_part): >>> if i == j: >>> continue >>> - print >> f, '\n'.join(' ' + export for export in part) >>> + is_data = [' DATA' if IsDataDefinition(export) else '' >>> + for export in part] >>> + print >> f, '\n'.join(' ' + export + data >>> + for export, data in zip(part, is_data)) >>> deffiles.append(deffile) >>> return deffiles >>> >>> @@ -267,17 +293,31 @@ def main(): >>> import_libs = [None] * num_parts >>> deffiles = [None] * num_parts >>> >>> + data_exports = 0 >>> for i in range(5): >>> Log('--- starting pass %d' % i) >>> ok, dlls, unresolved_by_part = AttemptLink( >>> flags, inputs_by_part, unresolved_by_part, deffiles, >>> import_libs) >>> if ok: >>> break >>> + data_exports = 0 >>> + for i, part in enumerate(unresolved_by_part): >>> + for export in part: >>> + if IsDataDefinition(export): >>> + print 'part %d contains data export: %s (aka %s)' % ( >>> + i, Unmangle(export), export) >>> + data_exports += 1 >>> deffiles = GenerateDefFiles(unresolved_**by_part) >>> import_libs = BuildImportLibs(flags, inputs_by_part, deffiles) >>> else: >>> return 1 >>> >>> + if data_exports: >>> + print 'Data exports found, see report above.' >>> + print('These cannot be exported, and must be either duplicated to >>> the ' >>> + 'target DLL, or wrapped in a function.') >>> + return 1 >>> + >>> mt_exe = GetMtPath() >>> for i, dll in enumerate(dlls): >>> Log('embedding manifest in %s' % dll) >>> >>> >>> >> >
Alright, continuing to talk to myself, I noticed that a lot of the constants are either already split out into a blah_constants.cc or a blah_switches.cc. So, the ability to link a .obj from within a .lib seems useful, so split_link can do that now. On Sat, May 18, 2013 at 7:43 PM, Scott Graham <scottmg@chromium.org> wrote: > Some more craziness, const variables don't export with > __declspec(dllexport) or a .def file. > > e.g. these do not show up in the DLL exports. > > __declspec(dllexport) const char* const kSomeConstant = "stuffy"; > __declspec(dllexport) const int kSomeIntConstant = 34343; > > > Adding an extern declaration makes it work, but obviously we don't want to > have to do that. These do export: > > extern __declspec(dllexport) const char* const kSomeConstant; > __declspec(dllexport) const char* const kSomeConstant = "stuffy"; > extern __declspec(dllexport) const int kSomeIntConstant; > __declspec(dllexport) const int kSomeIntConstant = 34343; > > So... yeah. Not too important, but could cause extra confusion. > > > > On Sat, May 18, 2013 at 7:26 PM, Scott Graham <scottmg@chromium.org>wrote: > >> Another slightly crazy idea that might work for the constants: have the >> split linker find the value of those symbols in the other DLL, generate a C >> file with the contents, and then link that into the other side. >> >> I'm not sure how easy it is to get the value though. >> >> >> On Fri, May 17, 2013 at 9:25 PM, Scott Graham <scottmg@chromium.org>wrote: >> >>> Here's the current list: >>> >>> After https://codereview.chromium.org/15403002/ (almost?) all of them >>> are just int or string constants. If we can split just those constants out >>> in to separate .cc files (and ideally separate gyp targets/.libs) then we >>> can just put them in both sides in here: >>> https://code.google.com/p/chromium/codesearch#chromium/src/build/split_link_p... >>> >>> If it's too messy to make new targets for the constants files, I could >>> also make split_link crack .lib files and put particular .obj files in both >>> sides, so then we'd only have to break them out into a file, but not mess >>> with gyp too much. >>> >>> part 0 contains data export: wchar_t const * const >>> appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache >>> @@3QB_WB) >>> part 0 contains data export: char const * const >>> switches::kAudioBufferSize (aka ?kAudioBufferSize@switches@@3QBDB) >>> part 0 contains data export: int const fileapi::kCreateFilePermissions >>> (aka ?kCreateFilePermissions@fileapi@@3HB) >>> part 0 contains data export: wchar_t const * const >>> webkit_database::kDatabaseDirectoryName (aka >>> ?kDatabaseDirectoryName@webkit_database@@3QB_WB) >>> part 0 contains data export: char const * const >>> switches::kDebugPluginLoading (aka ?kDebugPluginLoading@switches@@3QBDB) >>> part 0 contains data export: public: static char const * const >>> media::AudioManagerBase::kDefaultDeviceId (aka >>> ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) >>> part 0 contains data export: char const * const >>> switches::kDisableEncryptedMedia (aka ?kDisableEncryptedMedia@switches >>> @@3QBDB) >>> part 0 contains data export: char const * const >>> switches::kDisablePepper3d (aka ?kDisablePepper3d@switches@@3QBDB) >>> part 0 contains data export: char const * const >>> switches::kEnableEac3Playback (aka ?kEnableEac3Playback@switches@@3QBDB) >>> part 0 contains data export: char const * const >>> switches::kEnableOpusPlayback (aka ?kEnableOpusPlayback@switches@@3QBDB) >>> part 0 contains data export: char const * const >>> switches::kEnableVp8AlphaPlayback (aka ?kEnableVp8AlphaPlayback@switches >>> @@3QBDB) >>> part 0 contains data export: char const * const >>> switches::kEnableVp9Playback (aka ?kEnableVp9Playback@switches@@3QBDB) >>> part 0 contains data export: char const * const kFlashPluginName (aka >>> ?kFlashPluginName@@3QBDB) >>> part 0 contains data export: char const * const >>> kFlashPluginSplDescription (aka ?kFlashPluginSplDescription@@3QBDB) >>> part 0 contains data export: char const * const kFlashPluginSplExtension >>> (aka ?kFlashPluginSplExtension@@3QBDB) >>> part 0 contains data export: char const * const kFlashPluginSplMimeType >>> (aka ?kFlashPluginSplMimeType@@3QBDB) >>> part 0 contains data export: char const * const >>> kFlashPluginSwfDescription (aka ?kFlashPluginSwfDescription@@3QBDB) >>> part 0 contains data export: char const * const kFlashPluginSwfExtension >>> (aka ?kFlashPluginSwfExtension@@3QBDB) >>> part 0 contains data export: char const * const kFlashPluginSwfMimeType >>> (aka ?kFlashPluginSwfMimeType@@3QBDB) >>> part 0 contains data export: char const * const >>> fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi@@3QBDB) >>> part 0 contains data export: wchar_t const * const >>> webkit::npapi::kNewWMPPlugin (aka ?kNewWMPPlugin@npapi@webkit@@3QB_WB) >>> part 0 contains data export: int const fileapi::kOpenFilePermissions >>> (aka ?kOpenFilePermissions@fileapi@@3HB) >>> part 0 contains data export: wchar_t const * const >>> webkit::npapi::kPaintMessageName (aka ?kPaintMessageName@npapi@webkit@ >>> @3QB_WB) >>> part 0 contains data export: char const * const >>> switches::kPpapiFlashArgs (aka ?kPpapiFlashArgs@switches@@3QBDB) >>> part 0 contains data export: int const fileapi::kReadFilePermissions >>> (aka ?kReadFilePermissions@fileapi@@3HB) >>> part 0 contains data export: wchar_t const * const >>> webkit::npapi::kRegistryMozillaPlugins (aka ?kRegistryMozillaPlugins@npapi >>> @webkit@@3QB_WB) >>> part 0 contains data export: wchar_t const * const >>> webkit_database::kTrackerDatabaseFileName (aka >>> ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) >>> part 0 contains data export: char const * const switches::kVideoThreads >>> (aka ?kVideoThreads@switches@@3QBDB) >>> part 0 contains data export: wchar_t const * const >>> webkit::npapi::kWrapperNativeWindowClassName (aka >>> ?kWrapperNativeWindowClassName@npapi@webkit@@3QB_WB) >>> part 0 contains data export: int const fileapi::kWriteFilePermissions >>> (aka ?kWriteFilePermissions@fileapi@@3HB) >>> part 1 contains data export: int const printing::FIRST_PAGE_INDEX (aka >>> ?FIRST_PAGE_INDEX@printing@@3HB) >>> part 1 contains data export: private: static class content::ChildProcess >>> * content::ChildProcess::child_process_ (aka ?child_process_@ChildProcess >>> @content@@0PAV12@A) >>> part 1 contains data export: unsigned int const gMask_00FF00FF (aka >>> ?gMask_00FF00FF@@3IB) >>> part 1 contains data export: private: static unsigned int const * const >>> SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) >>> part 1 contains data export: enum logging::DcheckState >>> logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1 >>> @A) >>> part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@ >>> @3HA) >>> part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@ >>> @3HA) >>> part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@ >>> @3HA) >>> part 1 contains data export: private: static class base::StatsTable * >>> base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ >>> @0PAV12@A) >>> part 1 contains data export: char const * const content::kAboutBlankURL >>> (aka ?kAboutBlankURL@content@@3QBDB) >>> part 1 contains data export: char const * const chrome::kAboutScheme >>> (aka ?kAboutScheme@chrome@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kAcceptEncoding (aka >>> ?kAcceptEncoding@HttpRequestHeaders@net@@2QBDB) >>> part 1 contains data export: char const * const >>> extension_misc::kAppLaunchHistogram (aka ?kAppLaunchHistogram@extension_misc >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> extension_misc::kAppStateCannotRun (aka ?kAppStateCannotRun@extension_misc >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> extension_misc::kAppStateReadyToRun (aka ?kAppStateReadyToRun@extension_misc >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> extension_misc::kAppStateRunning (aka ?kAppStateRunning@extension_misc >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kAppsCheckoutURL (aka ?kAppsCheckoutURL@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeAutoSize (aka >>> ?kAttributeAutoSize@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeContentWindow (aka >>> ?kAttributeContentWindow@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeMaxHeight (aka >>> ?kAttributeMaxHeight@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeMaxWidth (aka >>> ?kAttributeMaxWidth@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeMinHeight (aka >>> ?kAttributeMinHeight@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeMinWidth (aka >>> ?kAttributeMinWidth@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeName (aka ?kAttributeName@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributePartition (aka >>> ?kAttributePartition@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kAttributeSrc (aka ?kAttributeSrc@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> webrtc::MediaConstraintsInterface::kAutoGainControl (aka >>> ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kBackgroundColorInsteadOfCheckerboard (aka >>> ?kBackgroundColorInsteadOfCheckerboard@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kBrowserPluginMimeType (aka ?kBrowserPluginMimeType@content >>> @@3QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kCacheControl (aka >>> ?kCacheControl@HttpRequestHeaders@net@@2QBDB) >>> part 1 contains data export: char const * const >>> extension_manifest_errors::kCannotAccessPage (aka >>> ?kCannotAccessPage@extension_manifest_errors@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kChromeDevToolsScheme (aka ?kChromeDevToolsScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const switches::kChromeFrame >>> (aka ?kChromeFrame@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kChromeInternalScheme (aka ?kChromeInternalScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kChromeSearchMostVisitedUrl (aka ?kChromeSearchMostVisitedUrl@chrome >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kChromeSearchScheme (aka ?kChromeSearchScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kChromeSearchSuggestionUrl (aka ?kChromeSearchSuggestionUrl@chrome >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> content::kChromeUICrashURL (aka ?kChromeUICrashURL@content@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kChromeUIExtensionIconHost (aka ?kChromeUIExtensionIconHost@chrome >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> content::kChromeUIHangURL (aka ?kChromeUIHangURL@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kChromeUIKillURL (aka ?kChromeUIKillURL@content@@3QBDB) >>> part 1 contains data export: char const * const chrome::kChromeUIScheme >>> (aka ?kChromeUIScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kChromeUIShorthangURL (aka ?kChromeUIShorthangURL@content >>> @@3QBDB) >>> part 1 contains data export: char const * const base::kCodepageUTF8 (aka >>> ?kCodepageUTF8@base@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kCompositeToMailbox (aka ?kCompositeToMailbox@switches@cc@ >>> @3QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kContentLength (aka >>> ?kContentLength@HttpRequestHeaders@net@@2QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kContentType (aka ?kContentType@HttpRequestHeaders >>> @net@@2QBDB) >>> part 1 contains data export: public: static wchar_t const * const >>> base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath@base@ >>> @2QB_WB) >>> part 1 contains data export: char const * const chrome::kDataScheme (aka >>> ?kDataScheme@chrome@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> base::debug::CategoryFilter::kDefaultCategoryFilterString (aka >>> ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) >>> part 1 contains data export: char const * const >>> switches::kDefaultTileHeight (aka ?kDefaultTileHeight@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDefaultTileWidth (aka ?kDefaultTileWidth@switches@@3QBDB) >>> part 1 contains data export: char const * const switches::kDisable3DAPIs >>> (aka ?kDisable3DAPIs@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableAcceleratedCompositing (aka >>> ?kDisableAcceleratedCompositing@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableAcceleratedVideoDecode (aka >>> ?kDisableAcceleratedVideoDecode@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableApplicationCache (aka ?kDisableApplicationCache@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const switches::kDisableAudio >>> (aka ?kDisableAudio@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableClientSidePhishingDetection (aka >>> ?kDisableClientSidePhishingDetection@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kDisableColorEstimator (aka ?kDisableColorEstimator@switches >>> @cc@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableCompositingForFixedPosition (aka >>> ?kDisableCompositingForFixedPosition@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableDatabases (aka ?kDisableDatabases@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableDesktopNotifications (aka >>> ?kDisableDesktopNotifications@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableDeviceOrientation (aka ?kDisableDeviceOrientation@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableExtensionsResourceWhitelist (aka >>> ?kDisableExtensionsResourceWhitelist@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableFileSystem (aka ?kDisableFileSystem@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableFlashFullscreen3d (aka ?kDisableFlashFullscreen3d@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableFullScreen (aka ?kDisableFullScreen@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableGeolocation (aka ?kDisableGeolocation@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableGpuVsync (aka ?kDisableGpuVsync@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableHTMLNotifications (aka ?kDisableHTMLNotifications@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableHistogramCustomizer (aka >>> ?kDisableHistogramCustomizer@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> autofill::switches::kDisableInteractiveAutocomplete (aka >>> ?kDisableInteractiveAutocomplete@switches@autofill@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableJavaScriptI18NAPI (aka ?kDisableJavaScriptI18NAPI@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableLocalStorage (aka ?kDisableLocalStorage@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableScriptedPrintThrottling (aka >>> ?kDisableScriptedPrintThrottling@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableSessionStorage (aka ?kDisableSessionStorage@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableSharedWorkers (aka ?kDisableSharedWorkers@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableSpeechInput (aka ?kDisableSpeechInput@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kDisableThreadedAnimation (aka >>> ?kDisableThreadedAnimation@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableWebAudio (aka ?kDisableWebAudio@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDisableWebKitMediaSource (aka ?kDisableWebKitMediaSource@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kDomAutomationController (aka ?kDomAutomationController@switches >>> @@3QBDB) >>> part 1 contains data export: public: static char const * const >>> webrtc::MediaConstraintsInterface::kEchoCancellation (aka >>> ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) >>> part 1 contains data export: class std::basic_string<char,struct >>> std::char_traits<char>,class std::allocator<char> > const >>> google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal >>> @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D >>> @2@@std@@B) >>> part 1 contains data export: public: static struct tagVARIANT const >>> base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant >>> @win@base@@2UtagVARIANT@@B) >>> part 1 contains data export: char const * const >>> switches::kEnableAcceleratedPainting (aka >>> ?kEnableAcceleratedPainting@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableAccessibilityLogging (aka >>> ?kEnableAccessibilityLogging@switches@@3QBDB) >>> part 1 contains data export: char const * const switches::kEnableAdview >>> (aka ?kEnableAdview@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableAdviewSrcAttribute (aka ?kEnableAdviewSrcAttribute@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableBenchmarking (aka ?kEnableBenchmarking@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableBrowserPluginForAllViewTypes (aka >>> ?kEnableBrowserPluginForAllViewTypes@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableCompositingForFixedPosition (aka >>> ?kEnableCompositingForFixedPosition@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kEnableCompositorFrameMessage (aka >>> ?kEnableCompositorFrameMessage@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableDelegatedRenderer (aka ?kEnableDelegatedRenderer@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableDeviceMotion (aka ?kEnableDeviceMotion@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableExperimentalCanvasFeatures (aka >>> ?kEnableExperimentalCanvasFeatures@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> autofill::switches::kEnableExperimentalFormFilling (aka >>> ?kEnableExperimentalFormFilling@switches@autofill@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableExperimentalWebKitFeatures (aka >>> ?kEnableExperimentalWebKitFeatures@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableFixedLayout (aka ?kEnableFixedLayout@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableGpuBenchmarking (aka ?kEnableGpuBenchmarking@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableHighDpiCompositingForFixedPosition (aka >>> ?kEnableHighDpiCompositingForFixedPosition@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableIPCFuzzing (aka ?kEnableIPCFuzzing@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableMemoryBenchmarking (aka ?kEnableMemoryBenchmarking@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const switches::kEnableNaCl >>> (aka ?kEnableNaCl@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableNetBenchmarking (aka ?kEnableNetBenchmarking@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kEnablePartialSwap (aka ?kEnablePartialSwap@switches@cc@ >>> @3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnablePasswordGeneration (aka ?kEnablePasswordGeneration@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnablePepperTesting (aka ?kEnablePepperTesting@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kEnablePerTilePainting (aka ?kEnablePerTilePainting@switches >>> @cc@@3QBDB) >>> part 1 contains data export: char const * const switches::kEnablePinch >>> (aka ?kEnablePinch@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kEnablePinchZoomScrollbars (aka >>> ?kEnablePinchZoomScrollbars@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const switches::kEnablePnacl >>> (aka ?kEnablePnacl@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnablePreparsedJsCaching (aka ?kEnablePreparsedJsCaching@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kEnableRightAlignedScheduling (aka >>> ?kEnableRightAlignedScheduling@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableSkiaBenchmarking (aka ?kEnableSkiaBenchmarking@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableSoftwareCompositingGLAdapter (aka >>> ?kEnableSoftwareCompositingGLAdapter@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableSpeechSynthesis (aka ?kEnableSpeechSynthesis@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableSpellingAutoCorrect (aka >>> ?kEnableSpellingAutoCorrect@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableStrictSiteIsolation (aka >>> ?kEnableStrictSiteIsolation@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableThreadedCompositing (aka >>> ?kEnableThreadedCompositing@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kEnableTopControlsPositionCalculation (aka >>> ?kEnableTopControlsPositionCalculation@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableViewport (aka ?kEnableViewport@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableVsyncNotification (aka ?kEnableVsyncNotification@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kEnableWatchdog (aka ?kEnableWatchdog@switches@@3QBDB) >>> part 1 contains data export: char const * const switches::kEnableWebMIDI >>> (aka ?kEnableWebMIDI@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kErrorAlreadyNavigated (aka >>> ?kErrorAlreadyNavigated@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kErrorCannotRemovePartition (aka >>> ?kErrorCannotRemovePartition@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const net::kErrorDomain (aka >>> ?kErrorDomain@net@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kErrorInvalidPartition (aka >>> ?kErrorInvalidPartition@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventClose (aka ?kEventClose@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventConsoleMessage (aka >>> ?kEventConsoleMessage@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventContentLoad (aka >>> ?kEventContentLoad@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventExit (aka ?kEventExit@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventLoadAbort (aka >>> ?kEventLoadAbort@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventLoadCommit (aka >>> ?kEventLoadCommit@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventLoadRedirect (aka >>> ?kEventLoadRedirect@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventLoadStart (aka >>> ?kEventLoadStart@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventLoadStop (aka ?kEventLoadStop@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventNewWindow (aka >>> ?kEventNewWindow@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventRequestPermission (aka >>> ?kEventRequestPermission@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventResponsive (aka >>> ?kEventResponsive@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventSizeChanged (aka >>> ?kEventSizeChanged@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kEventUnresponsive (aka >>> ?kEventUnresponsive@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kExtensionInvalidRequestURL (aka ?kExtensionInvalidRequestURL@chrome >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kExtensionProcess (aka ?kExtensionProcess@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kExtensionResourceInvalidRequestURL (aka >>> ?kExtensionResourceInvalidRequestURL@chrome@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kExtensionResourceScheme (aka ?kExtensionResourceScheme@chrome >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) >>> part 1 contains data export: public: static int const >>> ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka >>> ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) >>> part 1 contains data export: int const gfx::kFaviconSize (aka >>> ?kFaviconSize@gfx@@3HB) >>> part 1 contains data export: char const * const chrome::kFileScheme (aka >>> ?kFileScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kForceFieldTrials (aka ?kForceFieldTrials@switches@@3QBDB) >>> part 1 contains data export: char const * const chrome::kFtpScheme (aka >>> ?kFtpScheme@chrome@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> webrtc::MediaConstraintsInterface::kHighpassFilter (aka >>> ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) >>> part 1 contains data export: int const >>> content::kHistogramSynchronizerReservedSequenceNumber (aka >>> ?kHistogramSynchronizerReservedSequenceNumber@content@@3HB) >>> part 1 contains data export: public: static char const * const >>> LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError >>> @@2QBDB) >>> part 1 contains data export: char const * const chrome::kHttpScheme (aka >>> ?kHttpScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const chrome::kHttpsScheme >>> (aka ?kHttpsScheme@chrome@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kIfModifiedSince (aka >>> ?kIfModifiedSince@HttpRequestHeaders@net@@2QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kIfNoneMatch (aka ?kIfNoneMatch@HttpRequestHeaders >>> @net@@2QBDB) >>> part 1 contains data export: char const * const >>> switches::kInProcessPlugins (aka ?kInProcessPlugins@switches@@3QBDB) >>> part 1 contains data export: int const >>> content::browser_plugin::kInstanceIDNone (aka >>> ?kInstanceIDNone@browser_plugin@content@@3HB) >>> part 1 contains data export: char const * const >>> switches::kInstantProcess (aka ?kInstantProcess@switches@@3QBDB) >>> part 1 contains data export: public: static void * >>> base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ >>> @2QAXA) >>> part 1 contains data export: public: static struct PP_NetAddress_Private >>> const ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka >>> ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@ >>> @2UPP_NetAddress_Private@@B) >>> part 1 contains data export: char const * const >>> printing::kIsFirstRequest (aka ?kIsFirstRequest@printing@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kIsTopLevel (aka ?kIsTopLevel@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kJavaScriptFlags (aka ?kJavaScriptFlags@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kJavaScriptScheme (aka ?kJavaScriptScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const switches::kLang (aka >>> ?kLang@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kLowResolutionContentsScaleFactor (aka >>> ?kLowResolutionContentsScaleFactor@switches@cc@@3QBDB) >>> part 1 contains data export: int const >>> content::kMaxSessionHistoryEntries (aka ?kMaxSessionHistoryEntries@content >>> @@3HB) >>> part 1 contains data export: char const * const >>> cc::switches::kMaxTilesForInterestArea (aka >>> ?kMaxTilesForInterestArea@switches@cc@@3QBDB) >>> part 1 contains data export: unsigned int const content::kMaxTitleChars >>> (aka ?kMaxTitleChars@content@@3IB) >>> part 1 contains data export: unsigned int const content::kMaxURLChars >>> (aka ?kMaxURLChars@content@@3IB) >>> part 1 contains data export: char const * const >>> switches::kMaxUntiledLayerHeight (aka ?kMaxUntiledLayerHeight@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kMaxUntiledLayerWidth (aka ?kMaxUntiledLayerWidth@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kMaxUnusedResourceMemoryUsagePercentage (aka >>> ?kMaxUnusedResourceMemoryUsagePercentage@switches@cc@@3QBDB) >>> part 1 contains data export: double const content::kMaximumZoomFactor >>> (aka ?kMaximumZoomFactor@content@@3NB) >>> part 1 contains data export: char const * const >>> extension_misc::kMediaFileSystemPathPart (aka >>> ?kMediaFileSystemPathPart@extension_misc@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content >>> @@3QBDB) >>> part 1 contains data export: char const * const switches::kMemoryMetrics >>> (aka ?kMemoryMetrics@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodBack (aka ?kMethodBack@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodCanGoBack (aka >>> ?kMethodCanGoBack@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodCanGoForward (aka >>> ?kMethodCanGoForward@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodForward (aka ?kMethodForward@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodGetProcessId (aka >>> ?kMethodGetProcessId@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodGetRouteId (aka >>> ?kMethodGetRouteId@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodGo (aka ?kMethodGo@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodInternalAttachWindowTo (aka >>> ?kMethodInternalAttachWindowTo@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodInternalPersistObject (aka >>> ?kMethodInternalPersistObject@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodInternalSetPermission (aka >>> ?kMethodInternalSetPermission@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodReload (aka ?kMethodReload@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodStop (aka ?kMethodStop@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kMethodTerminate (aka >>> ?kMethodTerminate@browser_plugin@content@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard >>> @ui@@2QBDB) >>> part 1 contains data export: public: static char const * const >>> ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) >>> part 1 contains data export: public: static char const * const >>> ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) >>> part 1 contains data export: public: static char const * const >>> ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@ >>> @2QBDB) >>> part 1 contains data export: double const content::kMinimumZoomFactor >>> (aka ?kMinimumZoomFactor@content@@3NB) >>> part 1 contains data export: public: static char const * const >>> chrome::ChromeContentClient::kNaClPluginName (aka >>> ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kNewHeight (aka ?kNewHeight@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kNewURL (aka ?kNewURL@browser_plugin@content@ >>> @3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kNewWidth (aka ?kNewWidth@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: public: static int const >>> content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@ >>> @2HB) >>> part 1 contains data export: char const * const >>> switches::kNoJsRandomness (aka ?kNoJsRandomness@switches@@3QBDB) >>> part 1 contains data export: char const * const switches::kNoSandbox >>> (aka ?kNoSandbox@switches@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> webrtc::MediaConstraintsInterface::kNoiseSuppression (aka >>> ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kNumRasterThreads (aka ?kNumRasterThreads@switches@cc@ >>> @3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kOldHeight (aka ?kOldHeight@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kOldURL (aka ?kOldURL@browser_plugin@content@ >>> @3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kOldWidth (aka ?kOldWidth@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits >>> (aka ?kPPIdTypeBits@ppapi@@3IB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPermission (aka ?kPermission@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPermissionTypeDownload (aka >>> ?kPermissionTypeDownload@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPermissionTypeGeolocation (aka >>> ?kPermissionTypeGeolocation@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPermissionTypeMedia (aka >>> ?kPermissionTypeMedia@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPermissionTypeNewWindow (aka >>> ?kPermissionTypeNewWindow@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPermissionTypePointerLock (aka >>> ?kPermissionTypePointerLock@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kPersistPrefix (aka ?kPersistPrefix@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: char const * const >>> extension_misc::kPlatformAppLaunchHistogram (aka >>> ?kPlatformAppLaunchHistogram@extension_misc@@3QBDB) >>> part 1 contains data export: char const * const switches::kPlaybackMode >>> (aka ?kPlaybackMode@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kPreviewRequestID (aka ?kPreviewRequestID@printing@@3QBDB) >>> part 1 contains data export: char const * const printing::kPreviewUIID >>> (aka ?kPreviewUIID@printing@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kProcessId (aka ?kProcessId@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: public: static char const * const >>> net::HttpRequestHeaders::kRange (aka ?kRange@HttpRequestHeaders@net@ >>> @2QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kReason (aka ?kReason@browser_plugin@content@ >>> @3QBDB) >>> part 1 contains data export: char const * const switches::kRecordMode >>> (aka ?kRecordMode@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kRendererAssertTest (aka ?kRendererAssertTest@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kRendererPrintPreview (aka ?kRendererPrintPreview@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kRendererStartupDialog (aka ?kRendererStartupDialog@switches >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kRequestId (aka ?kRequestId@browser_plugin >>> @content@@3QBDB) >>> part 1 contains data export: unsigned int const >>> autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill >>> @@3IB) >>> part 1 contains data export: public: static wchar_t const * const >>> base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) >>> part 1 contains data export: char const * const >>> printing::kSettingFitToPageEnabled (aka ?kSettingFitToPageEnabled@printing >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingGenerateDraftData (aka ?kSettingGenerateDraftData@printing >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingHeaderFooterDate (aka ?kSettingHeaderFooterDate@printing >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingHeaderFooterEnabled (aka >>> ?kSettingHeaderFooterEnabled@printing@@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingHeaderFooterTitle (aka ?kSettingHeaderFooterTitle@printing >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingHeaderFooterURL (aka ?kSettingHeaderFooterURL@printing >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingMarginsType (aka ?kSettingMarginsType@printing@@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingPreviewModifiable (aka ?kSettingPreviewModifiable@printing >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> printing::kSettingPrintToPDF (aka ?kSettingPrintToPDF@printing@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowCompositedLayerBorders (aka >>> ?kShowCompositedLayerBorders@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowCompositedLayerTree (aka >>> ?kShowCompositedLayerTree@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowFPSCounter (aka ?kShowFPSCounter@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowNonOccludingRects (aka ?kShowNonOccludingRects@switches >>> @cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowOccludingRects (aka ?kShowOccludingRects@switches@cc@ >>> @3QBDB) >>> part 1 contains data export: char const * const >>> switches::kShowPaintRects (aka ?kShowPaintRects@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowPropertyChangedRects (aka >>> ?kShowPropertyChangedRects@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowReplicaScreenSpaceRects (aka >>> ?kShowReplicaScreenSpaceRects@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowScreenSpaceRects (aka ?kShowScreenSpaceRects@switches >>> @cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kShowSurfaceDamageRects (aka ?kShowSurfaceDamageRects@switches >>> @cc@@3QBDB) >>> part 1 contains data export: char const * const switches::kSigninProcess >>> (aka ?kSigninProcess@switches@@3QBDB) >>> part 1 contains data export: char const * const switches::kSingleProcess >>> (aka ?kSingleProcess@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kSitePerProcess (aka ?kSitePerProcess@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kSlowDownRasterScaleFactor (aka >>> ?kSlowDownRasterScaleFactor@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kStrictLayerPropertyChangeChecking (aka >>> ?kStrictLayerPropertyChangeChecking@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kSwappedOutScheme (aka ?kSwappedOutScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const content::kSwappedOutURL >>> (aka ?kSwappedOutURL@content@@3QBDB) >>> part 1 contains data export: char const * const switches::kTestSandbox >>> (aka ?kTestSandbox@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kTopControlsHeight (aka ?kTopControlsHeight@switches@cc@ >>> @3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kTopControlsHideThreshold (aka >>> ?kTopControlsHideThreshold@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kTopControlsShowThreshold (aka >>> ?kTopControlsShowThreshold@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> cc::switches::kTraceOverdraw (aka ?kTraceOverdraw@switches@cc@@3QBDB) >>> part 1 contains data export: char const * const >>> content::browser_plugin::kURL (aka ?kURL@browser_plugin@content@@3QBDB) >>> part 1 contains data export: char const * const >>> chrome::kUnknownLanguageCode (aka ?kUnknownLanguageCode@chrome@@3QBDB) >>> part 1 contains data export: char const * const >>> content::kUnreachableWebDataURL (aka ?kUnreachableWebDataURL@content >>> @@3QBDB) >>> part 1 contains data export: public: static char const * const >>> webrtc::MediaConstraintsInterface::kValueFalse (aka >>> ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) >>> part 1 contains data export: char const * const >>> chrome::kViewSourceScheme (aka ?kViewSourceScheme@chrome@@3QBDB) >>> part 1 contains data export: char const * const extensions::kViewTypeAll >>> (aka ?kViewTypeAll@extensions@@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypeAppShell (aka ?kViewTypeAppShell@extensions@@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypeBackgroundPage (aka ?kViewTypeBackgroundPage@extensions >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypeExtensionDialog (aka >>> ?kViewTypeExtensionDialog@extensions@@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypeInfobar (aka ?kViewTypeInfobar@extensions@@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypeNotification (aka ?kViewTypeNotification@extensions >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypePanel (aka ?kViewTypePanel@extensions@@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypePopup (aka ?kViewTypePopup@extensions@@3QBDB) >>> part 1 contains data export: char const * const >>> extensions::kViewTypeTabContents (aka ?kViewTypeTabContents@extensions >>> @@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kWaitForDebugger (aka ?kWaitForDebugger@switches@@3QBDB) >>> part 1 contains data export: char const * const >>> switches::kWebCoreLogChannels (aka ?kWebCoreLogChannels@switches@@3QBDB) >>> part 1 contains data export: wchar_t const * const kWhitespaceUTF16 (aka >>> ?kWhitespaceUTF16@@3QB_WB) >>> part 1 contains data export: wchar_t const * const kWhitespaceWide (aka >>> ?kWhitespaceWide@@3QB_WB) >>> part 1 contains data export: private: static class ppapi::PpapiGlobals * >>> ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals >>> @ppapi@@0PAV12@A) >>> >>> >>> >>> On Fri, May 17, 2013 at 9:20 PM, <scottmg@chromium.org> wrote: >>> >>>> Reviewers: cpu, ananta, >>>> >>>> Description: >>>> add DATA declarations to split_link .def files >>>> >>>> And report error when they're added so they can be fixed. >>>> >>>> R=cpu@chromium.org, ananta@chromium.org >>>> BUG=237249 >>>> >>>> Please review this at https://codereview.chromium.**org/15310002/<https://codereview.chromium.org/1... >>>> >>>> SVN Base: svn://svn.chromium.org/chrome/**trunk/src<http://svn.chromium.org/chrome/trunk/src> >>>> >>>> Affected files: >>>> M tools/win/split_link/split_**link.py >>>> >>>> >>>> Index: tools/win/split_link/split_**link.py >>>> diff --git a/tools/win/split_link/split_**link.py >>>> b/tools/win/split_link/split_**link.py >>>> index 2b035c5418b2a70389ee903fb30820**d3a1c4d469..** >>>> 7598df4e3c2f0f80419396c0db6f27**ae438fea2f 100644 >>>> --- a/tools/win/split_link/split_**link.py >>>> +++ b/tools/win/split_link/split_**link.py >>>> @@ -179,6 +179,29 @@ def RunLinker(flags, index, inputs, phase): >>>> return stdout, popen.returncode, output_name >>>> >>>> >>>> +def Unmangle(export): >>>> + "Returns the human-presentable name of a mangled symbol.""" >>>> + # Use dbghelp.dll to demangle the name. >>>> + # TODO(scottmg): Perhaps a simple cache? Seems pretty fast though. >>>> + UnDecorateSymbolName = ctypes.windll.dbghelp.**UnDecorateSymbolName >>>> + buffer_size = 2048 >>>> + output_string = ctypes.create_string_buffer(**buffer_size) >>>> + if not UnDecorateSymbolName( >>>> + export, ctypes.byref(output_string), buffer_size, 0): >>>> + raise ctypes.WinError() >>>> + return output_string.value >>>> + >>>> + >>>> +def IsDataDefinition(export): >>>> + """Determines if a given name is data rather than a function. Always >>>> returns >>>> + False for C-style (as opposed to C++-style names).""" >>>> + if export[0] != '?': >>>> + return False >>>> + >>>> + # If it contains a '(' we assume it's a function. >>>> + return '(' not in Unmangle(export) >>>> + >>>> + >>>> def GenerateDefFiles(unresolved_**by_part): >>>> """Given a list of unresolved externals, generates a .def file that >>>> will >>>> cause all those symbols to be exported.""" >>>> @@ -192,7 +215,10 @@ def GenerateDefFiles(unresolved_**by_part): >>>> for j, part in enumerate(unresolved_by_part): >>>> if i == j: >>>> continue >>>> - print >> f, '\n'.join(' ' + export for export in part) >>>> + is_data = [' DATA' if IsDataDefinition(export) else '' >>>> + for export in part] >>>> + print >> f, '\n'.join(' ' + export + data >>>> + for export, data in zip(part, is_data)) >>>> deffiles.append(deffile) >>>> return deffiles >>>> >>>> @@ -267,17 +293,31 @@ def main(): >>>> import_libs = [None] * num_parts >>>> deffiles = [None] * num_parts >>>> >>>> + data_exports = 0 >>>> for i in range(5): >>>> Log('--- starting pass %d' % i) >>>> ok, dlls, unresolved_by_part = AttemptLink( >>>> flags, inputs_by_part, unresolved_by_part, deffiles, >>>> import_libs) >>>> if ok: >>>> break >>>> + data_exports = 0 >>>> + for i, part in enumerate(unresolved_by_part): >>>> + for export in part: >>>> + if IsDataDefinition(export): >>>> + print 'part %d contains data export: %s (aka %s)' % ( >>>> + i, Unmangle(export), export) >>>> + data_exports += 1 >>>> deffiles = GenerateDefFiles(unresolved_**by_part) >>>> import_libs = BuildImportLibs(flags, inputs_by_part, deffiles) >>>> else: >>>> return 1 >>>> >>>> + if data_exports: >>>> + print 'Data exports found, see report above.' >>>> + print('These cannot be exported, and must be either duplicated to >>>> the ' >>>> + 'target DLL, or wrapped in a function.') >>>> + return 1 >>>> + >>>> mt_exe = GetMtPath() >>>> for i, dll in enumerate(dlls): >>>> Log('embedding manifest in %s' % dll) >>>> >>>> >>>> >>> >> >
This seems to work pretty well! I haven't found all the necessary _switches, _constants, etc. files yet, but with the ps #5, it went from 315 data exports down to 84. Going through the list, I think 40-50 can probably be handled in the same way as long as they're not too tangled into other code. This also doesn't include Carlos' code changes to wrap some of the stickier (non-const) data in functions, so with both of those we should be getting very close. On Sat, May 18, 2013 at 9:58 PM, Scott Graham <scottmg@chromium.org> wrote: > Alright, continuing to talk to myself, I noticed that a lot of the > constants are either already split out into a blah_constants.cc or a > blah_switches.cc. > > So, the ability to link a .obj from within a .lib seems useful, so > split_link can do that now. > > > On Sat, May 18, 2013 at 7:43 PM, Scott Graham <scottmg@chromium.org>wrote: > >> Some more craziness, const variables don't export with >> __declspec(dllexport) or a .def file. >> >> e.g. these do not show up in the DLL exports. >> >> __declspec(dllexport) const char* const kSomeConstant = "stuffy"; >> __declspec(dllexport) const int kSomeIntConstant = 34343; >> >> >> Adding an extern declaration makes it work, but obviously we don't want >> to have to do that. These do export: >> >> extern __declspec(dllexport) const char* const kSomeConstant; >> __declspec(dllexport) const char* const kSomeConstant = "stuffy"; >> extern __declspec(dllexport) const int kSomeIntConstant; >> __declspec(dllexport) const int kSomeIntConstant = 34343; >> >> So... yeah. Not too important, but could cause extra confusion. >> >> >> >> On Sat, May 18, 2013 at 7:26 PM, Scott Graham <scottmg@chromium.org>wrote: >> >>> Another slightly crazy idea that might work for the constants: have the >>> split linker find the value of those symbols in the other DLL, generate a C >>> file with the contents, and then link that into the other side. >>> >>> I'm not sure how easy it is to get the value though. >>> >>> >>> On Fri, May 17, 2013 at 9:25 PM, Scott Graham <scottmg@chromium.org>wrote: >>> >>>> Here's the current list: >>>> >>>> After https://codereview.chromium.org/15403002/ (almost?) all of them >>>> are just int or string constants. If we can split just those constants out >>>> in to separate .cc files (and ideally separate gyp targets/.libs) then we >>>> can just put them in both sides in here: >>>> https://code.google.com/p/chromium/codesearch#chromium/src/build/split_link_p... >>>> >>>> If it's too messy to make new targets for the constants files, I could >>>> also make split_link crack .lib files and put particular .obj files in both >>>> sides, so then we'd only have to break them out into a file, but not mess >>>> with gyp too much. >>>> >>>> part 0 contains data export: wchar_t const * const >>>> appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache >>>> @@3QB_WB) >>>> part 0 contains data export: char const * const >>>> switches::kAudioBufferSize (aka ?kAudioBufferSize@switches@@3QBDB) >>>> part 0 contains data export: int const fileapi::kCreateFilePermissions >>>> (aka ?kCreateFilePermissions@fileapi@@3HB) >>>> part 0 contains data export: wchar_t const * const >>>> webkit_database::kDatabaseDirectoryName (aka >>>> ?kDatabaseDirectoryName@webkit_database@@3QB_WB) >>>> part 0 contains data export: char const * const >>>> switches::kDebugPluginLoading (aka ?kDebugPluginLoading@switches >>>> @@3QBDB) >>>> part 0 contains data export: public: static char const * const >>>> media::AudioManagerBase::kDefaultDeviceId (aka >>>> ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) >>>> part 0 contains data export: char const * const >>>> switches::kDisableEncryptedMedia (aka ?kDisableEncryptedMedia@switches >>>> @@3QBDB) >>>> part 0 contains data export: char const * const >>>> switches::kDisablePepper3d (aka ?kDisablePepper3d@switches@@3QBDB) >>>> part 0 contains data export: char const * const >>>> switches::kEnableEac3Playback (aka ?kEnableEac3Playback@switches >>>> @@3QBDB) >>>> part 0 contains data export: char const * const >>>> switches::kEnableOpusPlayback (aka ?kEnableOpusPlayback@switches >>>> @@3QBDB) >>>> part 0 contains data export: char const * const >>>> switches::kEnableVp8AlphaPlayback (aka ?kEnableVp8AlphaPlayback@switches >>>> @@3QBDB) >>>> part 0 contains data export: char const * const >>>> switches::kEnableVp9Playback (aka ?kEnableVp9Playback@switches@@3QBDB) >>>> part 0 contains data export: char const * const kFlashPluginName (aka >>>> ?kFlashPluginName@@3QBDB) >>>> part 0 contains data export: char const * const >>>> kFlashPluginSplDescription (aka ?kFlashPluginSplDescription@@3QBDB) >>>> part 0 contains data export: char const * const >>>> kFlashPluginSplExtension (aka ?kFlashPluginSplExtension@@3QBDB) >>>> part 0 contains data export: char const * const kFlashPluginSplMimeType >>>> (aka ?kFlashPluginSplMimeType@@3QBDB) >>>> part 0 contains data export: char const * const >>>> kFlashPluginSwfDescription (aka ?kFlashPluginSwfDescription@@3QBDB) >>>> part 0 contains data export: char const * const >>>> kFlashPluginSwfExtension (aka ?kFlashPluginSwfExtension@@3QBDB) >>>> part 0 contains data export: char const * const kFlashPluginSwfMimeType >>>> (aka ?kFlashPluginSwfMimeType@@3QBDB) >>>> part 0 contains data export: char const * const >>>> fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi >>>> @@3QBDB) >>>> part 0 contains data export: wchar_t const * const >>>> webkit::npapi::kNewWMPPlugin (aka ?kNewWMPPlugin@npapi@webkit@@3QB_WB) >>>> part 0 contains data export: int const fileapi::kOpenFilePermissions >>>> (aka ?kOpenFilePermissions@fileapi@@3HB) >>>> part 0 contains data export: wchar_t const * const >>>> webkit::npapi::kPaintMessageName (aka ?kPaintMessageName@npapi@webkit@ >>>> @3QB_WB) >>>> part 0 contains data export: char const * const >>>> switches::kPpapiFlashArgs (aka ?kPpapiFlashArgs@switches@@3QBDB) >>>> part 0 contains data export: int const fileapi::kReadFilePermissions >>>> (aka ?kReadFilePermissions@fileapi@@3HB) >>>> part 0 contains data export: wchar_t const * const >>>> webkit::npapi::kRegistryMozillaPlugins (aka ?kRegistryMozillaPlugins@npapi >>>> @webkit@@3QB_WB) >>>> part 0 contains data export: wchar_t const * const >>>> webkit_database::kTrackerDatabaseFileName (aka >>>> ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) >>>> part 0 contains data export: char const * const switches::kVideoThreads >>>> (aka ?kVideoThreads@switches@@3QBDB) >>>> part 0 contains data export: wchar_t const * const >>>> webkit::npapi::kWrapperNativeWindowClassName (aka >>>> ?kWrapperNativeWindowClassName@npapi@webkit@@3QB_WB) >>>> part 0 contains data export: int const fileapi::kWriteFilePermissions >>>> (aka ?kWriteFilePermissions@fileapi@@3HB) >>>> part 1 contains data export: int const printing::FIRST_PAGE_INDEX (aka >>>> ?FIRST_PAGE_INDEX@printing@@3HB) >>>> part 1 contains data export: private: static class >>>> content::ChildProcess * content::ChildProcess::child_process_ (aka >>>> ?child_process_@ChildProcess@content@@0PAV12@A) >>>> part 1 contains data export: unsigned int const gMask_00FF00FF (aka >>>> ?gMask_00FF00FF@@3IB) >>>> part 1 contains data export: private: static unsigned int const * const >>>> SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) >>>> part 1 contains data export: enum logging::DcheckState >>>> logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1 >>>> @A) >>>> part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@ >>>> @3HA) >>>> part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@ >>>> @3HA) >>>> part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@ >>>> @3HA) >>>> part 1 contains data export: private: static class base::StatsTable * >>>> base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ >>>> @0PAV12@A) >>>> part 1 contains data export: char const * const content::kAboutBlankURL >>>> (aka ?kAboutBlankURL@content@@3QBDB) >>>> part 1 contains data export: char const * const chrome::kAboutScheme >>>> (aka ?kAboutScheme@chrome@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kAcceptEncoding (aka >>>> ?kAcceptEncoding@HttpRequestHeaders@net@@2QBDB) >>>> part 1 contains data export: char const * const >>>> extension_misc::kAppLaunchHistogram (aka ?kAppLaunchHistogram@extension_misc >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extension_misc::kAppStateCannotRun (aka ?kAppStateCannotRun@extension_misc >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extension_misc::kAppStateReadyToRun (aka ?kAppStateReadyToRun@extension_misc >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extension_misc::kAppStateRunning (aka ?kAppStateRunning@extension_misc >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kAppsCheckoutURL (aka ?kAppsCheckoutURL@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeAutoSize (aka >>>> ?kAttributeAutoSize@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeContentWindow (aka >>>> ?kAttributeContentWindow@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeMaxHeight (aka >>>> ?kAttributeMaxHeight@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeMaxWidth (aka >>>> ?kAttributeMaxWidth@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeMinHeight (aka >>>> ?kAttributeMinHeight@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeMinWidth (aka >>>> ?kAttributeMinWidth@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeName (aka ?kAttributeName@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributePartition (aka >>>> ?kAttributePartition@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kAttributeSrc (aka ?kAttributeSrc@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> webrtc::MediaConstraintsInterface::kAutoGainControl (aka >>>> ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kBackgroundColorInsteadOfCheckerboard (aka >>>> ?kBackgroundColorInsteadOfCheckerboard@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kBrowserPluginMimeType (aka ?kBrowserPluginMimeType@content >>>> @@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kCacheControl (aka >>>> ?kCacheControl@HttpRequestHeaders@net@@2QBDB) >>>> part 1 contains data export: char const * const >>>> extension_manifest_errors::kCannotAccessPage (aka >>>> ?kCannotAccessPage@extension_manifest_errors@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kChromeDevToolsScheme (aka ?kChromeDevToolsScheme@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const switches::kChromeFrame >>>> (aka ?kChromeFrame@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kChromeInternalScheme (aka ?kChromeInternalScheme@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kChromeSearchMostVisitedUrl (aka ?kChromeSearchMostVisitedUrl@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kChromeSearchScheme (aka ?kChromeSearchScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kChromeSearchSuggestionUrl (aka ?kChromeSearchSuggestionUrl@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kChromeUICrashURL (aka ?kChromeUICrashURL@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kChromeUIExtensionIconHost (aka ?kChromeUIExtensionIconHost@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kChromeUIHangURL (aka ?kChromeUIHangURL@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kChromeUIKillURL (aka ?kChromeUIKillURL@content@@3QBDB) >>>> part 1 contains data export: char const * const chrome::kChromeUIScheme >>>> (aka ?kChromeUIScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kChromeUIShorthangURL (aka ?kChromeUIShorthangURL@content >>>> @@3QBDB) >>>> part 1 contains data export: char const * const base::kCodepageUTF8 >>>> (aka ?kCodepageUTF8@base@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kCompositeToMailbox (aka ?kCompositeToMailbox@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kContentLength (aka >>>> ?kContentLength@HttpRequestHeaders@net@@2QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kContentType (aka ?kContentType@HttpRequestHeaders >>>> @net@@2QBDB) >>>> part 1 contains data export: public: static wchar_t const * const >>>> base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath >>>> @base@@2QB_WB) >>>> part 1 contains data export: char const * const chrome::kDataScheme >>>> (aka ?kDataScheme@chrome@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> base::debug::CategoryFilter::kDefaultCategoryFilterString (aka >>>> ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDefaultTileHeight (aka ?kDefaultTileHeight@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDefaultTileWidth (aka ?kDefaultTileWidth@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisable3DAPIs (aka ?kDisable3DAPIs@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableAcceleratedCompositing (aka >>>> ?kDisableAcceleratedCompositing@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableAcceleratedVideoDecode (aka >>>> ?kDisableAcceleratedVideoDecode@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableApplicationCache (aka ?kDisableApplicationCache@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const switches::kDisableAudio >>>> (aka ?kDisableAudio@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableClientSidePhishingDetection (aka >>>> ?kDisableClientSidePhishingDetection@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kDisableColorEstimator (aka ?kDisableColorEstimator@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableCompositingForFixedPosition (aka >>>> ?kDisableCompositingForFixedPosition@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableDatabases (aka ?kDisableDatabases@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableDesktopNotifications (aka >>>> ?kDisableDesktopNotifications@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableDeviceOrientation (aka ?kDisableDeviceOrientation@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableExtensionsResourceWhitelist (aka >>>> ?kDisableExtensionsResourceWhitelist@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableFileSystem (aka ?kDisableFileSystem@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableFlashFullscreen3d (aka ?kDisableFlashFullscreen3d@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableFullScreen (aka ?kDisableFullScreen@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableGeolocation (aka ?kDisableGeolocation@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableGpuVsync (aka ?kDisableGpuVsync@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableHTMLNotifications (aka ?kDisableHTMLNotifications@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableHistogramCustomizer (aka >>>> ?kDisableHistogramCustomizer@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> autofill::switches::kDisableInteractiveAutocomplete (aka >>>> ?kDisableInteractiveAutocomplete@switches@autofill@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableJavaScriptI18NAPI (aka ?kDisableJavaScriptI18NAPI@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableLocalStorage (aka ?kDisableLocalStorage@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableScriptedPrintThrottling (aka >>>> ?kDisableScriptedPrintThrottling@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableSessionStorage (aka ?kDisableSessionStorage@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableSharedWorkers (aka ?kDisableSharedWorkers@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableSpeechInput (aka ?kDisableSpeechInput@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kDisableThreadedAnimation (aka >>>> ?kDisableThreadedAnimation@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableWebAudio (aka ?kDisableWebAudio@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDisableWebKitMediaSource (aka ?kDisableWebKitMediaSource@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kDomAutomationController (aka ?kDomAutomationController@switches >>>> @@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> webrtc::MediaConstraintsInterface::kEchoCancellation (aka >>>> ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) >>>> part 1 contains data export: class std::basic_string<char,struct >>>> std::char_traits<char>,class std::allocator<char> > const >>>> google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal >>>> @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@ >>>> @V?$allocator@D@2@@std@@B) >>>> part 1 contains data export: public: static struct tagVARIANT const >>>> base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant >>>> @win@base@@2UtagVARIANT@@B) >>>> part 1 contains data export: char const * const >>>> switches::kEnableAcceleratedPainting (aka >>>> ?kEnableAcceleratedPainting@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableAccessibilityLogging (aka >>>> ?kEnableAccessibilityLogging@switches@@3QBDB) >>>> part 1 contains data export: char const * const switches::kEnableAdview >>>> (aka ?kEnableAdview@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableAdviewSrcAttribute (aka ?kEnableAdviewSrcAttribute@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableBenchmarking (aka ?kEnableBenchmarking@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableBrowserPluginForAllViewTypes (aka >>>> ?kEnableBrowserPluginForAllViewTypes@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableCompositingForFixedPosition (aka >>>> ?kEnableCompositingForFixedPosition@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kEnableCompositorFrameMessage (aka >>>> ?kEnableCompositorFrameMessage@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableDelegatedRenderer (aka ?kEnableDelegatedRenderer@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableDeviceMotion (aka ?kEnableDeviceMotion@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableExperimentalCanvasFeatures (aka >>>> ?kEnableExperimentalCanvasFeatures@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> autofill::switches::kEnableExperimentalFormFilling (aka >>>> ?kEnableExperimentalFormFilling@switches@autofill@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableExperimentalWebKitFeatures (aka >>>> ?kEnableExperimentalWebKitFeatures@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableFixedLayout (aka ?kEnableFixedLayout@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableGpuBenchmarking (aka ?kEnableGpuBenchmarking@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableHighDpiCompositingForFixedPosition (aka >>>> ?kEnableHighDpiCompositingForFixedPosition@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableIPCFuzzing (aka ?kEnableIPCFuzzing@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableMemoryBenchmarking (aka ?kEnableMemoryBenchmarking@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const switches::kEnableNaCl >>>> (aka ?kEnableNaCl@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableNetBenchmarking (aka ?kEnableNetBenchmarking@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kEnablePartialSwap (aka ?kEnablePartialSwap@switches@cc@ >>>> @3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnablePasswordGeneration (aka ?kEnablePasswordGeneration@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnablePepperTesting (aka ?kEnablePepperTesting@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kEnablePerTilePainting (aka ?kEnablePerTilePainting@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: char const * const switches::kEnablePinch >>>> (aka ?kEnablePinch@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kEnablePinchZoomScrollbars (aka >>>> ?kEnablePinchZoomScrollbars@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const switches::kEnablePnacl >>>> (aka ?kEnablePnacl@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnablePreparsedJsCaching (aka ?kEnablePreparsedJsCaching@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kEnableRightAlignedScheduling (aka >>>> ?kEnableRightAlignedScheduling@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableSkiaBenchmarking (aka ?kEnableSkiaBenchmarking@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableSoftwareCompositingGLAdapter (aka >>>> ?kEnableSoftwareCompositingGLAdapter@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableSpeechSynthesis (aka ?kEnableSpeechSynthesis@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableSpellingAutoCorrect (aka >>>> ?kEnableSpellingAutoCorrect@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableStrictSiteIsolation (aka >>>> ?kEnableStrictSiteIsolation@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableThreadedCompositing (aka >>>> ?kEnableThreadedCompositing@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kEnableTopControlsPositionCalculation (aka >>>> ?kEnableTopControlsPositionCalculation@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableViewport (aka ?kEnableViewport@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableVsyncNotification (aka ?kEnableVsyncNotification@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableWatchdog (aka ?kEnableWatchdog@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kEnableWebMIDI (aka ?kEnableWebMIDI@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kErrorAlreadyNavigated (aka >>>> ?kErrorAlreadyNavigated@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kErrorCannotRemovePartition (aka >>>> ?kErrorCannotRemovePartition@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const net::kErrorDomain (aka >>>> ?kErrorDomain@net@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kErrorInvalidPartition (aka >>>> ?kErrorInvalidPartition@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventClose (aka ?kEventClose@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventConsoleMessage (aka >>>> ?kEventConsoleMessage@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventContentLoad (aka >>>> ?kEventContentLoad@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventExit (aka ?kEventExit@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventLoadAbort (aka >>>> ?kEventLoadAbort@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventLoadCommit (aka >>>> ?kEventLoadCommit@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventLoadRedirect (aka >>>> ?kEventLoadRedirect@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventLoadStart (aka >>>> ?kEventLoadStart@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventLoadStop (aka ?kEventLoadStop@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventNewWindow (aka >>>> ?kEventNewWindow@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventRequestPermission (aka >>>> ?kEventRequestPermission@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventResponsive (aka >>>> ?kEventResponsive@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventSizeChanged (aka >>>> ?kEventSizeChanged@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kEventUnresponsive (aka >>>> ?kEventUnresponsive@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kExtensionInvalidRequestURL (aka ?kExtensionInvalidRequestURL@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kExtensionProcess (aka ?kExtensionProcess@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kExtensionResourceInvalidRequestURL (aka >>>> ?kExtensionResourceInvalidRequestURL@chrome@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kExtensionResourceScheme (aka ?kExtensionResourceScheme@chrome >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) >>>> part 1 contains data export: public: static int const >>>> ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka >>>> ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) >>>> part 1 contains data export: int const gfx::kFaviconSize (aka >>>> ?kFaviconSize@gfx@@3HB) >>>> part 1 contains data export: char const * const chrome::kFileScheme >>>> (aka ?kFileScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kForceFieldTrials (aka ?kForceFieldTrials@switches@@3QBDB) >>>> part 1 contains data export: char const * const chrome::kFtpScheme (aka >>>> ?kFtpScheme@chrome@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> webrtc::MediaConstraintsInterface::kHighpassFilter (aka >>>> ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) >>>> part 1 contains data export: int const >>>> content::kHistogramSynchronizerReservedSequenceNumber (aka >>>> ?kHistogramSynchronizerReservedSequenceNumber@content@@3HB) >>>> part 1 contains data export: public: static char const * const >>>> LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError >>>> @@2QBDB) >>>> part 1 contains data export: char const * const chrome::kHttpScheme >>>> (aka ?kHttpScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const chrome::kHttpsScheme >>>> (aka ?kHttpsScheme@chrome@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kIfModifiedSince (aka >>>> ?kIfModifiedSince@HttpRequestHeaders@net@@2QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kIfNoneMatch (aka ?kIfNoneMatch@HttpRequestHeaders >>>> @net@@2QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kInProcessPlugins (aka ?kInProcessPlugins@switches@@3QBDB) >>>> part 1 contains data export: int const >>>> content::browser_plugin::kInstanceIDNone (aka >>>> ?kInstanceIDNone@browser_plugin@content@@3HB) >>>> part 1 contains data export: char const * const >>>> switches::kInstantProcess (aka ?kInstantProcess@switches@@3QBDB) >>>> part 1 contains data export: public: static void * >>>> base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ >>>> @2QAXA) >>>> part 1 contains data export: public: static struct >>>> PP_NetAddress_Private const >>>> ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka >>>> ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@ >>>> @2UPP_NetAddress_Private@@B) >>>> part 1 contains data export: char const * const >>>> printing::kIsFirstRequest (aka ?kIsFirstRequest@printing@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kIsTopLevel (aka ?kIsTopLevel@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kJavaScriptFlags (aka ?kJavaScriptFlags@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kJavaScriptScheme (aka ?kJavaScriptScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const switches::kLang (aka >>>> ?kLang@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kLowResolutionContentsScaleFactor (aka >>>> ?kLowResolutionContentsScaleFactor@switches@cc@@3QBDB) >>>> part 1 contains data export: int const >>>> content::kMaxSessionHistoryEntries (aka ?kMaxSessionHistoryEntries@content >>>> @@3HB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kMaxTilesForInterestArea (aka >>>> ?kMaxTilesForInterestArea@switches@cc@@3QBDB) >>>> part 1 contains data export: unsigned int const content::kMaxTitleChars >>>> (aka ?kMaxTitleChars@content@@3IB) >>>> part 1 contains data export: unsigned int const content::kMaxURLChars >>>> (aka ?kMaxURLChars@content@@3IB) >>>> part 1 contains data export: char const * const >>>> switches::kMaxUntiledLayerHeight (aka ?kMaxUntiledLayerHeight@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kMaxUntiledLayerWidth (aka ?kMaxUntiledLayerWidth@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kMaxUnusedResourceMemoryUsagePercentage (aka >>>> ?kMaxUnusedResourceMemoryUsagePercentage@switches@cc@@3QBDB) >>>> part 1 contains data export: double const content::kMaximumZoomFactor >>>> (aka ?kMaximumZoomFactor@content@@3NB) >>>> part 1 contains data export: char const * const >>>> extension_misc::kMediaFileSystemPathPart (aka >>>> ?kMediaFileSystemPathPart@extension_misc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kMemoryMetrics (aka ?kMemoryMetrics@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodBack (aka ?kMethodBack@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodCanGoBack (aka >>>> ?kMethodCanGoBack@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodCanGoForward (aka >>>> ?kMethodCanGoForward@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodForward (aka ?kMethodForward@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodGetProcessId (aka >>>> ?kMethodGetProcessId@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodGetRouteId (aka >>>> ?kMethodGetRouteId@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodGo (aka ?kMethodGo@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodInternalAttachWindowTo (aka >>>> ?kMethodInternalAttachWindowTo@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodInternalPersistObject (aka >>>> ?kMethodInternalPersistObject@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodInternalSetPermission (aka >>>> ?kMethodInternalSetPermission@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodReload (aka ?kMethodReload@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodStop (aka ?kMethodStop@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kMethodTerminate (aka >>>> ?kMethodTerminate@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard >>>> @ui@@2QBDB) >>>> part 1 contains data export: public: static char const * const >>>> ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) >>>> part 1 contains data export: public: static char const * const >>>> ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) >>>> part 1 contains data export: public: static char const * const >>>> ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@ >>>> @2QBDB) >>>> part 1 contains data export: double const content::kMinimumZoomFactor >>>> (aka ?kMinimumZoomFactor@content@@3NB) >>>> part 1 contains data export: public: static char const * const >>>> chrome::ChromeContentClient::kNaClPluginName (aka >>>> ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kNewHeight (aka ?kNewHeight@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kNewURL (aka ?kNewURL@browser_plugin@content@ >>>> @3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kNewWidth (aka ?kNewWidth@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: public: static int const >>>> content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@ >>>> @2HB) >>>> part 1 contains data export: char const * const >>>> switches::kNoJsRandomness (aka ?kNoJsRandomness@switches@@3QBDB) >>>> part 1 contains data export: char const * const switches::kNoSandbox >>>> (aka ?kNoSandbox@switches@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> webrtc::MediaConstraintsInterface::kNoiseSuppression (aka >>>> ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kNumRasterThreads (aka ?kNumRasterThreads@switches@cc@ >>>> @3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kOldHeight (aka ?kOldHeight@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kOldURL (aka ?kOldURL@browser_plugin@content@ >>>> @3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kOldWidth (aka ?kOldWidth@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits >>>> (aka ?kPPIdTypeBits@ppapi@@3IB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPermission (aka ?kPermission@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPermissionTypeDownload (aka >>>> ?kPermissionTypeDownload@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPermissionTypeGeolocation (aka >>>> ?kPermissionTypeGeolocation@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPermissionTypeMedia (aka >>>> ?kPermissionTypeMedia@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPermissionTypeNewWindow (aka >>>> ?kPermissionTypeNewWindow@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPermissionTypePointerLock (aka >>>> ?kPermissionTypePointerLock@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kPersistPrefix (aka ?kPersistPrefix@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extension_misc::kPlatformAppLaunchHistogram (aka >>>> ?kPlatformAppLaunchHistogram@extension_misc@@3QBDB) >>>> part 1 contains data export: char const * const switches::kPlaybackMode >>>> (aka ?kPlaybackMode@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kPreviewRequestID (aka ?kPreviewRequestID@printing@@3QBDB) >>>> part 1 contains data export: char const * const printing::kPreviewUIID >>>> (aka ?kPreviewUIID@printing@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kProcessId (aka ?kProcessId@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> net::HttpRequestHeaders::kRange (aka ?kRange@HttpRequestHeaders@net@ >>>> @2QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kReason (aka ?kReason@browser_plugin@content@ >>>> @3QBDB) >>>> part 1 contains data export: char const * const switches::kRecordMode >>>> (aka ?kRecordMode@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kRendererAssertTest (aka ?kRendererAssertTest@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kRendererPrintPreview (aka ?kRendererPrintPreview@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kRendererStartupDialog (aka ?kRendererStartupDialog@switches >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kRequestId (aka ?kRequestId@browser_plugin >>>> @content@@3QBDB) >>>> part 1 contains data export: unsigned int const >>>> autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill >>>> @@3IB) >>>> part 1 contains data export: public: static wchar_t const * const >>>> base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingFitToPageEnabled (aka ?kSettingFitToPageEnabled@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingGenerateDraftData (aka ?kSettingGenerateDraftData@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingHeaderFooterDate (aka ?kSettingHeaderFooterDate@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingHeaderFooterEnabled (aka >>>> ?kSettingHeaderFooterEnabled@printing@@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingHeaderFooterTitle (aka ?kSettingHeaderFooterTitle@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingHeaderFooterURL (aka ?kSettingHeaderFooterURL@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingMarginsType (aka ?kSettingMarginsType@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingPreviewModifiable (aka ?kSettingPreviewModifiable@printing >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> printing::kSettingPrintToPDF (aka ?kSettingPrintToPDF@printing@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowCompositedLayerBorders (aka >>>> ?kShowCompositedLayerBorders@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowCompositedLayerTree (aka >>>> ?kShowCompositedLayerTree@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowFPSCounter (aka ?kShowFPSCounter@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowNonOccludingRects (aka ?kShowNonOccludingRects@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowOccludingRects (aka ?kShowOccludingRects@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kShowPaintRects (aka ?kShowPaintRects@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowPropertyChangedRects (aka >>>> ?kShowPropertyChangedRects@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowReplicaScreenSpaceRects (aka >>>> ?kShowReplicaScreenSpaceRects@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowScreenSpaceRects (aka ?kShowScreenSpaceRects@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kShowSurfaceDamageRects (aka ?kShowSurfaceDamageRects@switches >>>> @cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kSigninProcess (aka ?kSigninProcess@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kSingleProcess (aka ?kSingleProcess@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kSitePerProcess (aka ?kSitePerProcess@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kSlowDownRasterScaleFactor (aka >>>> ?kSlowDownRasterScaleFactor@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kStrictLayerPropertyChangeChecking (aka >>>> ?kStrictLayerPropertyChangeChecking@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kSwappedOutScheme (aka ?kSwappedOutScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const content::kSwappedOutURL >>>> (aka ?kSwappedOutURL@content@@3QBDB) >>>> part 1 contains data export: char const * const switches::kTestSandbox >>>> (aka ?kTestSandbox@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kTopControlsHeight (aka ?kTopControlsHeight@switches@cc@ >>>> @3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kTopControlsHideThreshold (aka >>>> ?kTopControlsHideThreshold@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kTopControlsShowThreshold (aka >>>> ?kTopControlsShowThreshold@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> cc::switches::kTraceOverdraw (aka ?kTraceOverdraw@switches@cc@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::browser_plugin::kURL (aka ?kURL@browser_plugin@content@@3QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kUnknownLanguageCode (aka ?kUnknownLanguageCode@chrome@@3QBDB) >>>> part 1 contains data export: char const * const >>>> content::kUnreachableWebDataURL (aka ?kUnreachableWebDataURL@content >>>> @@3QBDB) >>>> part 1 contains data export: public: static char const * const >>>> webrtc::MediaConstraintsInterface::kValueFalse (aka >>>> ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) >>>> part 1 contains data export: char const * const >>>> chrome::kViewSourceScheme (aka ?kViewSourceScheme@chrome@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeAll (aka ?kViewTypeAll@extensions@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeAppShell (aka ?kViewTypeAppShell@extensions >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeBackgroundPage (aka ?kViewTypeBackgroundPage@extensions >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeExtensionDialog (aka >>>> ?kViewTypeExtensionDialog@extensions@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeInfobar (aka ?kViewTypeInfobar@extensions@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeNotification (aka ?kViewTypeNotification@extensions >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypePanel (aka ?kViewTypePanel@extensions@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypePopup (aka ?kViewTypePopup@extensions@@3QBDB) >>>> part 1 contains data export: char const * const >>>> extensions::kViewTypeTabContents (aka ?kViewTypeTabContents@extensions >>>> @@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kWaitForDebugger (aka ?kWaitForDebugger@switches@@3QBDB) >>>> part 1 contains data export: char const * const >>>> switches::kWebCoreLogChannels (aka ?kWebCoreLogChannels@switches >>>> @@3QBDB) >>>> part 1 contains data export: wchar_t const * const kWhitespaceUTF16 >>>> (aka ?kWhitespaceUTF16@@3QB_WB) >>>> part 1 contains data export: wchar_t const * const kWhitespaceWide (aka >>>> ?kWhitespaceWide@@3QB_WB) >>>> part 1 contains data export: private: static class ppapi::PpapiGlobals >>>> * ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals >>>> @ppapi@@0PAV12@A) >>>> >>>> >>>> >>>> On Fri, May 17, 2013 at 9:20 PM, <scottmg@chromium.org> wrote: >>>> >>>>> Reviewers: cpu, ananta, >>>>> >>>>> Description: >>>>> add DATA declarations to split_link .def files >>>>> >>>>> And report error when they're added so they can be fixed. >>>>> >>>>> R=cpu@chromium.org, ananta@chromium.org >>>>> BUG=237249 >>>>> >>>>> Please review this at https://codereview.chromium.**org/15310002/<https://codereview.chromium.org/1... >>>>> >>>>> SVN Base: svn://svn.chromium.org/chrome/**trunk/src<http://svn.chromium.org/chrome/trunk/src> >>>>> >>>>> Affected files: >>>>> M tools/win/split_link/split_**link.py >>>>> >>>>> >>>>> Index: tools/win/split_link/split_**link.py >>>>> diff --git a/tools/win/split_link/split_**link.py >>>>> b/tools/win/split_link/split_**link.py >>>>> index 2b035c5418b2a70389ee903fb30820**d3a1c4d469..** >>>>> 7598df4e3c2f0f80419396c0db6f27**ae438fea2f 100644 >>>>> --- a/tools/win/split_link/split_**link.py >>>>> +++ b/tools/win/split_link/split_**link.py >>>>> @@ -179,6 +179,29 @@ def RunLinker(flags, index, inputs, phase): >>>>> return stdout, popen.returncode, output_name >>>>> >>>>> >>>>> +def Unmangle(export): >>>>> + "Returns the human-presentable name of a mangled symbol.""" >>>>> + # Use dbghelp.dll to demangle the name. >>>>> + # TODO(scottmg): Perhaps a simple cache? Seems pretty fast though. >>>>> + UnDecorateSymbolName = ctypes.windll.dbghelp.**UnDecorateSymbolName >>>>> + buffer_size = 2048 >>>>> + output_string = ctypes.create_string_buffer(**buffer_size) >>>>> + if not UnDecorateSymbolName( >>>>> + export, ctypes.byref(output_string), buffer_size, 0): >>>>> + raise ctypes.WinError() >>>>> + return output_string.value >>>>> + >>>>> + >>>>> +def IsDataDefinition(export): >>>>> + """Determines if a given name is data rather than a function. >>>>> Always returns >>>>> + False for C-style (as opposed to C++-style names).""" >>>>> + if export[0] != '?': >>>>> + return False >>>>> + >>>>> + # If it contains a '(' we assume it's a function. >>>>> + return '(' not in Unmangle(export) >>>>> + >>>>> + >>>>> def GenerateDefFiles(unresolved_**by_part): >>>>> """Given a list of unresolved externals, generates a .def file that >>>>> will >>>>> cause all those symbols to be exported.""" >>>>> @@ -192,7 +215,10 @@ def GenerateDefFiles(unresolved_**by_part): >>>>> for j, part in enumerate(unresolved_by_part): >>>>> if i == j: >>>>> continue >>>>> - print >> f, '\n'.join(' ' + export for export in part) >>>>> + is_data = [' DATA' if IsDataDefinition(export) else '' >>>>> + for export in part] >>>>> + print >> f, '\n'.join(' ' + export + data >>>>> + for export, data in zip(part, is_data)) >>>>> deffiles.append(deffile) >>>>> return deffiles >>>>> >>>>> @@ -267,17 +293,31 @@ def main(): >>>>> import_libs = [None] * num_parts >>>>> deffiles = [None] * num_parts >>>>> >>>>> + data_exports = 0 >>>>> for i in range(5): >>>>> Log('--- starting pass %d' % i) >>>>> ok, dlls, unresolved_by_part = AttemptLink( >>>>> flags, inputs_by_part, unresolved_by_part, deffiles, >>>>> import_libs) >>>>> if ok: >>>>> break >>>>> + data_exports = 0 >>>>> + for i, part in enumerate(unresolved_by_part): >>>>> + for export in part: >>>>> + if IsDataDefinition(export): >>>>> + print 'part %d contains data export: %s (aka %s)' % ( >>>>> + i, Unmangle(export), export) >>>>> + data_exports += 1 >>>>> deffiles = GenerateDefFiles(unresolved_**by_part) >>>>> import_libs = BuildImportLibs(flags, inputs_by_part, deffiles) >>>>> else: >>>>> return 1 >>>>> >>>>> + if data_exports: >>>>> + print 'Data exports found, see report above.' >>>>> + print('These cannot be exported, and must be either duplicated to >>>>> the ' >>>>> + 'target DLL, or wrapped in a function.') >>>>> + return 1 >>>>> + >>>>> mt_exe = GetMtPath() >>>>> for i, dll in enumerate(dlls): >>>>> Log('embedding manifest in %s' % dll) >>>>> >>>>> >>>>> >>>> >>> >> >
Down to 50 remaining at patch set #6. There might be a handful more that can be handled this way, but most of the rest will probably need a bit of code surgery, at least to pull the constants out into separate files. Should be pretty simple CLs, except possibly for a few in third_party. Current list below: part 0 contains data export: wchar_t const * const appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache @@3QB_WB) part 0 contains data export: wchar_t const * const webkit_database::kDatabaseDirectoryName (aka ?kDatabaseDirectoryName@webkit_database@@3QB_WB) part 0 contains data export: public: static char const * const media::AudioManagerBase::kDefaultDeviceId (aka ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) part 0 contains data export: char const * const fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi@@3QBDB) part 0 contains data export: wchar_t const * const webkit_database::kTrackerDatabaseFileName (aka ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) part 1 contains data export: private: static class content::ChildProcess * content::ChildProcess::child_process_ (aka ?child_process_@ChildProcess @content@@0PAV12@A) part 1 contains data export: unsigned int const gMask_00FF00FF (aka ?gMask_00FF00FF@@3IB) part 1 contains data export: private: static unsigned int const * const SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) part 1 contains data export: enum logging::DcheckState logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1@A) part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@@3HA) part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@@3HA) part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@@3HA) part 1 contains data export: private: static class base::StatsTable * base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ @0PAV12@A) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kAutoGainControl (aka ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: char const * const extension_manifest_errors::kCannotAccessPage (aka ?kCannotAccessPage@extension_manifest_errors@@3QBDB) part 1 contains data export: char const * const base::kCodepageUTF8 (aka ?kCodepageUTF8@base@@3QBDB) part 1 contains data export: public: static wchar_t const * const base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath@base@ @2QB_WB) part 1 contains data export: public: static char const * const base::debug::CategoryFilter::kDefaultCategoryFilterString (aka ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kEchoCancellation (aka ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@ @std@@B) part 1 contains data export: public: static struct tagVARIANT const base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant @win@base@@2UtagVARIANT@@B) part 1 contains data export: char const * const net::kErrorDomain (aka ?kErrorDomain@net@@3QBDB) part 1 contains data export: char const * const extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) part 1 contains data export: public: static int const ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) part 1 contains data export: int const gfx::kFaviconSize (aka ?kFaviconSize@gfx@@3HB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kHighpassFilter (aka ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: public: static char const * const LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError @@2QBDB) part 1 contains data export: public: static void * base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ @2QAXA) part 1 contains data export: public: static struct PP_NetAddress_Private const ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@@2UPP_NetAddress_Private@@B) part 1 contains data export: private: static int content::WebContentsUserData<class SessionTabHelper>::kLocatorKey (aka ?kLocatorKey@?$WebContentsUserData@VSessionTabHelper@@@content@@0HA) part 1 contains data export: private: static int content::WebContentsUserData<class extensions::TabHelper>::kLocatorKey (aka ?kLocatorKey@?$WebContentsUserData@VTabHelper@extensions@@@content@@0HA) part 1 contains data export: char const * const content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content@@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content @@3QBDB) part 1 contains data export: char const * const content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content@@3QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard@ui@ @2QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@@2QBDB) part 1 contains data export: public: static char const * const chrome::ChromeContentClient::kNaClPluginName (aka ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) part 1 contains data export: public: static int const content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@@2HB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kNoiseSuppression (aka ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits (aka ?kPPIdTypeBits@ppapi@@3IB) part 1 contains data export: unsigned int const autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill @@3IB) part 1 contains data export: public: static wchar_t const * const base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kValueFalse (aka ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) part 1 contains data export: char const * const switches::kWaitForDebugger (aka ?kWaitForDebugger@switches@@3QBDB) part 1 contains data export: wchar_t const * const kWhitespaceUTF16 (aka ?kWhitespaceUTF16@@3QB_WB) part 1 contains data export: wchar_t const * const kWhitespaceWide (aka ?kWhitespaceWide@@3QB_WB) part 1 contains data export: private: static class ppapi::PpapiGlobals * ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals@ppapi@ @0PAV12@A) On Sat, May 18, 2013 at 10:42 PM, Scott Graham <scottmg@chromium.org> wrote: > This seems to work pretty well! > > I haven't found all the necessary _switches, _constants, etc. files yet, > but with the ps #5, it went from 315 data exports down to 84. Going through > the list, I think 40-50 can probably be handled in the same way as long as > they're not too tangled into other code. > > This also doesn't include Carlos' code changes to wrap some of the > stickier (non-const) data in functions, so with both of those we should be > getting very close. > > > On Sat, May 18, 2013 at 9:58 PM, Scott Graham <scottmg@chromium.org>wrote: > >> Alright, continuing to talk to myself, I noticed that a lot of the >> constants are either already split out into a blah_constants.cc or a >> blah_switches.cc. >> >> So, the ability to link a .obj from within a .lib seems useful, so >> split_link can do that now. >> >> >> On Sat, May 18, 2013 at 7:43 PM, Scott Graham <scottmg@chromium.org>wrote: >> >>> Some more craziness, const variables don't export with >>> __declspec(dllexport) or a .def file. >>> >>> e.g. these do not show up in the DLL exports. >>> >>> __declspec(dllexport) const char* const kSomeConstant = "stuffy"; >>> __declspec(dllexport) const int kSomeIntConstant = 34343; >>> >>> >>> Adding an extern declaration makes it work, but obviously we don't want >>> to have to do that. These do export: >>> >>> extern __declspec(dllexport) const char* const kSomeConstant; >>> __declspec(dllexport) const char* const kSomeConstant = "stuffy"; >>> extern __declspec(dllexport) const int kSomeIntConstant; >>> __declspec(dllexport) const int kSomeIntConstant = 34343; >>> >>> So... yeah. Not too important, but could cause extra confusion. >>> >>> >>> >>> On Sat, May 18, 2013 at 7:26 PM, Scott Graham <scottmg@chromium.org>wrote: >>> >>>> Another slightly crazy idea that might work for the constants: have the >>>> split linker find the value of those symbols in the other DLL, generate a C >>>> file with the contents, and then link that into the other side. >>>> >>>> I'm not sure how easy it is to get the value though. >>>> >>>> >>>> On Fri, May 17, 2013 at 9:25 PM, Scott Graham <scottmg@chromium.org>wrote: >>>> >>>>> Here's the current list: >>>>> >>>>> After https://codereview.chromium.org/15403002/ (almost?) all of them >>>>> are just int or string constants. If we can split just those constants out >>>>> in to separate .cc files (and ideally separate gyp targets/.libs) then we >>>>> can just put them in both sides in here: >>>>> https://code.google.com/p/chromium/codesearch#chromium/src/build/split_link_p... >>>>> >>>>> If it's too messy to make new targets for the constants files, I could >>>>> also make split_link crack .lib files and put particular .obj files in both >>>>> sides, so then we'd only have to break them out into a file, but not mess >>>>> with gyp too much. >>>>> >>>>> part 0 contains data export: wchar_t const * const >>>>> appcache::kAppCacheDatabaseName (aka ?kAppCacheDatabaseName@appcache >>>>> @@3QB_WB) >>>>> part 0 contains data export: char const * const >>>>> switches::kAudioBufferSize (aka ?kAudioBufferSize@switches@@3QBDB) >>>>> part 0 contains data export: int const fileapi::kCreateFilePermissions >>>>> (aka ?kCreateFilePermissions@fileapi@@3HB) >>>>> part 0 contains data export: wchar_t const * const >>>>> webkit_database::kDatabaseDirectoryName (aka >>>>> ?kDatabaseDirectoryName@webkit_database@@3QB_WB) >>>>> part 0 contains data export: char const * const >>>>> switches::kDebugPluginLoading (aka ?kDebugPluginLoading@switches >>>>> @@3QBDB) >>>>> part 0 contains data export: public: static char const * const >>>>> media::AudioManagerBase::kDefaultDeviceId (aka >>>>> ?kDefaultDeviceId@AudioManagerBase@media@@2QBDB) >>>>> part 0 contains data export: char const * const >>>>> switches::kDisableEncryptedMedia (aka ?kDisableEncryptedMedia@switches >>>>> @@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> switches::kDisablePepper3d (aka ?kDisablePepper3d@switches@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> switches::kEnableEac3Playback (aka ?kEnableEac3Playback@switches >>>>> @@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> switches::kEnableOpusPlayback (aka ?kEnableOpusPlayback@switches >>>>> @@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> switches::kEnableVp8AlphaPlayback (aka ?kEnableVp8AlphaPlayback@switches >>>>> @@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> switches::kEnableVp9Playback (aka ?kEnableVp9Playback@switches@@3QBDB) >>>>> part 0 contains data export: char const * const kFlashPluginName (aka >>>>> ?kFlashPluginName@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> kFlashPluginSplDescription (aka ?kFlashPluginSplDescription@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> kFlashPluginSplExtension (aka ?kFlashPluginSplExtension@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> kFlashPluginSplMimeType (aka ?kFlashPluginSplMimeType@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> kFlashPluginSwfDescription (aka ?kFlashPluginSwfDescription@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> kFlashPluginSwfExtension (aka ?kFlashPluginSwfExtension@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> kFlashPluginSwfMimeType (aka ?kFlashPluginSwfMimeType@@3QBDB) >>>>> part 0 contains data export: char const * const >>>>> fileapi::kMediaTaskRunnerName (aka ?kMediaTaskRunnerName@fileapi >>>>> @@3QBDB) >>>>> part 0 contains data export: wchar_t const * const >>>>> webkit::npapi::kNewWMPPlugin (aka ?kNewWMPPlugin@npapi@webkit@@3QB_WB) >>>>> part 0 contains data export: int const fileapi::kOpenFilePermissions >>>>> (aka ?kOpenFilePermissions@fileapi@@3HB) >>>>> part 0 contains data export: wchar_t const * const >>>>> webkit::npapi::kPaintMessageName (aka ?kPaintMessageName@npapi@webkit@ >>>>> @3QB_WB) >>>>> part 0 contains data export: char const * const >>>>> switches::kPpapiFlashArgs (aka ?kPpapiFlashArgs@switches@@3QBDB) >>>>> part 0 contains data export: int const fileapi::kReadFilePermissions >>>>> (aka ?kReadFilePermissions@fileapi@@3HB) >>>>> part 0 contains data export: wchar_t const * const >>>>> webkit::npapi::kRegistryMozillaPlugins (aka ?kRegistryMozillaPlugins@npapi >>>>> @webkit@@3QB_WB) >>>>> part 0 contains data export: wchar_t const * const >>>>> webkit_database::kTrackerDatabaseFileName (aka >>>>> ?kTrackerDatabaseFileName@webkit_database@@3QB_WB) >>>>> part 0 contains data export: char const * const >>>>> switches::kVideoThreads (aka ?kVideoThreads@switches@@3QBDB) >>>>> part 0 contains data export: wchar_t const * const >>>>> webkit::npapi::kWrapperNativeWindowClassName (aka >>>>> ?kWrapperNativeWindowClassName@npapi@webkit@@3QB_WB) >>>>> part 0 contains data export: int const fileapi::kWriteFilePermissions >>>>> (aka ?kWriteFilePermissions@fileapi@@3HB) >>>>> part 1 contains data export: int const printing::FIRST_PAGE_INDEX (aka >>>>> ?FIRST_PAGE_INDEX@printing@@3HB) >>>>> part 1 contains data export: private: static class >>>>> content::ChildProcess * content::ChildProcess::child_process_ (aka >>>>> ?child_process_@ChildProcess@content@@0PAV12@A) >>>>> part 1 contains data export: unsigned int const gMask_00FF00FF (aka >>>>> ?gMask_00FF00FF@@3IB) >>>>> part 1 contains data export: private: static unsigned int const * >>>>> const SkUnPreMultiply::gTable (aka ?gTable@SkUnPreMultiply@@0QBIB) >>>>> part 1 contains data export: enum logging::DcheckState >>>>> logging::g_dcheck_state (aka ?g_dcheck_state@logging@@3W4DcheckState@1 >>>>> @A) >>>>> part 1 contains data export: int g_trace_state0 (aka ?g_trace_state0@ >>>>> @3HA) >>>>> part 1 contains data export: int g_trace_state1 (aka ?g_trace_state1@ >>>>> @3HA) >>>>> part 1 contains data export: int g_trace_state2 (aka ?g_trace_state2@ >>>>> @3HA) >>>>> part 1 contains data export: private: static class base::StatsTable * >>>>> base::StatsTable::global_table_ (aka ?global_table_@StatsTable@base@ >>>>> @0PAV12@A) >>>>> part 1 contains data export: char const * const >>>>> content::kAboutBlankURL (aka ?kAboutBlankURL@content@@3QBDB) >>>>> part 1 contains data export: char const * const chrome::kAboutScheme >>>>> (aka ?kAboutScheme@chrome@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kAcceptEncoding (aka >>>>> ?kAcceptEncoding@HttpRequestHeaders@net@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> extension_misc::kAppLaunchHistogram (aka ?kAppLaunchHistogram@extension_misc >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extension_misc::kAppStateCannotRun (aka ?kAppStateCannotRun@extension_misc >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extension_misc::kAppStateReadyToRun (aka ?kAppStateReadyToRun@extension_misc >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extension_misc::kAppStateRunning (aka ?kAppStateRunning@extension_misc >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kAppsCheckoutURL (aka ?kAppsCheckoutURL@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeAutoSize (aka >>>>> ?kAttributeAutoSize@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeContentWindow (aka >>>>> ?kAttributeContentWindow@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeMaxHeight (aka >>>>> ?kAttributeMaxHeight@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeMaxWidth (aka >>>>> ?kAttributeMaxWidth@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeMinHeight (aka >>>>> ?kAttributeMinHeight@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeMinWidth (aka >>>>> ?kAttributeMinWidth@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeName (aka ?kAttributeName@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributePartition (aka >>>>> ?kAttributePartition@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kAttributeSrc (aka ?kAttributeSrc@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> webrtc::MediaConstraintsInterface::kAutoGainControl (aka >>>>> ?kAutoGainControl@MediaConstraintsInterface@webrtc@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kBackgroundColorInsteadOfCheckerboard (aka >>>>> ?kBackgroundColorInsteadOfCheckerboard@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kBrowserPluginMimeType (aka ?kBrowserPluginMimeType@content >>>>> @@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kCacheControl (aka >>>>> ?kCacheControl@HttpRequestHeaders@net@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> extension_manifest_errors::kCannotAccessPage (aka >>>>> ?kCannotAccessPage@extension_manifest_errors@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeDevToolsScheme (aka ?kChromeDevToolsScheme@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const switches::kChromeFrame >>>>> (aka ?kChromeFrame@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeInternalScheme (aka ?kChromeInternalScheme@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeSearchMostVisitedUrl (aka ?kChromeSearchMostVisitedUrl@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeSearchScheme (aka ?kChromeSearchScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeSearchSuggestionUrl (aka ?kChromeSearchSuggestionUrl@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kChromeUICrashURL (aka ?kChromeUICrashURL@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeUIExtensionIconHost (aka ?kChromeUIExtensionIconHost@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kChromeUIHangURL (aka ?kChromeUIHangURL@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kChromeUIKillURL (aka ?kChromeUIKillURL@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kChromeUIScheme (aka ?kChromeUIScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kChromeUIShorthangURL (aka ?kChromeUIShorthangURL@content >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const base::kCodepageUTF8 >>>>> (aka ?kCodepageUTF8@base@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kCompositeToMailbox (aka ?kCompositeToMailbox@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kContentLength (aka >>>>> ?kContentLength@HttpRequestHeaders@net@@2QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kContentType (aka ?kContentType@HttpRequestHeaders >>>>> @net@@2QBDB) >>>>> part 1 contains data export: public: static wchar_t const * const >>>>> base::FilePath::kCurrentDirectory (aka ?kCurrentDirectory@FilePath >>>>> @base@@2QB_WB) >>>>> part 1 contains data export: char const * const chrome::kDataScheme >>>>> (aka ?kDataScheme@chrome@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> base::debug::CategoryFilter::kDefaultCategoryFilterString (aka >>>>> ?kDefaultCategoryFilterString@CategoryFilter@debug@base@@2PBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDefaultTileHeight (aka ?kDefaultTileHeight@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDefaultTileWidth (aka ?kDefaultTileWidth@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisable3DAPIs (aka ?kDisable3DAPIs@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableAcceleratedCompositing (aka >>>>> ?kDisableAcceleratedCompositing@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableAcceleratedVideoDecode (aka >>>>> ?kDisableAcceleratedVideoDecode@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableApplicationCache (aka ?kDisableApplicationCache@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableAudio (aka ?kDisableAudio@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableClientSidePhishingDetection (aka >>>>> ?kDisableClientSidePhishingDetection@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kDisableColorEstimator (aka ?kDisableColorEstimator@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableCompositingForFixedPosition (aka >>>>> ?kDisableCompositingForFixedPosition@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableDatabases (aka ?kDisableDatabases@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableDesktopNotifications (aka >>>>> ?kDisableDesktopNotifications@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableDeviceOrientation (aka ?kDisableDeviceOrientation@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableExtensionsResourceWhitelist (aka >>>>> ?kDisableExtensionsResourceWhitelist@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableFileSystem (aka ?kDisableFileSystem@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableFlashFullscreen3d (aka ?kDisableFlashFullscreen3d@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableFullScreen (aka ?kDisableFullScreen@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableGeolocation (aka ?kDisableGeolocation@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableGpuVsync (aka ?kDisableGpuVsync@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableHTMLNotifications (aka ?kDisableHTMLNotifications@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableHistogramCustomizer (aka >>>>> ?kDisableHistogramCustomizer@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> autofill::switches::kDisableInteractiveAutocomplete (aka >>>>> ?kDisableInteractiveAutocomplete@switches@autofill@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableJavaScriptI18NAPI (aka ?kDisableJavaScriptI18NAPI@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableLocalStorage (aka ?kDisableLocalStorage@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableScriptedPrintThrottling (aka >>>>> ?kDisableScriptedPrintThrottling@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableSessionStorage (aka ?kDisableSessionStorage@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableSharedWorkers (aka ?kDisableSharedWorkers@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableSpeechInput (aka ?kDisableSpeechInput@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kDisableThreadedAnimation (aka >>>>> ?kDisableThreadedAnimation@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableWebAudio (aka ?kDisableWebAudio@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDisableWebKitMediaSource (aka ?kDisableWebKitMediaSource@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kDomAutomationController (aka ?kDomAutomationController@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> webrtc::MediaConstraintsInterface::kEchoCancellation (aka >>>>> ?kEchoCancellation@MediaConstraintsInterface@webrtc@@2QBDB) >>>>> part 1 contains data export: class std::basic_string<char,struct >>>>> std::char_traits<char>,class std::allocator<char> > const >>>>> google::protobuf::internal::kEmptyString (aka ?kEmptyString@internal >>>>> @protobuf@google@@3V?$basic_string@DU?$char_traits@D@std@ >>>>> @V?$allocator@D@2@@std@@B) >>>>> part 1 contains data export: public: static struct tagVARIANT const >>>>> base::win::ScopedVariant::kEmptyVariant (aka ?kEmptyVariant@ScopedVariant >>>>> @win@base@@2UtagVARIANT@@B) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableAcceleratedPainting (aka >>>>> ?kEnableAcceleratedPainting@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableAccessibilityLogging (aka >>>>> ?kEnableAccessibilityLogging@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableAdview (aka ?kEnableAdview@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableAdviewSrcAttribute (aka ?kEnableAdviewSrcAttribute@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableBenchmarking (aka ?kEnableBenchmarking@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableBrowserPluginForAllViewTypes (aka >>>>> ?kEnableBrowserPluginForAllViewTypes@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableCompositingForFixedPosition (aka >>>>> ?kEnableCompositingForFixedPosition@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kEnableCompositorFrameMessage (aka >>>>> ?kEnableCompositorFrameMessage@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableDelegatedRenderer (aka ?kEnableDelegatedRenderer@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableDeviceMotion (aka ?kEnableDeviceMotion@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableExperimentalCanvasFeatures (aka >>>>> ?kEnableExperimentalCanvasFeatures@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> autofill::switches::kEnableExperimentalFormFilling (aka >>>>> ?kEnableExperimentalFormFilling@switches@autofill@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableExperimentalWebKitFeatures (aka >>>>> ?kEnableExperimentalWebKitFeatures@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableFixedLayout (aka ?kEnableFixedLayout@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableGpuBenchmarking (aka ?kEnableGpuBenchmarking@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableHighDpiCompositingForFixedPosition (aka >>>>> ?kEnableHighDpiCompositingForFixedPosition@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableIPCFuzzing (aka ?kEnableIPCFuzzing@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableMemoryBenchmarking (aka ?kEnableMemoryBenchmarking@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const switches::kEnableNaCl >>>>> (aka ?kEnableNaCl@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableNetBenchmarking (aka ?kEnableNetBenchmarking@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kEnablePartialSwap (aka ?kEnablePartialSwap@switches@cc@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnablePasswordGeneration (aka ?kEnablePasswordGeneration@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnablePepperTesting (aka ?kEnablePepperTesting@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kEnablePerTilePainting (aka ?kEnablePerTilePainting@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: char const * const switches::kEnablePinch >>>>> (aka ?kEnablePinch@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kEnablePinchZoomScrollbars (aka >>>>> ?kEnablePinchZoomScrollbars@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const switches::kEnablePnacl >>>>> (aka ?kEnablePnacl@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnablePreparsedJsCaching (aka ?kEnablePreparsedJsCaching@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kEnableRightAlignedScheduling (aka >>>>> ?kEnableRightAlignedScheduling@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableSkiaBenchmarking (aka ?kEnableSkiaBenchmarking@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableSoftwareCompositingGLAdapter (aka >>>>> ?kEnableSoftwareCompositingGLAdapter@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableSpeechSynthesis (aka ?kEnableSpeechSynthesis@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableSpellingAutoCorrect (aka >>>>> ?kEnableSpellingAutoCorrect@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableStrictSiteIsolation (aka >>>>> ?kEnableStrictSiteIsolation@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableThreadedCompositing (aka >>>>> ?kEnableThreadedCompositing@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kEnableTopControlsPositionCalculation (aka >>>>> ?kEnableTopControlsPositionCalculation@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableViewport (aka ?kEnableViewport@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableVsyncNotification (aka ?kEnableVsyncNotification@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableWatchdog (aka ?kEnableWatchdog@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kEnableWebMIDI (aka ?kEnableWebMIDI@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kErrorAlreadyNavigated (aka >>>>> ?kErrorAlreadyNavigated@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kErrorCannotRemovePartition (aka >>>>> ?kErrorCannotRemovePartition@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const net::kErrorDomain (aka >>>>> ?kErrorDomain@net@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kErrorInvalidPartition (aka >>>>> ?kErrorInvalidPartition@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventClose (aka ?kEventClose@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventConsoleMessage (aka >>>>> ?kEventConsoleMessage@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventContentLoad (aka >>>>> ?kEventContentLoad@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventExit (aka ?kEventExit@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventLoadAbort (aka >>>>> ?kEventLoadAbort@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventLoadCommit (aka >>>>> ?kEventLoadCommit@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventLoadRedirect (aka >>>>> ?kEventLoadRedirect@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventLoadStart (aka >>>>> ?kEventLoadStart@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventLoadStop (aka ?kEventLoadStop@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventNewWindow (aka >>>>> ?kEventNewWindow@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventRequestPermission (aka >>>>> ?kEventRequestPermission@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventResponsive (aka >>>>> ?kEventResponsive@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventSizeChanged (aka >>>>> ?kEventSizeChanged@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kEventUnresponsive (aka >>>>> ?kEventUnresponsive@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kExtensionInvalidRequestURL (aka ?kExtensionInvalidRequestURL@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kExtensionProcess (aka ?kExtensionProcess@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kExtensionResourceInvalidRequestURL (aka >>>>> ?kExtensionResourceInvalidRequestURL@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kExtensionResourceScheme (aka ?kExtensionResourceScheme@chrome >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kExtensionScheme (aka ?kExtensionScheme@extensions@@3QBDB) >>>>> part 1 contains data export: public: static int const >>>>> ppapi::PPB_Instance_Shared::kExtraCharsForTextInput (aka >>>>> ?kExtraCharsForTextInput@PPB_Instance_Shared@ppapi@@2HB) >>>>> part 1 contains data export: int const gfx::kFaviconSize (aka >>>>> ?kFaviconSize@gfx@@3HB) >>>>> part 1 contains data export: char const * const chrome::kFileScheme >>>>> (aka ?kFileScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kForceFieldTrials (aka ?kForceFieldTrials@switches@@3QBDB) >>>>> part 1 contains data export: char const * const chrome::kFtpScheme >>>>> (aka ?kFtpScheme@chrome@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> webrtc::MediaConstraintsInterface::kHighpassFilter (aka >>>>> ?kHighpassFilter@MediaConstraintsInterface@webrtc@@2QBDB) >>>>> part 1 contains data export: int const >>>>> content::kHistogramSynchronizerReservedSequenceNumber (aka >>>>> ?kHistogramSynchronizerReservedSequenceNumber@content@@3HB) >>>>> part 1 contains data export: public: static char const * const >>>>> LocalizedError::kHttpErrorDomain (aka ?kHttpErrorDomain@LocalizedError >>>>> @@2QBDB) >>>>> part 1 contains data export: char const * const chrome::kHttpScheme >>>>> (aka ?kHttpScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const chrome::kHttpsScheme >>>>> (aka ?kHttpsScheme@chrome@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kIfModifiedSince (aka >>>>> ?kIfModifiedSince@HttpRequestHeaders@net@@2QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kIfNoneMatch (aka ?kIfNoneMatch@HttpRequestHeaders >>>>> @net@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kInProcessPlugins (aka ?kInProcessPlugins@switches@@3QBDB) >>>>> part 1 contains data export: int const >>>>> content::browser_plugin::kInstanceIDNone (aka >>>>> ?kInstanceIDNone@browser_plugin@content@@3HB) >>>>> part 1 contains data export: char const * const >>>>> switches::kInstantProcess (aka ?kInstantProcess@switches@@3QBDB) >>>>> part 1 contains data export: public: static void * >>>>> base::SyncSocket::kInvalidHandle (aka ?kInvalidHandle@SyncSocket@base@ >>>>> @2QAXA) >>>>> part 1 contains data export: public: static struct >>>>> PP_NetAddress_Private const >>>>> ppapi::NetAddressPrivateImpl::kInvalidNetAddress (aka >>>>> ?kInvalidNetAddress@NetAddressPrivateImpl@ppapi@ >>>>> @2UPP_NetAddress_Private@@B) >>>>> part 1 contains data export: char const * const >>>>> printing::kIsFirstRequest (aka ?kIsFirstRequest@printing@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kIsTopLevel (aka ?kIsTopLevel@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kJavaScriptFlags (aka ?kJavaScriptFlags@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kJavaScriptScheme (aka ?kJavaScriptScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const switches::kLang (aka >>>>> ?kLang@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kLowResolutionContentsScaleFactor (aka >>>>> ?kLowResolutionContentsScaleFactor@switches@cc@@3QBDB) >>>>> part 1 contains data export: int const >>>>> content::kMaxSessionHistoryEntries (aka ?kMaxSessionHistoryEntries@content >>>>> @@3HB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kMaxTilesForInterestArea (aka >>>>> ?kMaxTilesForInterestArea@switches@cc@@3QBDB) >>>>> part 1 contains data export: unsigned int const >>>>> content::kMaxTitleChars (aka ?kMaxTitleChars@content@@3IB) >>>>> part 1 contains data export: unsigned int const content::kMaxURLChars >>>>> (aka ?kMaxURLChars@content@@3IB) >>>>> part 1 contains data export: char const * const >>>>> switches::kMaxUntiledLayerHeight (aka ?kMaxUntiledLayerHeight@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kMaxUntiledLayerWidth (aka ?kMaxUntiledLayerWidth@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kMaxUnusedResourceMemoryUsagePercentage (aka >>>>> ?kMaxUnusedResourceMemoryUsagePercentage@switches@cc@@3QBDB) >>>>> part 1 contains data export: double const content::kMaximumZoomFactor >>>>> (aka ?kMaximumZoomFactor@content@@3NB) >>>>> part 1 contains data export: char const * const >>>>> extension_misc::kMediaFileSystemPathPart (aka >>>>> ?kMediaFileSystemPathPart@extension_misc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kMediaStreamSource (aka ?kMediaStreamSource@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kMediaStreamSourceId (aka ?kMediaStreamSourceId@content >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kMediaStreamSourceScreen (aka ?kMediaStreamSourceScreen@content >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kMediaStreamSourceTab (aka ?kMediaStreamSourceTab@content >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kMemoryMetrics (aka ?kMemoryMetrics@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodBack (aka ?kMethodBack@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodCanGoBack (aka >>>>> ?kMethodCanGoBack@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodCanGoForward (aka >>>>> ?kMethodCanGoForward@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodForward (aka ?kMethodForward@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodGetProcessId (aka >>>>> ?kMethodGetProcessId@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodGetRouteId (aka >>>>> ?kMethodGetRouteId@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodGo (aka ?kMethodGo@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodInternalAttachWindowTo (aka >>>>> ?kMethodInternalAttachWindowTo@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodInternalPersistObject (aka >>>>> ?kMethodInternalPersistObject@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodInternalSetPermission (aka >>>>> ?kMethodInternalSetPermission@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodReload (aka ?kMethodReload@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodStop (aka ?kMethodStop@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kMethodTerminate (aka >>>>> ?kMethodTerminate@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> ui::Clipboard::kMimeTypeDownloadURL (aka ?kMimeTypeDownloadURL@Clipboard >>>>> @ui@@2QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> ui::Clipboard::kMimeTypeHTML (aka ?kMimeTypeHTML@Clipboard@ui@@2QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> ui::Clipboard::kMimeTypeText (aka ?kMimeTypeText@Clipboard@ui@@2QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> ui::Clipboard::kMimeTypeURIList (aka ?kMimeTypeURIList@Clipboard@ui@ >>>>> @2QBDB) >>>>> part 1 contains data export: double const content::kMinimumZoomFactor >>>>> (aka ?kMinimumZoomFactor@content@@3NB) >>>>> part 1 contains data export: public: static char const * const >>>>> chrome::ChromeContentClient::kNaClPluginName (aka >>>>> ?kNaClPluginName@ChromeContentClient@chrome@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kNewHeight (aka ?kNewHeight@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kNewURL (aka ?kNewURL@browser_plugin@content@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kNewWidth (aka ?kNewWidth@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: public: static int const >>>>> content::StreamDeviceInfo::kNoId (aka ?kNoId@StreamDeviceInfo@content@ >>>>> @2HB) >>>>> part 1 contains data export: char const * const >>>>> switches::kNoJsRandomness (aka ?kNoJsRandomness@switches@@3QBDB) >>>>> part 1 contains data export: char const * const switches::kNoSandbox >>>>> (aka ?kNoSandbox@switches@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> webrtc::MediaConstraintsInterface::kNoiseSuppression (aka >>>>> ?kNoiseSuppression@MediaConstraintsInterface@webrtc@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kNumRasterThreads (aka ?kNumRasterThreads@switches@cc@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kOldHeight (aka ?kOldHeight@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kOldURL (aka ?kOldURL@browser_plugin@content@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kOldWidth (aka ?kOldWidth@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits >>>>> (aka ?kPPIdTypeBits@ppapi@@3IB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPermission (aka ?kPermission@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPermissionTypeDownload (aka >>>>> ?kPermissionTypeDownload@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPermissionTypeGeolocation (aka >>>>> ?kPermissionTypeGeolocation@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPermissionTypeMedia (aka >>>>> ?kPermissionTypeMedia@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPermissionTypeNewWindow (aka >>>>> ?kPermissionTypeNewWindow@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPermissionTypePointerLock (aka >>>>> ?kPermissionTypePointerLock@browser_plugin@content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kPersistPrefix (aka ?kPersistPrefix@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extension_misc::kPlatformAppLaunchHistogram (aka >>>>> ?kPlatformAppLaunchHistogram@extension_misc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kPlaybackMode (aka ?kPlaybackMode@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kPreviewRequestID (aka ?kPreviewRequestID@printing@@3QBDB) >>>>> part 1 contains data export: char const * const printing::kPreviewUIID >>>>> (aka ?kPreviewUIID@printing@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kProcessId (aka ?kProcessId@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> net::HttpRequestHeaders::kRange (aka ?kRange@HttpRequestHeaders@net@ >>>>> @2QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kReason (aka ?kReason@browser_plugin@content@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const switches::kRecordMode >>>>> (aka ?kRecordMode@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kRendererAssertTest (aka ?kRendererAssertTest@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kRendererPrintPreview (aka ?kRendererPrintPreview@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kRendererStartupDialog (aka ?kRendererStartupDialog@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kRequestId (aka ?kRequestId@browser_plugin >>>>> @content@@3QBDB) >>>>> part 1 contains data export: unsigned int const >>>>> autofill::kRequiredAutofillFields (aka ?kRequiredAutofillFields@autofill >>>>> @@3IB) >>>>> part 1 contains data export: public: static wchar_t const * const >>>>> base::FilePath::kSeparators (aka ?kSeparators@FilePath@base@@2QB_WB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingFitToPageEnabled (aka ?kSettingFitToPageEnabled@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingGenerateDraftData (aka ?kSettingGenerateDraftData@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingHeaderFooterDate (aka ?kSettingHeaderFooterDate@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingHeaderFooterEnabled (aka >>>>> ?kSettingHeaderFooterEnabled@printing@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingHeaderFooterTitle (aka ?kSettingHeaderFooterTitle@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingHeaderFooterURL (aka ?kSettingHeaderFooterURL@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingMarginsType (aka ?kSettingMarginsType@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingPreviewModifiable (aka ?kSettingPreviewModifiable@printing >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> printing::kSettingPrintToPDF (aka ?kSettingPrintToPDF@printing@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowCompositedLayerBorders (aka >>>>> ?kShowCompositedLayerBorders@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowCompositedLayerTree (aka >>>>> ?kShowCompositedLayerTree@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowFPSCounter (aka ?kShowFPSCounter@switches@cc@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowNonOccludingRects (aka ?kShowNonOccludingRects@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowOccludingRects (aka ?kShowOccludingRects@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kShowPaintRects (aka ?kShowPaintRects@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowPropertyChangedRects (aka >>>>> ?kShowPropertyChangedRects@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowReplicaScreenSpaceRects (aka >>>>> ?kShowReplicaScreenSpaceRects@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowScreenSpaceRects (aka ?kShowScreenSpaceRects@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kShowSurfaceDamageRects (aka ?kShowSurfaceDamageRects@switches >>>>> @cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kSigninProcess (aka ?kSigninProcess@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kSingleProcess (aka ?kSingleProcess@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kSitePerProcess (aka ?kSitePerProcess@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kSlowDownRasterScaleFactor (aka >>>>> ?kSlowDownRasterScaleFactor@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kStrictLayerPropertyChangeChecking (aka >>>>> ?kStrictLayerPropertyChangeChecking@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kSwappedOutScheme (aka ?kSwappedOutScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kSwappedOutURL (aka ?kSwappedOutURL@content@@3QBDB) >>>>> part 1 contains data export: char const * const switches::kTestSandbox >>>>> (aka ?kTestSandbox@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kTopControlsHeight (aka ?kTopControlsHeight@switches@cc@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kTopControlsHideThreshold (aka >>>>> ?kTopControlsHideThreshold@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kTopControlsShowThreshold (aka >>>>> ?kTopControlsShowThreshold@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> cc::switches::kTraceOverdraw (aka ?kTraceOverdraw@switches@cc@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::browser_plugin::kURL (aka ?kURL@browser_plugin@content@ >>>>> @3QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kUnknownLanguageCode (aka ?kUnknownLanguageCode@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> content::kUnreachableWebDataURL (aka ?kUnreachableWebDataURL@content >>>>> @@3QBDB) >>>>> part 1 contains data export: public: static char const * const >>>>> webrtc::MediaConstraintsInterface::kValueFalse (aka >>>>> ?kValueFalse@MediaConstraintsInterface@webrtc@@2QBDB) >>>>> part 1 contains data export: char const * const >>>>> chrome::kViewSourceScheme (aka ?kViewSourceScheme@chrome@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeAll (aka ?kViewTypeAll@extensions@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeAppShell (aka ?kViewTypeAppShell@extensions >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeBackgroundPage (aka ?kViewTypeBackgroundPage@extensions >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeExtensionDialog (aka >>>>> ?kViewTypeExtensionDialog@extensions@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeInfobar (aka ?kViewTypeInfobar@extensions@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeNotification (aka ?kViewTypeNotification@extensions >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypePanel (aka ?kViewTypePanel@extensions@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypePopup (aka ?kViewTypePopup@extensions@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> extensions::kViewTypeTabContents (aka ?kViewTypeTabContents@extensions >>>>> @@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kWaitForDebugger (aka ?kWaitForDebugger@switches@@3QBDB) >>>>> part 1 contains data export: char const * const >>>>> switches::kWebCoreLogChannels (aka ?kWebCoreLogChannels@switches >>>>> @@3QBDB) >>>>> part 1 contains data export: wchar_t const * const kWhitespaceUTF16 >>>>> (aka ?kWhitespaceUTF16@@3QB_WB) >>>>> part 1 contains data export: wchar_t const * const kWhitespaceWide >>>>> (aka ?kWhitespaceWide@@3QB_WB) >>>>> part 1 contains data export: private: static class ppapi::PpapiGlobals >>>>> * ppapi::PpapiGlobals::ppapi_globals_ (aka ?ppapi_globals_@PpapiGlobals >>>>> @ppapi@@0PAV12@A) >>>>> >>>>> >>>>> >>>>> On Fri, May 17, 2013 at 9:20 PM, <scottmg@chromium.org> wrote: >>>>> >>>>>> Reviewers: cpu, ananta, >>>>>> >>>>>> Description: >>>>>> add DATA declarations to split_link .def files >>>>>> >>>>>> And report error when they're added so they can be fixed. >>>>>> >>>>>> R=cpu@chromium.org, ananta@chromium.org >>>>>> BUG=237249 >>>>>> >>>>>> Please review this at https://codereview.chromium.**org/15310002/<https://codereview.chromium.org/1... >>>>>> >>>>>> SVN Base: svn://svn.chromium.org/chrome/**trunk/src<http://svn.chromium.org/chrome/trunk/src> >>>>>> >>>>>> Affected files: >>>>>> M tools/win/split_link/split_**link.py >>>>>> >>>>>> >>>>>> Index: tools/win/split_link/split_**link.py >>>>>> diff --git a/tools/win/split_link/split_**link.py >>>>>> b/tools/win/split_link/split_**link.py >>>>>> index 2b035c5418b2a70389ee903fb30820**d3a1c4d469..** >>>>>> 7598df4e3c2f0f80419396c0db6f27**ae438fea2f 100644 >>>>>> --- a/tools/win/split_link/split_**link.py >>>>>> +++ b/tools/win/split_link/split_**link.py >>>>>> @@ -179,6 +179,29 @@ def RunLinker(flags, index, inputs, phase): >>>>>> return stdout, popen.returncode, output_name >>>>>> >>>>>> >>>>>> +def Unmangle(export): >>>>>> + "Returns the human-presentable name of a mangled symbol.""" >>>>>> + # Use dbghelp.dll to demangle the name. >>>>>> + # TODO(scottmg): Perhaps a simple cache? Seems pretty fast though. >>>>>> + UnDecorateSymbolName = ctypes.windll.dbghelp.** >>>>>> UnDecorateSymbolName >>>>>> + buffer_size = 2048 >>>>>> + output_string = ctypes.create_string_buffer(**buffer_size) >>>>>> + if not UnDecorateSymbolName( >>>>>> + export, ctypes.byref(output_string), buffer_size, 0): >>>>>> + raise ctypes.WinError() >>>>>> + return output_string.value >>>>>> + >>>>>> + >>>>>> +def IsDataDefinition(export): >>>>>> + """Determines if a given name is data rather than a function. >>>>>> Always returns >>>>>> + False for C-style (as opposed to C++-style names).""" >>>>>> + if export[0] != '?': >>>>>> + return False >>>>>> + >>>>>> + # If it contains a '(' we assume it's a function. >>>>>> + return '(' not in Unmangle(export) >>>>>> + >>>>>> + >>>>>> def GenerateDefFiles(unresolved_**by_part): >>>>>> """Given a list of unresolved externals, generates a .def file >>>>>> that will >>>>>> cause all those symbols to be exported.""" >>>>>> @@ -192,7 +215,10 @@ def GenerateDefFiles(unresolved_**by_part): >>>>>> for j, part in enumerate(unresolved_by_part): >>>>>> if i == j: >>>>>> continue >>>>>> - print >> f, '\n'.join(' ' + export for export in part) >>>>>> + is_data = [' DATA' if IsDataDefinition(export) else '' >>>>>> + for export in part] >>>>>> + print >> f, '\n'.join(' ' + export + data >>>>>> + for export, data in zip(part, is_data)) >>>>>> deffiles.append(deffile) >>>>>> return deffiles >>>>>> >>>>>> @@ -267,17 +293,31 @@ def main(): >>>>>> import_libs = [None] * num_parts >>>>>> deffiles = [None] * num_parts >>>>>> >>>>>> + data_exports = 0 >>>>>> for i in range(5): >>>>>> Log('--- starting pass %d' % i) >>>>>> ok, dlls, unresolved_by_part = AttemptLink( >>>>>> flags, inputs_by_part, unresolved_by_part, deffiles, >>>>>> import_libs) >>>>>> if ok: >>>>>> break >>>>>> + data_exports = 0 >>>>>> + for i, part in enumerate(unresolved_by_part): >>>>>> + for export in part: >>>>>> + if IsDataDefinition(export): >>>>>> + print 'part %d contains data export: %s (aka %s)' % ( >>>>>> + i, Unmangle(export), export) >>>>>> + data_exports += 1 >>>>>> deffiles = GenerateDefFiles(unresolved_**by_part) >>>>>> import_libs = BuildImportLibs(flags, inputs_by_part, deffiles) >>>>>> else: >>>>>> return 1 >>>>>> >>>>>> + if data_exports: >>>>>> + print 'Data exports found, see report above.' >>>>>> + print('These cannot be exported, and must be either duplicated >>>>>> to the ' >>>>>> + 'target DLL, or wrapped in a function.') >>>>>> + return 1 >>>>>> + >>>>>> mt_exe = GetMtPath() >>>>>> for i, dll in enumerate(dlls): >>>>>> Log('embedding manifest in %s' % dll) >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >
PTAL. With this CL, the number of data exports goes from 315 to this list of 46: part 0 contains data export: wchar_t const * const appcache::kAppCacheDatabaseName part 0 contains data export: wchar_t const * const webkit_database::kDatabaseDirectoryName part 0 contains data export: public: static char const * const media::AudioManagerBase::kDefaultDeviceId part 0 contains data export: char const * const fileapi::kMediaTaskRunnerName part 0 contains data export: wchar_t const * const webkit_database::kTrackerDatabaseFileName part 1 contains data export: private: static class content::ChildProcess * content::ChildProcess::child_process_ part 1 contains data export: unsigned int const gMask_00FF00FF part 1 contains data export: enum logging::DcheckState logging::g_dcheck_state part 1 contains data export: int g_trace_state0 part 1 contains data export: int g_trace_state1 part 1 contains data export: int g_trace_state2 part 1 contains data export: private: static class base::StatsTable * base::StatsTable::global_table_ part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kAutoGainControl part 1 contains data export: char const * const extension_manifest_errors::kCannotAccessPage part 1 contains data export: char const * const base::kCodepageUTF8 part 1 contains data export: public: static wchar_t const * const base::FilePath::kCurrentDirectory part 1 contains data export: public: static char const * const base::debug::CategoryFilter::kDefaultCategoryFilterString part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kEchoCancellation part 1 contains data export: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const google::protobuf::internal::kEmptyString part 1 contains data export: public: static struct tagVARIANT const base::win::ScopedVariant::kEmptyVariant part 1 contains data export: char const * const net::kErrorDomain part 1 contains data export: char const * const extensions::kExtensionScheme part 1 contains data export: public: static int const ppapi::PPB_Instance_Shared::kExtraCharsForTextInput part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kHighpassFilter part 1 contains data export: public: static char const * const LocalizedError::kHttpErrorDomain part 1 contains data export: public: static void * base::SyncSocket::kInvalidHandle part 1 contains data export: public: static struct PP_NetAddress_Private const ppapi::NetAddressPrivateImpl::kInvalidNetAddress part 1 contains data export: private: static int content::WebContentsUserData<class SessionTabHelper>::kLocatorKey part 1 contains data export: private: static int content::WebContentsUserData<class extensions::TabHelper>::kLocatorKey part 1 contains data export: char const * const content::kMediaStreamSource part 1 contains data export: char const * const content::kMediaStreamSourceId part 1 contains data export: char const * const content::kMediaStreamSourceScreen part 1 contains data export: char const * const content::kMediaStreamSourceTab part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeDownloadURL part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeHTML part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeText part 1 contains data export: public: static char const * const ui::Clipboard::kMimeTypeURIList part 1 contains data export: public: static char const * const chrome::ChromeContentClient::kNaClPluginName part 1 contains data export: public: static int const content::StreamDeviceInfo::kNoId part 1 contains data export: public: static char const * const webrtc::MediaConstraintsInterface::kNoiseSuppression part 1 contains data export: unsigned int const ppapi::kPPIdTypeBits part 1 contains data export: unsigned int const autofill::kRequiredAutofillFields part 1 contains data export: public: static wchar_t const * const base::FilePath::kSeparators part 1 contains data export: wchar_t const * const kWhitespaceUTF16 part 1 contains data export: wchar_t const * const kWhitespaceWide part 1 contains data export: private: static class ppapi::PpapiGlobals * ppapi::PpapiGlobals::ppapi_globals_
lgtm
Message was sent while issue was closed.
Committed patchset #8 manually as r201119 (presubmit successful). |