blob: 44f26639371fe6ca067f5a4ab1eb2cdcad909328 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 EfficiOS Inc., Alexandre Montplaisir
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.tracecompass.lttng2.ust.core.analysis.debuginfo;
import java.util.Objects;
import org.eclipse.jdt.annotation.Nullable;
/**
* Simple extension to {@link UstDebugInfoBinaryFile} that adds the base address at
* which the given binary or library is loaded.
*
* @author Alexandre Montplaisir
* @noreference Meant to be used internally by the analysis only
*/
public class UstDebugInfoLoadedBinaryFile extends UstDebugInfoBinaryFile {
private final long fBaseAddress;
private final long fStartValidity;
private final long fEndValidity;
/**
* Constructor
*
* @param baseAddress
* The base address at which the binary or library is loaded
* @param filePath
* The binary's path on the filesystem.
* @param buildId
* The binary's unique buildID (in base16 form).
* @param debugLink
* Path to the binary's separate debug info.
* @param isPic
* Whether the code in the binary is position-independent.
*/
public UstDebugInfoLoadedBinaryFile(long baseAddress, String filePath,
@Nullable String buildId, @Nullable String debugLink,
boolean isPic) {
this(baseAddress, filePath, buildId, debugLink, isPic, 0, 0);
}
/**
* Constructor
*
* @param baseAddress
* The base address at which the binary or library is loaded
* @param filePath
* The binary's path on the filesystem.
* @param buildId
* The binary's unique buildID (in base16 form).
* @param debugLink
* Path to the binary's separate debug info.
* @param isPic
* Whether the code in the binary is position-independent.
* @param startValidity
* The timestamp at which this binary file becomes valid.
* @param endValidity
* The timestamp at which this binary file becomes invalid.
*/
public UstDebugInfoLoadedBinaryFile(long baseAddress, String filePath,
@Nullable String buildId, @Nullable String debugLink,
boolean isPic, long startValidity, long endValidity) {
super(filePath, buildId, debugLink, isPic);
this.fBaseAddress = baseAddress;
fStartValidity = startValidity;
fEndValidity = endValidity;
}
/**
* Return the base address at which the object is loaded.
*
* @return The base address
*/
public long getBaseAddress() {
return fBaseAddress;
}
/**
* Return the timestamp at which this binary file is loaded
*
* @return The timestamp
*/
public long getValidityStart() {
return fStartValidity;
}
/**
* Return the timestamp at which this binary file is loaded
*
* @return The timestamp
*/
public long getValidityEnd() {
return fEndValidity;
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), fBaseAddress);
}
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(getClass().equals(obj.getClass()))) {
return false;
}
if (!super.equals(obj)) {
return false;
}
UstDebugInfoLoadedBinaryFile other = (UstDebugInfoLoadedBinaryFile) obj;
return Objects.equals(fBaseAddress, other.fBaseAddress);
}
}