eld Manual
Table Of Contents
- eld Manual
- Legal Notices
- Contents
- What’s New in This Manual
- Manual Information
- New and Changed Information
- About This Manual
- Notation Conventions
- 1 Introduction to eld
- 2 eld Input and Output
- 3 Binding of References
- Overview
- Presetting Loadfiles
- To Preset or Not to Preset, and Creation of the LIC
- Handling Unresolved References
- Using User Libraries
- Creating Import Libraries
- Ignoring Optional Libraries
- Merging Symbols Found in Input Linkfiles
- Accepting Multiply-Defined Symbols
- Using the -cross_dll_cleanup option
- Specifying Which Symbols to Export, and Creating the Export Digest
- Public Libraries and DLLs
- The Public Library Registry
- 4 Other eld Processing
- Adjusting Loadfiles: The -alf Option
- Additional rules about -alf
- The -set and -change Options
- eld Functionality for 64-Bit
- Checking the C++ Language Dialect
- Renaming Symbols
- Creating Linker-Defined Symbols
- Updating Or Stripping DWARF Symbol Table Information
- Modifying the Data Sections that Contain Stack Unwinding Information
- Creating the MCB
- Processing of Floating Point Versions and Data Models
- Specification of the Main Entry Point
- Specifying Runtime Search Path Information for DLLs
- Merging Source RTDUs
- 5 Summary of Linker Options
- 6 Output Listings and Error Handling
- A TNS/E Native Object Files
- Glossary
- Index
Other eld Processing
eld Manual—527255-009
4-6
Additional rules about -alf
by looking at the dynamic symbol table of the existing loadfile rather than the ELF
symbol table of an input linkfile.
The following parts of the existing object file potentially need to change when the -alf
option is used without rebasing:
•
In the ELF header, the EF_TANDEM_PRESET bit may be changed.
•
In the .tandem_info section, the update_timestamp field may be updated. The
creation_timestamp and tim_dat fields are not updated. Some other fields may be
reset to zero, as mentioned earlier.
•
The LIC is updated. It may end up with more or less entries than before. This
includes the case that the LIC now is empty, or no longer is empty, because the file
now can or cannot be preset. But the .lic section always has the same size as
before. As mentioned earlier, if this size would not be big enough to contain the
LIC, then the file is not preset, so there is no LIC to worry about.
•
Throughout the data segment, all the references to undefined symbols are updated
as necessary.
The following additional parts of the existing object file also potentially need to change
when the -alf option is used with rebasing:
•
In the ELF header, the address of the entry point (the e_entry field) needs to be
updated, if this is a DLL that has an entry point. It is updated to the new (rebased)
address of the same procedure that was the main entry point before. The -e
option is not allowed with -alf.
•
In the program headers, the p_vaddr fields are updated.
•
In the .tandem_info section, the gp_value, the export_digest, and the four fields to
tell the addresses of the ctors array, etc., are updated, if they are nonzero. In the
.dynamic section, all the entries that tell addresses of sections of the loadfile, and
the entry that tells the GP value, are updated.
•
In the .dynsym and .dynsym.gblzd sections, the addresses of all the defined
symbols are updated. If they are exported procedures, their st_size fields (telling
the addresses of their official function descriptors) are similarly updated.
•
In the .rela.dyn and .rela.gblzd sections, the addresses of all the relocation sites
are updated.
•
Throughout the data segment, all the references to symbols defined within the
same loadfile are updated. This includes references that are explicitly identified by
relocation table entries as well as things that -alf finds in other ways, such as the
contents of the _ctors, etc. arrays and the official function descriptors.
•
In the ELF section headers, the sh_addr fields are updated, if they are nonzero.
The following additional part of the existing object file would potentially need to be
updated, but only in the case when -alf was rebasing the code and data segments by
different amounts:










