IP Library Patent Application 10965361
Patent Application
App. No. 10/965,361

Platform independent dynamic linking

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 None
App. No.
10/965,361
Abstract

A platform independent binary object (PIBO) operable on disparate computing environments that have a selected hardware architecture without requiring rebuilding or reloading is provided. The PIBO can be parsed to generate source-code stub file. The PIBO can be loaded and linked with a cooperating computing application by an exemplary linker/loader employing the stub file. Also, the PIBO can be used in various contexts, including but not limited to, as a mechanism for dynamically linking shared objects on platforms that do not offer such native facility; in utilizing pre-written code components on platforms that otherwise would be incompatible due to a violation of platform constraints within particular code; as a mechanism for loading non object-oriented code that circumvents restrictions of multiple execution instances and repeat execution inherent in the code; and as mechanism that allows for the use of a binary object to add on functionality on a closed platform.

Claims (71)

1 . A system for dynamically loading and linking a single binary object file across a plurality of software platforms and operating systems executing on a defined processor architecture without requiring recompiling or rebuilding of the binary object file comprising:

a platform independent dynamic library (PIDL); and

a stub file, created as a source code, operable on the plurality of software platforms to allow a binary executable program executing on at least one of the plurality of software platforms and operating systems to have access to and co-operate with the PIDL.

2 . The system as recited in claim 1 wherein the PIDL comprises any of a linked library and a platform independent code library.

3 . The system as recited in claim 2 wherein the PIDL comprises a binary object file having a selected structure.

4 . The system as recited in claim 3 wherein the PIDL selected structure comprises any of the executable and linking format (ELF) and the portable executable (PE) format.

5 . The system as recited in claim 3 further comprising a parser operating on the PIDL to generate the stub file.

6 . The system as recited in claim 5 further comprising a dynamic linker/loader operating on the PIDL to load the PIDL onto at least one of the plurality of software platforms during the loading of the binary executable program containing a cooperating computing application for execution.

7 . The system as recited in claim 6 wherein the dynamic linker/loader operates on the PIDL to link the PIDL with the cooperating computing application during the loading of the binary executable program.

8 . The system as recited in claim 6 or 7 wherein source code for a computing application cooperating with the PIDL, source code for the dynamic linker/loader, and the source code for the stub file, are compiled and linked into a binary executable program for a selected one of the plurality of software platforms.

9 . The system as recited in claim 8 wherein the selected software platform executes exclusively on a selected one of the plurality of operating systems.

10 . The system as recited in claim 6 or 7 wherein the PIDL is dynamically loaded and linked to a computing application and other libraries of a computing environment, operating on an operating system that does not natively support a binary format of the PIDL.

11 . The system as recited in claim 6 or 7 wherein the dynamic linker/loader comprises functions that are compiled with the cooperating computing application.

12 . The system as recited in claim 6 or 7 wherein the PIDL is dynamically loaded and linked by parsing a binary object library to generate source code describing symbols and properties for use in dynamically linking the PIDL with the cooperating computing application.

13 . The system as recited in claim 12 wherein the source code describing symbols and properties is compiled with the cooperating computing application having dependencies on the binary object.

14 . The system as recited in claim 13 wherein dynamic linking occurs when a cooperating computing application is loaded into the memory of a selected one of the plurality of software platforms.

15 . The system as recited in claim 14 wherein the dynamic linking occurs when a library symbol resident in the PIDL is first called by the cooperating computing application.

16 . The system as recited in claim 6 or 7 wherein the dynamic linker/loader is designed to operate on a selected one of the plurality of software platforms.

17 . The system as recited in claim 16 further comprising an interface module providing the PIDL access to the cooperating computing application.

18 . The system as recited in claim 17 wherein the interface module comprises source code to allow the PIDL to call selected functions in the cooperating computing application.

19 . The system as recited in claim 18 wherein the source code of the interface module is generated by parsing an application programming interface of the cooperating computing application.

20 . The system as recited in claim 19 wherein the source code of the interface module is compiled with the cooperating computing application for a selected one of the plurality of software platforms.

21 . The system as recited in claim 12 wherein the dynamic linker/loader handles symbol resolution and relocation to bind the cooperating computing application and the PIDL into a runnable process on the selected software platform.

22 . The system as recited in claim 21 wherein the runnable process comprises a computing application cooperating with and bound to a plurality of PIDL libraries.

23 . The system as recited in claim 22 wherein the dynamic linker/loader discriminates between PIDL files and non-PIDL files when linking files with the cooperating computing application.

24 . The system as recited in claim 23 wherein the runnable process links the cooperating computing application with a PIDL library and a dynamically linked library native to the selected software platform.

25 . The system as recited in claim 1 wherein library source code is compiled to generate the PIDL comprising any of binary code and data.

26 . A method to integrate a binary object across a plurality of software platforms and operating systems without requiring recompiling or rebuilding of the binary object comprising:

providing a platform independent library (PIL); and

providing a source-code stub file providing executable programs capable of running on the plurality of software platforms and operating systems access to cooperate with the platform independent library (PIL).

27 . The method as recited in claim 26 further comprising generating the PIL as a object file having a selected structure.

28 . The method as recited in claim 27 further comprising selecting the object file as a file comprising any of the executable and linking format (ELF) and portable executable (PE) file structures.

29 . The method as recited in claim 28 further comprising generating the PIL for a selected hardware architecture.

30 . The method as recited in claim 29 further comprising selecting the hardware architecture from architectures comprising any of a reduced instruction set computer (RISC) and complex instruction set computer (CISC) hardware architectures.

31 . The method as recited in claim 30 further comprising parsing the PIL to generate the stub file as source code.

32 . The method as recited in claim 31 further comprising providing a dynamic linker/loader compiled with a cooperating computing application.

33 . The method as recited in claim 32 further comprising loading the PIL in an allocated memory block on a selected one of the plurality of software platforms by the dynamic linker/loader.

34 . The method as recited in claim 33 further comprising linking the PIL with a cooperating computing application for execution on selected one of the plurality of software platforms.

35 . The method as recited in claim 34 further comprising handling resolution and relocation of PIL symbols by the dynamic linker/loader.

36 . The method as recited in claim 30 further comprising providing a dynamic linker/loader for exclusive operation on a selected one of the plurality of software platforms.

37 . A computer readable medium having computer readable instructions to instruct a computer to perform a method comprising:

providing a platform independent library (PIL); and

providing a source-code stub file providing executable programs running on the plurality of software platforms and operating systems access to and means of cooperation with the platform independent library (PIL).

38 . A computer readable medium having computer readable instructions to instruct plurality of software platforms and operating systems to cooperate with a platform independent dynamic library (PIDL) comprising:

generating a PIDL having a object file comprising any of executable and linking format (ELF) and portable executable (PE) file structure;

parsing the PIDL to generate a stub file generated as source code; and

compiling the stub file with a cooperating computing application and linking the PIDL to the cooperating computing application by a dynamic loader/linker for execution.

39 . The computer readable medium as recited in claim 38 further comprising providing a application program interface providing access to the PIDL to at least one function of a cooperating computing application.

40 . The computer readable medium as recited in claim 38 further comprising compiling the stub file and a source code for the dynamic loader/linker for a selected one of the plurality of software platforms.

41 . The computer readable medium as recited in claim 40 wherein the dynamic loader/linker operates to perform symbol resolution and look up for PIDL symbols during loading of a cooperating computing application cooperating with the PIDL.

42 . The computer readable medium as recited in claim 41 further comprising determining size of the PIDL object file.

43 . The computer readable medium as recited in claim 42 further comprising allocating memory to load the PIDL object.

44 . The computer readable medium as recited in claim 43 further comprising relocating internal PIDL symbols using symbol tables and load addresses.

45 . The computer readable medium as recited in claim 44 further comprising relocating external PIDL symbols.

46 . The computer readable medium as recited in claim 45 further comprising communicating by the dynamic loader/linker to a cooperating computing application the relocated PIDL symbol addresses.

47 . A method to process a binary object for use across a plurality of software platforms and operating systems without recompiling or rebuilding the binary object for each of the plurality of the software platforms and operating systems comprising:

providing a library source code;

compiling the library source code to generate a platform independent code library (PICL) comprising an object file having a selected format;

parsing the PICL to generate a source code based stub file that describes symbols present in the PICL;

compiling the stub file with a cooperating computing application for a selected one of the plurality of software platforms;

loading the PICL in memory of the selected one of the plurality of software platforms; and

linking the PICL to resolve and relocate PICL symbols for use by the cooperating computing application executable on the selected one of the plurality of software platforms.

48 . The method as recited in claim 47 further comprising generating the stub file as a source code file that is compiled with a cooperating computing application and with source code for a dynamic linker/loader to create a binary program executable on a selected one of the plurality of software platforms.

49 . The method as recited in claim 48 further comprising selecting a object file format comprising any of the ELF and PE file formats.

50 . The method as recited in claim 49 further comprising providing a dynamic linker/loader operable exclusively on at least one of the disparate computing environments.

51 . A method to distribute a computing library update for use across disparate computing software environments operating on a defined processor architecture as a binary object that is not recompiled or rebuilt for each of the disparate computing software environments comprising:

creating a platform independent dynamic library (PIDL) operable with a source-code based stub file that is dynamically linked by a dynamic linker with a cooperating computing application prior to execution of a cooperating computing application operable on at least one of the computing environments; and

communicating the PIDL to the disparate computing environments over a communications network.

52 . The method as recited in claim 51 further comprising communicating a new version of the computing application cooperating with at least one PIDL.

53 . The method as recited in claim 52 further comprising compiling the dynamic linker with the stub file and the cooperating computing application for a selected one of the disparate software environments.

54 . The method as recited in claim 51 further comprising communicating a new version of the PIDL cooperating with the computing application.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2011
From: PICSEL (RESEARCH) LIMITED
To: HAMSARD LIMITED
Reel/Frame 026340/0446 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED ON REEL 025378 FRAME 0276. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Mar 30, 2011
From: PICSEL (MALTA) LIMITED
To: PICSEL INTERNATIONAL LIMITED
Reel/Frame 026065/0715 →
CHANGE OF NAME Recorded Nov 16, 2010
From: PICSEL (MALTA) LIMITED
To: PICSEL INTERNATIONAL LIMITED
Reel/Frame 025378/0276 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2010
From: HAMSARD LIMITED
To: PICSEL (MALTA) LIMITED
Reel/Frame 025377/0620 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE RECEIVING PARTY FROM PICSEL RESEARCH LTD. TO PICSEL (RESEARCH) LIMITED, PREVIOUSLY RECORDED ON REEL 015911 FRAME 0370. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT EXECUTED OCTOBER 1, 2004 AND OCTOBER 3, 2004, RESPECTIVELY. Recorded Jan 28, 2009
From: ANWAR, MAJID; CARDINER, PAUL
To: PICSEL (RESEARCH) LIMITED
Reel/Frame 022196/0360 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF THE NAME OF THE RECEIVING PARTY FROM PICSEL RESEARCH LTD TO PICSEL (RESEARCH) LIMITED PREVIOUSLY RECORDED ON REEL 015911 FRAME 0370. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT EXECUTED OCTOBER 1, 2004 AND OCTOBER 3, 2004, RESPECTIVELY. Recorded Oct 13, 2008
From: ANWAR, MAJID; GARDINER, PAUL
To: PICSEL (RESEARCH) LIMITED
Reel/Frame 021674/0203 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 12, 2004
From: ANWAR, MAJID; GARDINER, PAUL
To: PICSEL RESEARCH LTD.
Reel/Frame 015911/0370 →