mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Corrected javadocs
This commit is contained in:
parent
1194474767
commit
a766db497a
2 changed files with 22 additions and 20 deletions
|
@ -129,7 +129,7 @@ public class ElfLoadAdapter {
|
||||||
* The OTHER space is reserved and should not be returned by this method.
|
* The OTHER space is reserved and should not be returned by this method.
|
||||||
* @param elfLoadHelper load helper object
|
* @param elfLoadHelper load helper object
|
||||||
* @param elfProgramHeader elf program segment header
|
* @param elfProgramHeader elf program segment header
|
||||||
* @return preferred load address space or null to use default behavior
|
* @return preferred load address space
|
||||||
*/
|
*/
|
||||||
public AddressSpace getPreferredSegmentAddressSpace(ElfLoadHelper elfLoadHelper,
|
public AddressSpace getPreferredSegmentAddressSpace(ElfLoadHelper elfLoadHelper,
|
||||||
ElfProgramHeader elfProgramHeader) {
|
ElfProgramHeader elfProgramHeader) {
|
||||||
|
|
|
@ -2159,11 +2159,12 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the preferred load address space for a program segment
|
* Get the load address space for a program segment.
|
||||||
|
* Non-allocated segments may return the OTHER space.
|
||||||
* @param elfProgramHeader elf program segment header
|
* @param elfProgramHeader elf program segment header
|
||||||
* @return preferred load address space or null to use default behavior
|
* @return preferred load address space
|
||||||
*/
|
*/
|
||||||
private AddressSpace getPreferredSegmentAddressSpace(ElfProgramHeader elfProgramHeader) {
|
private AddressSpace getSegmentAddressSpace(ElfProgramHeader elfProgramHeader) {
|
||||||
if (elfProgramHeader.getType() != ElfProgramHeaderConstants.PT_LOAD &&
|
if (elfProgramHeader.getType() != ElfProgramHeaderConstants.PT_LOAD &&
|
||||||
elfProgramHeader.getVirtualAddress() == 0) {
|
elfProgramHeader.getVirtualAddress() == 0) {
|
||||||
return AddressSpace.OTHER_SPACE;
|
return AddressSpace.OTHER_SPACE;
|
||||||
|
@ -2177,10 +2178,10 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
* the segment data did not get bumped into an overlay area due to a conflict with
|
* the segment data did not get bumped into an overlay area due to a conflict with
|
||||||
* another segment or section.
|
* another segment or section.
|
||||||
* @param elfProgramHeader
|
* @param elfProgramHeader
|
||||||
* @return address or null if range check failed.
|
* @return segment load address
|
||||||
*/
|
*/
|
||||||
private Address getPreferredSegmentLoadAddress(ElfProgramHeader elfProgramHeader) {
|
private Address getSegmentLoadAddress(ElfProgramHeader elfProgramHeader) {
|
||||||
AddressSpace space = getPreferredSegmentAddressSpace(elfProgramHeader);
|
AddressSpace space = getSegmentAddressSpace(elfProgramHeader);
|
||||||
if (!space.isLoadedMemorySpace()) {
|
if (!space.isLoadedMemorySpace()) {
|
||||||
// handle non-loaded sections into the OTHER space
|
// handle non-loaded sections into the OTHER space
|
||||||
long addrWordOffset = elfProgramHeader.getVirtualAddress();
|
long addrWordOffset = elfProgramHeader.getVirtualAddress();
|
||||||
|
@ -2192,11 +2193,12 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine preferred section load address address space prior to load.
|
* Determine preferred section load address address space prior to load.
|
||||||
|
* Non-allocated sections may return the OTHER space or an existing OTHER
|
||||||
|
* overlay established by a program header.
|
||||||
* @param elfSectionHeader
|
* @param elfSectionHeader
|
||||||
* @return address space targeted for load. The OTHER address space signifies that
|
* @return section load address space
|
||||||
* and overlay on the OTHER space should be used as the section is not really loaded.
|
|
||||||
*/
|
*/
|
||||||
private AddressSpace getPreferredSectionAddressSpace(ElfSectionHeader elfSectionHeader) {
|
private AddressSpace getSectionAddressSpace(ElfSectionHeader elfSectionHeader) {
|
||||||
|
|
||||||
if (!elfSectionHeader.isAlloc()) {
|
if (!elfSectionHeader.isAlloc()) {
|
||||||
|
|
||||||
|
@ -2216,13 +2218,13 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine section's preferred load address
|
* Determine section's load address.
|
||||||
* @param elfSectionHeader
|
* @param elfSectionHeader
|
||||||
* @return preferred load address
|
* @return section load address
|
||||||
*/
|
*/
|
||||||
private Address getPreferredSectionLoadAddress(ElfSectionHeader elfSectionHeader) {
|
private Address getSectionLoadAddress(ElfSectionHeader elfSectionHeader) {
|
||||||
|
|
||||||
AddressSpace space = getPreferredSectionAddressSpace(elfSectionHeader);
|
AddressSpace space = getSectionAddressSpace(elfSectionHeader);
|
||||||
if (!space.isLoadedMemorySpace()) {
|
if (!space.isLoadedMemorySpace()) {
|
||||||
// handle non-loaded sections into the OTHER space
|
// handle non-loaded sections into the OTHER space
|
||||||
long addrWordOffset = elfSectionHeader.getAddress();
|
long addrWordOffset = elfSectionHeader.getAddress();
|
||||||
|
@ -2269,7 +2271,7 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
else if (section instanceof ElfSectionHeader) {
|
else if (section instanceof ElfSectionHeader) {
|
||||||
ElfSectionHeader s = (ElfSectionHeader) section;
|
ElfSectionHeader s = (ElfSectionHeader) section;
|
||||||
if (s.isAlloc()) {
|
if (s.isAlloc()) {
|
||||||
return getPreferredSectionLoadAddress(s);
|
return getSectionLoadAddress(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2377,7 +2379,7 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
|
|
||||||
long loadSizeBytes = elfProgramHeader.getAdjustedLoadSize();
|
long loadSizeBytes = elfProgramHeader.getAdjustedLoadSize();
|
||||||
if (loadSizeBytes == 0) {
|
if (loadSizeBytes == 0) {
|
||||||
expandStart = getPreferredSegmentLoadAddress(elfProgramHeader);
|
expandStart = getSegmentLoadAddress(elfProgramHeader);
|
||||||
space = expandStart.getAddressSpace();
|
space = expandStart.getAddressSpace();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -2525,7 +2527,7 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
// occur for mapped memory regions as seen with some Harvard Architecture processors. The
|
// occur for mapped memory regions as seen with some Harvard Architecture processors. The
|
||||||
// process-specific extension should control the outcome.
|
// process-specific extension should control the outcome.
|
||||||
|
|
||||||
Address address = getPreferredSegmentLoadAddress(elfProgramHeader);
|
Address address = getSegmentLoadAddress(elfProgramHeader);
|
||||||
AddressSpace space = address.getAddressSpace();
|
AddressSpace space = address.getAddressSpace();
|
||||||
|
|
||||||
long addr = elfProgramHeader.getVirtualAddress();
|
long addr = elfProgramHeader.getVirtualAddress();
|
||||||
|
@ -2668,7 +2670,7 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (elfSectionToLoad.isAlloc() && addr != 0) {
|
if (elfSectionToLoad.isAlloc() && addr != 0) {
|
||||||
AddressSpace loadSpace = getPreferredSectionAddressSpace(elfSectionToLoad);
|
AddressSpace loadSpace = getSectionAddressSpace(elfSectionToLoad);
|
||||||
if (loadSpace.equals(defaultSpace)) {
|
if (loadSpace.equals(defaultSpace)) {
|
||||||
long sectionByteLength = elfSectionToLoad.getAdjustedSize(); // size in bytes
|
long sectionByteLength = elfSectionToLoad.getAdjustedSize(); // size in bytes
|
||||||
long sectionLength = sectionByteLength / defaultSpace.getAddressableUnitSize();
|
long sectionLength = sectionByteLength / defaultSpace.getAddressableUnitSize();
|
||||||
|
@ -2747,7 +2749,7 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
// Check for and consume uninitialized portion of PT_LOAD segment if possible
|
// Check for and consume uninitialized portion of PT_LOAD segment if possible
|
||||||
ElfProgramHeader loadHeader = elf.getProgramLoadHeaderContaining(addr);
|
ElfProgramHeader loadHeader = elf.getProgramLoadHeaderContaining(addr);
|
||||||
if (loadHeader != null) {
|
if (loadHeader != null) {
|
||||||
Address segmentStart = getPreferredSegmentLoadAddress(loadHeader);
|
Address segmentStart = getSegmentLoadAddress(loadHeader);
|
||||||
AddressSpace segmentSpace = segmentStart.getAddressSpace();
|
AddressSpace segmentSpace = segmentStart.getAddressSpace();
|
||||||
long loadSizeBytes = loadHeader.getAdjustedLoadSize();
|
long loadSizeBytes = loadHeader.getAdjustedLoadSize();
|
||||||
long fullSizeBytes =
|
long fullSizeBytes =
|
||||||
|
@ -2771,7 +2773,7 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (address == null) {
|
if (address == null) {
|
||||||
address = getPreferredSectionLoadAddress(elfSectionToLoad);
|
address = getSectionLoadAddress(elfSectionToLoad);
|
||||||
}
|
}
|
||||||
AddressSpace space = address.getAddressSpace();
|
AddressSpace space = address.getAddressSpace();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue