IP Library Granted Patent US 9,672,015
Granted Patent B2
US 9,672,015 · App. 14/869,334 · Granted Jun 6, 2017

Automatic determination of compiler configuration

Inventor: Peter Cawley (Oxford, GB)
Assignee: Semmle Limited
G06F8/37G06F8/41G06F8/423G06F8/433G06F8/48
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,672,015
App. No.
14/869,334
Granted
Jun 6, 2017
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for automatically determining configuration properties of a compiler. One of the methods includes determining that an executable of the newly created process is a compiler called by the build system to compile source code of a source code file. In response to the determining, a plurality of configuration properties of the compiler called by the build system are determined, the configuration properties including first properties of a plurality of built-in functions of the compiler, second properties of a plurality of built-in types of the compiler, or both. A compiler emulator is configured to emulate the behavior of the compiler called by the build system using the determined configuration properties. Access to the source code is provided to the compiler emulator configured using the determined configuration properties.

Claims (80)

1. A computer-implemented method comprising:

initiating a first classification process for a first executable, wherein the first classification process performs a test compilation by invoking the first executable with a test compilation file;

intercepting a request to execute a second executable in a second newly created process invoked due to the test compilation being performed by the first classification process;

initiating a second classification process for the second executable including invoking the second executable with the test compilation file;

determining, by the second classification process for the second executable, that no other classification process recorded an indication that another classification process was invoked during a test compilation performed by the second classification process;

in response, classifying the second executable as a compiler;

determining, by the second classification process, that the second classification process was invoked with a reference to the test compilation file;

in response, recording an indication that the second classification process was invoked with the reference to the test compilation file;

determining, by the first classification process, that the second classification process recorded the indication; and

in response, classifying the first executable as a wrapper that wraps the compiler.

2. The method of claim 1 , wherein recording the indication comprises writing an indication to a data store.

3. The method of claim 2 , wherein recording the indication comprises writing a path to a second executable in the data store.

4. The method claim 1 , wherein initiating the first classification process for the first executable comprises intercepting a request to execute the first executable in a first newly created process.

5. A computer-implemented method comprising:

initiating a first classification process for a first executable, wherein the first classification process performs a test process by providing a test input to the first executable;

intercepting a request to execute a second executable in a second newly created process invoked due to the test process being performed by the first classification process;

initiating a second classification process for the second executable including invoking the second executable with the test input;

determining, by the second classification process, that no other classification process recorded an indication that another classification process was invoked during a test compilation performed by the second classification process;

in response, classifying the second executable as a wrapped subject executable;

determining, by the second classification process, that the second classification process was invoked with a reference to the test input;

in response, recording an indication that the second classification process was invoked with the reference to the test input;

determining, by the first classification process, that the second classification process recorded the indication; and

in response, classifying the first executable as a wrapper executable that wraps the wrapped subject executable.

6. The method of claim 5 , wherein recording the indication comprises writing an indication to a data store.

7. The method of claim 6 , wherein recording the indication comprises writing a path to the wrapped subject executable in the data store.

8. The method of claim 5 , wherein initiating the first classification process for the first executable comprises intercepting a request to execute the first executable in a first newly created process.

9. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

initiating a first classification process for a first executable, wherein the first classification process performs a test compilation by invoking the first executable with a test compilation file;

intercepting a request to execute a second executable in a second newly created process invoked due to the test compilation being performed by the first classification process;

initiating a second classification process for the second executable including invoking the second executable with the test compilation file;

determining, by the second classification process for the second executable, that no other classification process recorded an indication that another classification process was invoked during a test compilation performed by the second classification process;

in response, classifying the second executable as a compiler;

determining, by the second classification process, that the second classification process was invoked with a reference to the test compilation file;

in response, recording an indication that the second classification process was invoked with the reference to the test compilation file;

determining, by the first classification process, that the second classification process recorded the indication; and

in response, classifying the first executable as a wrapper that wraps the compiler.

10. The system of claim 9 , wherein recording the indication comprises writing an indication to a data store.

11. The system of claim 10 , wherein recording the indication comprises writing a path to the second executable in the data store.

12. The system claim 9 , wherein initiating the first classification process for the first executable comprises intercepting a request to execute the first executable in a first newly created process.

13. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

initiating a first classification process for a first executable, wherein the first classification process performs a test process by providing a test input to the first executable;

intercepting a request to execute a second executable in a second newly created process invoked due to the test process being performed by the first classification process;

initiating a second classification process for the second executable including invoking the second executable with the test input;

determining, by the second classification process, that no other classification process recorded an indication that another classification process was invoked during a test compilation performed by the second classification process;

in response, classifying the second executable as a wrapped subject executable;

determining, by the second classification process, that the second classification process was invoked with a reference to the test input;

in response, recording an indication that the second classification process was invoked with the reference to the test input;

determining, by the first classification process, that the second classification process recorded the indication; and

in response, classifying the first executable as a wrapper executable that wraps the wrapped subject executable.

14. The system of claim 13 , wherein recording the indication comprises writing an indication to a data store.

15. The system of claim 14 , wherein recording the indication comprises writing a path to the wrapped subject executable in the data store.

16. The system of claim 13 , wherein initiating the first classification process for the first executable comprises intercepting a request to execute the first executable in a first newly created process.

17. A computer program product, encoded on one or more nontransitory computer storage media, comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:

initiating a first classification process for a first executable, wherein the first classification process performs a test compilation by invoking the first executable with a test compilation file;

intercepting a request to execute a second executable in a second newly created process invoked due to the test compilation being performed by the first classification process;

initiating a second classification process for the second executable including invoking the second executable with the test compilation file;

determining, by the second classification process for the second executable, that no other classification process recorded an indication that another classification process was invoked during a test compilation performed by the second classification process;

in response, classifying the second executable as a compiler;

determining, by the second classification process, that the second classification process was invoked with a reference to the test compilation file;

in response, recording an indication that the second classification process was invoked with the reference to the test compilation file;

determining, by the first classification process, that the second classification process recorded the indication; and

in response, classifying the first executable as a wrapper that wraps the compiler.

18. The computer program product of claim 17 , wherein recording the indication comprises writing an indication to a data store.

19. The computer program product of claim 18 , wherein recording the indication comprises writing a path to the second executable in the data store.

20. The computer program product claim 17 , wherein initiating the first classification process for the first executable comprises intercepting a request to execute the first executable in a first newly created process.

21. A computer program product, encoded on one or more nontransitory computer storage media, comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:

initiating a first classification process for a first executable, wherein the first classification process performs a test process by providing a test input to the first executable;

intercepting a request to execute a second executable in a second newly created process invoked due to the test process being performed by the first classification process;

initiating a second classification process for the second executable including invoking the second executable with the test input;

determining, by the second classification process, that no other classification process recorded an indication that another classification process was invoked during a test compilation performed by the second classification process;

in response, classifying the second executable as a wrapped subject executable;

determining, by the second classification process, that the second classification process was invoked with a reference to the test input;

in response, recording an indication that the second classification process was invoked with the reference to the test input;

determining, by the first classification process, that the second classification process recorded the indication; and

in response, classifying the first executable as a wrapper executable that wraps the wrapped subject executable.

22. The computer program product of claim 21 , wherein recording the indication comprises writing an indication to a data store.

23. The computer program product of claim 22 , wherein recording the indication comprises writing a path to the wrapped subject executable in the data store.

24. The computer program product of claim 21 , wherein initiating the first classification process for the first executable comprises intercepting a request to execute the first executable in a first newly created process.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2020
From: GITHUB SOFTWARE UK LTD.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 051710/0252 →
CHANGE OF NAME Recorded Dec 11, 2019
From: SEMMLE LTD.
To: GITHUB SOFTWARE UK LTD.
Reel/Frame 052027/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2015
From: CAWLEY, PETER
To: SEMMLE LIMITED
Reel/Frame 036684/0799 →
Continuity (2)
Continuation 14867969 · Sep 28, 2015
Related Publication 20170090885A1 · Mar 30, 2017