summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/rtl/rtl-obj.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-08-27libdl: Realloc text memory if there are trampolinesChris Johns1-89/+110
- Add resize to the allocator interface - Rework the trampoline variables in the obj struct to make better sense of what is happening Closes #4944
2022-08-22cpukit/include: Fix including in C++Chris Johns1-4/+16
UPdates #4706
2022-03-25cpukit/include/rtems: Change license to BSD-2Joel Sherrill1-3/+22
Updates #3053.
2019-05-03libdl: Do not access the ELF file while the allocator is locked.Chris Johns1-5/+33
- Load symbols before allocation. - Parse reloc records and place any reloc recs in a cache to use while the allocator is locked. - Relocate symbols after section allocation. - Split section loading into allocation/locating and loading. - Update all arch back-ends with a new reloc interface to control tramp handling. - Add `-a` and `-t` to the object list shell command. Closes #3741
2019-02-09libdl: Add powerpc large memory and small data support.Chris Johns1-20/+49
- Add support for architecure sections that can be handled by the architecture back end. - Add trampoline/fixup support for PowerPC. This means the PowerPC now supports large memory loading of applications. - Add a bit allocator to manage small block based regions of memory. - Add small data (sdata/sbss) support for the PowerPC. The support makes the linker allocated small data region of memory a global resource available to libdl loaded object files. Updates #3687 Updates #3685
2019-02-09libdl: Add support for large memory programsChris Johns1-13/+17
- Add trampolines to support relocs that are out of range on support architectures. - Support not loading separate text/data sections in an object file if the symbol provided in the section is a duplicate. A base image may have pulled in part of an object and another part needs to be dynamically loaded. - Refactor the unresolved handling to scale to hundreds of unresolved symbols when loading large number of files. Updates #3685
2019-02-09libdl: Add support for trampolinesChris Johns1-1/+37
- Trampolines or fixups for veneers provide long jump support for instruciton sets that implement short relative address branches. The linker provides trampolines when creating a static image. This patch adds trampoline support to libdl and the ARM architecture. - The dl09 test requires enough memory so modules are outside the relative branch instruction ranges for the architecture. Updates #3685
2019-02-09libdl: Fix the support for constructors and desctructors.Chris Johns1-0/+1
- Fix the handling of pending objects. - Add a constructor flags in objects to track then being called. Closes #2921
2019-02-09libdl: Add symbol searching and loading from archives.Chris Johns1-11/+55
- Load archive symbol tables to support searching of archives for symbols. - Search archive symbols and load the object file that contains the symbol. - Search the global and archives until all remaining unresolved symbols are not found. Group the loaded object files in the pending queue. - Run the object file and loaded dependents as a group before adding to the main object list. - Remove orphaned object files after references are removed. Updates #3686
2018-11-22libdl: Add object file dependencies to track referencesChris Johns1-14/+95
Tracking references lets us manage when an object file can be unloaded. If an object file has references to it, it cannot be unloaded. Modules that depend on each other cannot be unloaded. Updates #3605
2018-11-22libdl: Manage the allocation of common uninitialised variables.Chris Johns1-0/+33
The use of separate text and data results in uninitialised variables being placed in the common section. There is no section in ELF for the common variables so the loader needs to create the section and allocate the variables in that section. This patch does that. The patch adds a second pass over the symbols. The issue can also be seen as a section 65522 error. Updates #3604
2018-04-12libdl: Remove _t from all structures as this is reserved for the standardsChris Johns1-113/+113
2018-01-25Remove make preinstallChris Johns1-0/+0
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
2017-03-31libdl: Support link ordered loading of ELF sections.Chris Johns1-2/+14
The ARM C++ exception ABI uses an address ordered index table to locate the correct frame data and this requires the EXIDX sections are loaded in the order the order the matching text is loaded. The EXIDX sections set the SHF_LINK_ORDER flag and link field. This patch adds support to load those flagged sections in the linked-to section order. Updates #2955. Closes #2959
2016-12-14libdl: Add C++ exception support to loaded modules.Chris Johns1-68/+101
This has been tested on SPARC, i386, PowerPC and ARM. Closes #2767.
2016-07-21libdl/rtl-obj.c: synchronize cache after code relocation.Pavel Pisa1-0/+7
Memory content changes caused by relocation has to be propagated to memory/cache level which is used/snooped during instruction cache fill. Closes #2438
2015-03-20Replace www.rtems.com with www.rtems.orgSebastian Huber1-1/+1
2014-11-04libdl: Add a local symbol table to the object module.Chris Johns1-0/+3
Adding a local symbol lets the relocator find local symbols referenced in relocation records. The local symbol table is erased once the object module has been loaded.
2014-10-31cpukit: Add libdl with the Runtime Loader (RTL) code.Chris Johns1-0/+580
This is a merge of the RTL project.