G06F8/54

COMPILER OPERATIONS FOR HETEROGENEOUS CODE OBJECTS

Described herein are techniques for performing compilation operations for heterogeneous code objects. According to the techniques, a compiler identifies architectures targeted by a compilation unit, compiles the compilation unit into a heterogeneous code object that includes a different code object portion for each identified architecture, performs name mangling on functions of the compilation unit, links the heterogeneous code object with a second code object to form an executable, and generates relocation records for the executable.

Method of enforcing control flow integrity in a monolithic binary using static analysis

Method of enforcing control flow integrity (CFI) for a monolithic binary using static analysis by: marking evaluated functions as core functions by a chosen heuristic or empirically; generating a binary call graph; merging all function nodes of core functions as a node of highest privilege (set 0); merging all leaf functions in one node without privilege (set n); merging all nodes without privilege that reach functions of privilege i and setting the merged node privilege to i+1; checking if there is a node without privilege besides a trivial function; in a positive case, returning to merging all nodes without privilege and setting the merged node privilege to i+1; and in a negative case, setting the privilege of trivial functions as i+2.

Method of enforcing control flow integrity in a monolithic binary using static analysis

Method of enforcing control flow integrity (CFI) for a monolithic binary using static analysis by: marking evaluated functions as core functions by a chosen heuristic or empirically; generating a binary call graph; merging all function nodes of core functions as a node of highest privilege (set 0); merging all leaf functions in one node without privilege (set n); merging all nodes without privilege that reach functions of privilege i and setting the merged node privilege to i+1; checking if there is a node without privilege besides a trivial function; in a positive case, returning to merging all nodes without privilege and setting the merged node privilege to i+1; and in a negative case, setting the privilege of trivial functions as i+2.

Methods for user interface generation and application modification
10922099 · 2021-02-16 · ·

A method of generating a user interface for presentation to a user. The method comprises executing a first application computer program to provide a user interface, executing agent computer program code to interrogate and modify said user interface during execution of said first application computer program, and presenting said modified user interface. The first application computer program may be run on a server, while the modified user interface may be presented to a user at a client connected to said server.

Methods for user interface generation and application modification
10922099 · 2021-02-16 · ·

A method of generating a user interface for presentation to a user. The method comprises executing a first application computer program to provide a user interface, executing agent computer program code to interrogate and modify said user interface during execution of said first application computer program, and presenting said modified user interface. The first application computer program may be run on a server, while the modified user interface may be presented to a user at a client connected to said server.

METHOD AND APPARATUS FOR LOADING MULTIPLE DIFFERING VERSIONS OF A NATIVE LIBRARY INTO A NATIVE ENVIRONMENT

A method for loading multiple versions of the same native library in a native runtime environment. In one embodiment, the method comprises cloning a native library workspace with a first version number as a cloned native library; applying a namespace across the cloned native library; injecting a macro into source code associated with the cloned native library; adding a dependency to the cloned native library in source code associated with the native runtime environment; and registering the first version number in a project configuration of the native runtime environment.

Software dependency shading

In one embodiment of the present invention, a shading engine enables multiple versions of dependencies to coexist in an executable software application. During the software build process, the shading engine dynamically renames transitive dependencies of the software application to disambiguated names. The shading engine performs this renaming at both the library and class level. Notably, the shading engine does not rename the first-order dependencies of the software application. Consequently, the code of the software application and interfaces between the software application and the first-order library dependencies of the software application are not modified. Notably, the shading engine efficiently and accurately shades the transitive dependencies without manual intervention. By contrast, primarily manually-based conventional approaches to dependency management are time consuming and susceptible to errors.

Software dependency shading

In one embodiment of the present invention, a shading engine enables multiple versions of dependencies to coexist in an executable software application. During the software build process, the shading engine dynamically renames transitive dependencies of the software application to disambiguated names. The shading engine performs this renaming at both the library and class level. Notably, the shading engine does not rename the first-order dependencies of the software application. Consequently, the code of the software application and interfaces between the software application and the first-order library dependencies of the software application are not modified. Notably, the shading engine efficiently and accurately shades the transitive dependencies without manual intervention. By contrast, primarily manually-based conventional approaches to dependency management are time consuming and susceptible to errors.

Method and system for updating firmware
10929149 · 2021-02-23 · ·

An example method of updating firmware includes receiving a memory map of a memory. The method also includes determining, based on the memory map, a set of memory regions storing a bundle of drivers in the memory, the bundle of drivers residing in firmware and being in an executable format. The method further includes for one or more drivers in the bundle of drivers (i) building, based on the memory map, a header that describes the respective driver, and (ii) creating an object file including the header and the respective driver, where the object file is in the executable format. The method also includes storing one or more of the object files in non-volatile memory.

Method and system for updating firmware
10929149 · 2021-02-23 · ·

An example method of updating firmware includes receiving a memory map of a memory. The method also includes determining, based on the memory map, a set of memory regions storing a bundle of drivers in the memory, the bundle of drivers residing in firmware and being in an executable format. The method further includes for one or more drivers in the bundle of drivers (i) building, based on the memory map, a header that describes the respective driver, and (ii) creating an object file including the header and the respective driver, where the object file is in the executable format. The method also includes storing one or more of the object files in non-volatile memory.