Bug 22315

Summary: Adopt check-for-exit-time-destructors on Windows
Product: WebKit Reporter: Adam Roben (:aroben) <aroben>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: bfulgham, darin, ddkilzer, pvollan
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows XP   
See Also: https://bugs.webkit.org/show_bug.cgi?id=22314
https://bugs.webkit.org/show_bug.cgi?id=160302

Description Adam Roben (:aroben) 2008-11-17 09:16:18 PST
It would be good to adopt the check-for-global-initializers script on Windows. I've done a little investigation into what would have to change in the script to make it work on Windows. Here's what I've come up with (based on <http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/check-for-exit-time-destructors?rev=38476>):

1. Use of Xcode-specific environment variables

We can either set similar variables on Windows or pass the relevant values as parameters.

2. Use of a "link file list"

We can get the list of object files linked into the executable by using "dumpbin.exe /archivemembers".

3. Searching for "___cxa_atexit" to indicate an exit-time destructor

On Windows, "_atexit" is used instead.

4. List of files to skip uses .o extension

On Windows, these files have a .obj extension. We could just use the part of
the filename before the extension instead.

5. Use of otool to disassemble binaries

On Windows, we can use "dumpbin.exe /disasm" instead.
Comment 1 Adam Roben (:aroben) 2008-11-17 09:17:07 PST
See bug 22314 about adopting check-for-global-initializers as well.
Comment 2 David Kilzer (:ddkilzer) 2016-07-28 12:59:16 PDT
NOTE: Bug 160302 is going to remove these scripts.

However, I think the scripts would have had to use different tools to make them work on Windows.  (Maybe MSVC++ has a switch similar to -Wexit-time-destructors instead?)