Patent classifications
G06F8/54
Dynamically replacing a call to a software library with a call to an accelerator
A computer program includes calls to a software library. A virtual function table is built that includes the calls to the software library in the computer program. A programmable device includes one or more currently-implemented accelerators. The available accelerators that are currently-implemented are determined. The calls in the software library that correspond to a currently-implemented accelerator are determined. One or more calls to the software library in the virtual function table are replaced with one or more corresponding calls to a corresponding currently-implemented accelerator. When a call in the software library could be implemented in a new accelerator, an accelerator image for the new accelerator is dynamically generated. The accelerator image is then deployed to create the new accelerator. One or more calls to the software library in the virtual function table are replaced with one or more corresponding calls to the new accelerator.
SEMI-DECLARATIVE METHOD FOR INFRASTRUCTURE DEPLOYMENT AND ACCESS CONTROL
A computer system includes a processor and a memory device. The computer system is configured to execute a function that builds a software instance definition object. The software instance definition object includes one or more configuration items, attributes, permissions, and linkages to other objects, which define a software instance. The computer system temporarily stores the software instance definition object in the memory device. The computer system updates at least one of the configuration items, attributes, permissions, and linkages to other objects of the stored software instance definition object, thereby creating an updated software instance definition object. A fix command is then executed to update the software instance based on the updated software instance definition object, thereby creating an updated software instance. After creating the updated software instance, the software instance definition object is deleted from the memory device.
SEMI-DECLARATIVE METHOD FOR INFRASTRUCTURE DEPLOYMENT AND ACCESS CONTROL
A computer system includes a processor and a memory device. The computer system is configured to execute a function that builds a software instance definition object. The software instance definition object includes one or more configuration items, attributes, permissions, and linkages to other objects, which define a software instance. The computer system temporarily stores the software instance definition object in the memory device. The computer system updates at least one of the configuration items, attributes, permissions, and linkages to other objects of the stored software instance definition object, thereby creating an updated software instance definition object. A fix command is then executed to update the software instance based on the updated software instance definition object, thereby creating an updated software instance. After creating the updated software instance, the software instance definition object is deleted from the memory device.
Protecting sensitive data in software products and in generating core dumps
Sensitive data is protected in a software product. A source file of the software product is compiled to generate an object file, in which the source file includes at least one piece of sensitive data marked with a specific identifier. The object file has a secure data section for saving storage information of the at least one piece of sensitive data at compile-time and run-time. The object file is linked to generate an executable file. The executable file updates the secure data section at run-time. Sensitive data is also protected when a core dump is generated.
SPECIALIZED MICRO-HYPERVISORS FOR UNIKERNELS
Application code is obtained at a compiler toolchain, which accesses a package manager that tracks dependencies for a set of software components including application-level components represented as application-level packages, hypervisor interface-level components represented as hypervisor interface-level packages, and hypervisor-level components represented as hypervisor-level packages. A dependency solver is employed to select a sub-set of the set of packages that satisfy the dependencies. The sub-set of packages is assembled into an executable bundle, including a statically-linked binary built entirely from the sub-set of the selected packages that contains no external dependencies except calls to an interface defined entirely by the hypervisor interface-level packages, and a specialized monitor built entirely from the sub-set of the selected packages that runs on a standard operating system, loads and executes the statically-linked binary, and interacts with the statically-linked binary only through the interface defined by the hypervisor interface-level packages.
FUNCTION RESULT PREDICTION
A computer-implemented method, system, and computer program product for writing and checking functions of a code file in interactive development environments. The method may include, responsive to determining the function matches a historical function in a log of previously executed functions and their corresponding execution responses, identifying the execution response corresponding to the matching historical function in the log. The method may also include determining an expected result of the function based on the identified execution response.
FUNCTION RESULT PREDICTION
A computer-implemented method, system, and computer program product for writing and checking functions of a code file in interactive development environments. The method may include, responsive to determining the function matches a historical function in a log of previously executed functions and their corresponding execution responses, identifying the execution response corresponding to the matching historical function in the log. The method may also include determining an expected result of the function based on the identified execution response.
Fine-grained demand driven IPO infrastructure
Provided are methods and systems for inter-procedural optimization (IPO). A new IPO architecture (referred to as “ThinLTO”) is designed to address the weaknesses and limitations of existing IPO approaches, such as traditional Link Time Optimization (LTO) and Lightweight Inter-Procedural Optimization (LIPO), and become a new link-time-optimization standard. With ThinLTO, demand-driven and summary-based fine grain importing maximizes the potential of Cross-Module Optimization (CMO), which enables as much useful CMO as possible ThinLTO also provides for global indexing, which enables fast function importing; parallelizes some performance-critical but expensive inter-procedural analyses and transformations; utilizes demand-driven, lazy importing of debug information that minimizes memory consumption for the debug build; and allows easy integration of third-party distributed build systems. In addition, ThinLTO may also be implemented using an IPO server, thereby removing the need for the serial step.
Tracking history of firmware program updates
A method of tracking a history of firmware program updates. The method includes reading current descriptions of current application programming interfaces from a history log. The current application programming interfaces correspond to current software modules. The current software modules form a current firmware program of a target device. The method also includes accessing updated software modules and new descriptions of new application programming interfaces of an updated firmware program. The updated firmware program is created from the current firmware program. The method further includes appending the new descriptions to the current descriptions in the history log, reading the new descriptions of the new application programming interfaces from the history log, generating an updated linkage for the updated firmware program by adding new links for the new application programming interfaces, and storing the updated software modules and the updated linkage in the history log.
Tracking history of firmware program updates
A method of tracking a history of firmware program updates. The method includes reading current descriptions of current application programming interfaces from a history log. The current application programming interfaces correspond to current software modules. The current software modules form a current firmware program of a target device. The method also includes accessing updated software modules and new descriptions of new application programming interfaces of an updated firmware program. The updated firmware program is created from the current firmware program. The method further includes appending the new descriptions to the current descriptions in the history log, reading the new descriptions of the new application programming interfaces from the history log, generating an updated linkage for the updated firmware program by adding new links for the new application programming interfaces, and storing the updated software modules and the updated linkage in the history log.