IP Library Granted Patent US 9,152,438
Granted Patent B2
US 9,152,438 · App. 13/641,243 · Granted Oct 6, 2015

Object linking based on a determined linker order

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,152,438
App. No.
13/641,243
Granted
Oct 6, 2015
Kind
B2
Abstract

Example embodiments relate to a mechanism for linking objects to obtain an executable file. In particular, example embodiments include a mechanism that determines a linker order for a plurality of objects included in a version of an executable file and a mechanism that generates a scatter loading file for the version of the executable file, the scatter loading file ordering the plurality of objects using the linker order. Example embodiments also include a mechanism that links the plurality of objects using the scatter loading file to create the version of the executable file.

Claims (50)

1. A method for linking executable files to minimize update package size, the method comprising:

determining a first linker order for a first plurality of objects in a plurality of execution regions in a first version of an executable file, the first linker order indicating an inner ordering imposed by a linker on the first plurality of objects, wherein the first linker order is based on an assumption that the first plurality of objects were placed in a single execution region;

generating a first scatter loading file for the first version of the executable file, the first scatter loading file grouping the first plurality of objects into a plurality of execution regions using the first linker order;

linking the first plurality of objects using the first scatter loading file to create the first version of the executable file;

determining a second linker order for a second plurality of objects in a plurality of execution regions in a second version of the executable file, the second linker order indicating an inner ordering imposed by the linker on the second plurality of objects, wherein the second linker order is based on an assumption that the first plurality of objects were placed in a single execution region;

generating a second scatter loading file for the second version of the executable file, the second scatter loading file grouping the second plurality of objects into a plurality of execution regions using the second linker order;

linking the second plurality of objects using the second scatter loading file to create the second version of the executable file; and

generating an update package, the update package containing instructions to generate the second version of the executable file using the first version of the executable file.

2. The method of claim 1 , wherein determining the first and second linker orders comprises, for each respective plurality of objects:

identifying any object libraries referenced by the respective plurality of objects;

parsing the identified object libraries to identify any library objects referenced by the respective plurality of objects; and

determining a respective linker order of the respective plurality of objects and the referenced library objects based on object ordering properties of a particular linker used for linking the first and second plurality of objects.

3. The method of claim 1 , wherein determining the first and second linker order is based on an assumption that all objects are to be included in a single execution region.

4. The method of claim 1 , wherein generating the first and second scatter loading files comprises, for each respective executable file:

organizing the objects to be included in the respective executable file into a plurality of execution regions, wherein an ordering between and within the execution regions follows the determined linker order.

5. A non-transitory machine-readable storage medium encoded with instructions executable by a processor of a computing device, the non-transitory machine-readable storage medium comprising:

instructions for determining a first linker order for a first plurality of objects in a plurality of execution regions for a first version of an executable file, the first linker order indicating an inner ordering imposed by a linker on the first plurality of objects, wherein the first linker order is based on an assumption that the first plurality of objects were placed in a single execution region;

instructions for generating a first scatter loading file for the first version of the executable file, the first scatter loading file ordering the first plurality of objects using the first linker order;

instructions for linking the first plurality of objects using the first scatter loading file to create the first version of the executable file;

instructions for determining a second linker order for a second plurality of objects in a plurality of execution regions for a second version of an executable file, the second linker order indicating an inner ordering imposed by a linker on the second plurality of objects, wherein the second linker order is based on an assumption that the second plurality of objects were placed in a single execution region;

instructions for generating a second scatter loading file for the second version of the executable file, the second scatter loading file ordering the second plurality of objects using the second linker order; and

instructions for linking the second plurality of objects using the second scatter loading file to create the second version of the executable file.

6. The non-transitory machine-readable storage medium of claim 5 , further comprising:

instructions for generating an update package, the update package containing instructions to generate the second version of the executable file using the first version of the executable file.

7. The non-transitory machine-readable storage medium of claim 6 , wherein the first version of the executable file and the second version of the executable file each correspond to a respective firmware version of a client device.

8. The non-transitory machine-readable storage medium of claim 5 , wherein the instructions for determining the first linker order comprise:

instructions for parsing each of the first plurality of objects to identify any object libraries referenced by the first plurality of objects;

instructions for parsing each of the referenced object libraries to identify any library objects referenced by the first plurality of objects; and

instructions for outputting the first linker order based on a determined ordering of the first plurality of objects and the library objects referenced by the first plurality of objects.

9. The non-transitory machine-readable storage medium of claim 8 , wherein the instructions for outputting the first linker order determine the ordering based on object ordering properties of a particular linker to be used by the instructions for linking the first plurality of objects.

10. The non-transitory machine-readable storage medium of claim 5 , wherein the instructions for generating the first scatter loading file comprise:

instructions for determining a size of each object of the plurality of objects; and

instructions for organizing the plurality of objects into execution regions based on a maximum execution region size and the size of each object, wherein each execution region orders objects according to the first linker order.

11. The non-transitory machine-readable storage medium of claim 5 , wherein the first scatter loading file explicitly lists every object included in or referenced by the first plurality of objects using the first linker order.

12. A computing device comprising:

a processor; and

a machine-readable storage medium encoded with instructions executable by the processor, the machine-readable storage medium comprising:

instructions for determining a first linker order for a first plurality of objects in a plurality of execution regions for a first version of an executable file, the first linker order specifying a linker inner ordering, wherein the first linker order is based on an assumption that the first plurality of objects were placed in a single execution region,

instructions for generating a first scatter loading file for the first version of the executable file, the first scatter loading file ordering objects using an order specified in the first linker order,

instructions for linking the first plurality of objects for the first version of the executable file using the first scatter loading file to create the first version of the executable file,

instructions for determining a second linker order for a second plurality of objects in a plurality of execution regions for a second version of an executable file, the second linker order specifying a linker inner ordering, wherein the second linker order is based on an assumption that the second plurality of objects were placed in a single execution region,

instructions for generating a second scatter loading file for the second version of the executable file, the second scatter loading file ordering objects using an order specified in the second linker order,

instructions for linking the second plurality of objects for the second version of the executable file using the second scatter loading file to create the second version of the executable file, and

instructions for generating an update package, the update package containing instructions to generate a subsequent version of the executable file using a previous version of the executable file.

13. The computing device of claim 12 , wherein:

when the subsequent version of the executable file removes a particular object from the previous version of the executable file, the respective linker order for the subsequent version is the same as the respective linker order for the previous version with the particular object removed.

14. The computing device of claim 12 , wherein:

when the subsequent version of the executable file adds a particular object to the previous version of the executable file, the respective linker order for the subsequent version is the same as the respective linker order for the previous version with the particular object inserted.

15. The computing device of claim 12 , wherein:

when the objects included in the subsequent version of the executable file and the previous version of the executable file are the same, the respective linker order is identical for both versions.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2014
From: HEWLETT-PACKARD COMPANY; HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.; PALM, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 032177/0210 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2013
From: PALM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 031837/0239 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2013
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: PALM, INC.
Reel/Frame 031837/0544 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2013
From: PALM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 031837/0659 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2013
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: PALM, INC.
Reel/Frame 030341/0459 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2012
From: WU, ZHAO-MING
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 029145/0610 →