diff --git a/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java b/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java index afaac89556..7a97a642ec 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java @@ -494,7 +494,18 @@ public class FlatProgramAPI { } /** - * @deprecated use {@link #createLabel(Address, String, boolean, SourceType)} instead. Deprecated in Ghidra 7.4 + * Creates a label at the specified address in the global namespace. + * If makePrimary==true, then the new label is made primary. + * If makeUnique==true, then if the name is a duplicate, the address + * will be concatenated to name to make it unique. + * @param address the address to create the symbol + * @param name the name of the symbol + * @param makePrimary true if the symbol should be made primary + * @param makeUnique ignored + * @param sourceType the source type. + * @return the newly created code or function symbol + * @throws Exception if there is any exception + * @deprecated use {@link #createLabel(Address, String, boolean, SourceType)} instead */ @Deprecated(since = "7.4", forRemoval = true) public final Symbol createSymbol(Address address, String name, boolean makePrimary, @@ -683,12 +694,13 @@ public class FlatProgramAPI { } /** - * Finds the first occurrence of the byte array sequence that matches the given byte string, + * Finds the first occurrence of the byte array sequence that matches the given byte regex, * starting from the address. If the start address is null, then the find will start * from the minimum address of the program. *
- * The byteString may contain regular expressions. The following
- * highlights some example search strings (note the use of double backslashes ("\\")):
+ * The {@code byteRegex} may contain special regular expression characters that need to be
+ * escaped accordingly. The following highlights some example search strings (note the use of
+ * double backslashes ("\\")):
*
* "\\x80" - A basic search pattern for a byte value of 0x80
* "\\x50.{0,10}\\x55" - A regular expression string that searches for the byte 0x50
@@ -698,13 +710,13 @@ public class FlatProgramAPI {
*
* @param start the address to start searching. If null, then the start of the program
* will be used.
- * @param byteString the byte pattern for which to search
+ * @param byteRegex the byte pattern regex for which to search
* @return the first address where the byte was found, or null if the bytes were not found
- * @throws IllegalArgumentException if the byteString is not a valid regular expression
+ * @throws IllegalArgumentException if {@code byteRegex} is not a valid regular expression
* @see #findBytes(Address, String, int)
*/
- public final Address findBytes(Address start, String byteString) {
- Address[] matchingAddresses = findBytes(start, byteString, 1);
+ public final Address findBytes(Address start, String byteRegex) {
+ Address[] matchingAddresses = findBytes(start, byteRegex, 1);
if (matchingAddresses.length == 0) {
return null;
}
@@ -713,11 +725,12 @@ public class FlatProgramAPI {
/**
* Finds the first {@code } occurrences of the byte array sequence that matches
- * the given byte string, starting from the address. If the start address is null, then the
+ * the given byte regex, starting from the address. If the start address is null, then the
* find will start from the minimum address of the program.
*
- * The byteString may contain regular expressions. The following
- * highlights some example search strings (note the use of double backslashes ("\\")):
+ * The {@code byteRegex} may contain special regular expression characters that need to be
+ * escaped accordingly. The following highlights some example search strings (note the use of
+ * double backslashes ("\\")):
*
* "\\x80" - A basic search pattern for a byte value of 0x80
* "\\x50.{0,10}\\x55" - A regular expression string that searches for the byte 0x50
@@ -727,23 +740,24 @@ public class FlatProgramAPI {
*
* @param start the address to start searching. If null, then the start of the program
* will be used.
- * @param byteString the byte pattern for which to search
+ * @param byteRegex the byte pattern regex for which to search
* @param matchLimit The number of matches to which the search should be restricted
- * @return the start addresses that contain byte patterns that match the given byteString
- * @throws IllegalArgumentException if the byteString is not a valid regular expression
+ * @return the start addresses that contain byte patterns that match the given byte regex
+ * @throws IllegalArgumentException if {@code byteRegex} is not a valid regular expression
* @see #findBytes(Address, String)
*/
- public final Address[] findBytes(Address start, String byteString, int matchLimit) {
- return findBytes(start, byteString, matchLimit, 1);
+ public final Address[] findBytes(Address start, String byteRegex, int matchLimit) {
+ return findBytes(start, byteRegex, matchLimit, 1);
}
/**
* Finds the first {@code } occurrences of the byte array sequence that matches
- * the given byte string, starting from the address. If the start address is null, then the
+ * the given byte regex, starting from the address. If the start address is null, then the
* find will start from the minimum address of the program.
*
- * The byteString may contain regular expressions. The following
- * highlights some example search strings (note the use of double backslashes ("\\")):
+ * The {@code byteRegex} may contain special regular expression characters that need to be
+ * escaped accordingly. The following highlights some example search strings (note the use of
+ * double backslashes ("\\")):
*
* "\\x80" - A basic search pattern for a byte value of 0x80
* "\\x50.{0,10}\\x55" - A regular expression string that searches for the byte 0x50
@@ -753,16 +767,16 @@ public class FlatProgramAPI {
*
* @param start the address to start searching. If null, then the start of the program
* will be used.
- * @param byteString the byte pattern for which to search
+ * @param byteRegex the byte regex pattern for which to search
* @param matchLimit The number of matches to which the search should be restricted
* @param alignment byte alignment to use for search starts. For example, a value of
* 1 searches from every byte. A value of 2 only matches runs that begin on a even
* address boundary.
- * @return the start addresses that contain byte patterns that match the given byteString
- * @throws IllegalArgumentException if the byteString is not a valid regular expression
+ * @return the start addresses that contain byte patterns that match the given byte regex
+ * @throws IllegalArgumentException if {@code byteRegex} is not a valid regular expression
* @see #findBytes(Address, String)
*/
- public final Address[] findBytes(Address start, String byteString, int matchLimit,
+ public final Address[] findBytes(Address start, String byteRegex, int matchLimit,
int alignment) {
if (start == null) {
@@ -777,17 +791,18 @@ public class FlatProgramAPI {
AddressFactory factory = currentProgram.getAddressFactory();
AddressSet addressRange = factory.getAddressSet(start, memory.getMaxAddress());
- Address[] bytes = findBytes(addressRange, byteString, matchLimit, alignment, false);
+ Address[] bytes = findBytes(addressRange, byteRegex, matchLimit, alignment, false);
return bytes;
}
/**
- * Finds a byte pattern within an addressSet.
+ * Finds a byte regex pattern within an addressSet.
*
* Note: The ranges within the addressSet are NOT treated as a contiguous set when searching
*
- * The byteString may contain regular expressions. The following
- * highlights some example search strings (note the use of double backslashes ("\\")):
+ * The {@code byteRegex} may contain special regular expression characters that need to be
+ * escaped accordingly. The following highlights some example search strings (note the use of
+ * double backslashes ("\\")):
*
* "\\x80" - A basic search pattern for a byte value of 0x80
* "\\x50.{0,10}\\x55" - A regular expression string that searches for the byte 0x50
@@ -796,16 +811,16 @@ public class FlatProgramAPI {
*
*
* @param set the addressSet specifying which addresses to search.
- * @param byteString the byte pattern for which to search
+ * @param byteRegex the byte regex pattern for which to search
* @param matchLimit The number of matches to which the search should be restricted
* @param alignment byte alignment to use for search starts. For example, a value of
* 1 searches from every byte. A value of 2 only matches runs that begin on a even
* address boundary.
* @return the start addresses that contain byte patterns that match the given byteString
- * @throws IllegalArgumentException if the byteString is not a valid regular expression
+ * @throws IllegalArgumentException if {@code byteRegex} is not a valid regular expression
* @see #findBytes(Address, String)
*/
- public final Address[] findBytes(AddressSetView set, String byteString, int matchLimit,
+ public final Address[] findBytes(AddressSetView set, String byteRegex, int matchLimit,
int alignment) {
if (matchLimit <= 0) {
@@ -813,7 +828,7 @@ public class FlatProgramAPI {
}
SearchSettings settings = new SearchSettings().withAlignment(alignment);
- ByteMatcher matcher = new RegExByteMatcher(byteString, settings);
+ ByteMatcher matcher = new RegExByteMatcher(byteRegex, settings);
AddressableByteSource byteSource = new ProgramByteSource(currentProgram);
Memory memory = currentProgram.getMemory();
AddressSet intersection = memory.getLoadedAndInitializedAddressSet().intersect(set);
@@ -838,12 +853,13 @@ public class FlatProgramAPI {
* blocks have been defined), is no longer supported. If this capability has value to anyone,
* please contact the Ghidra team and let us know.
*
- * Finds a byte pattern within an addressSet.
+ * Finds a byte regex pattern within an addressSet.
*
* Note: The ranges within the addressSet are NOT treated as a contiguous set when searching
*
- * The byteString may contain regular expressions. The following
- * highlights some example search strings (note the use of double backslashes ("\\")):
+ * The {@code byteRegex} may contain special regular expression characters that need to be
+ * escaped accordingly. The following highlights some example search strings (note the use of
+ * double backslashes ("\\")):
*
* "\\x80" - A basic search pattern for a byte value of 0x80
* "\\x50.{0,10}\\x55" - A regular expression string that searches for the byte 0x50
@@ -852,7 +868,7 @@ public class FlatProgramAPI {
*
*
* @param set the addressSet specifying which addresses to search.
- * @param byteString the byte pattern for which to search
+ * @param byteRegex the byte regex pattern for which to search
* @param matchLimit The number of matches to which the search should be restricted
* @param alignment byte alignment to use for search starts. For example, a value of
* 1 searches from every byte. A value of 2 only matches runs that begin on a even
@@ -860,16 +876,16 @@ public class FlatProgramAPI {
* @param searchAcrossAddressGaps This parameter is no longer supported and its value is
* ignored. Previously, if true, match results were allowed to span non-continguous memory
* ranges.
- * @return the start addresses that contain byte patterns that match the given byteString
- * @throws IllegalArgumentException if the byteString is not a valid regular expression
+ * @return the start addresses that contain byte patterns that match the given byte regex
+ * @throws IllegalArgumentException if {@code byteRegex} is not a valid regular expression
* @see #findBytes(Address, String)
*
* @deprecated see description for details.
*/
@Deprecated(since = "11.3", forRemoval = true)
- public final Address[] findBytes(AddressSetView set, String byteString, int matchLimit,
+ public final Address[] findBytes(AddressSetView set, String byteRegex, int matchLimit,
int alignment, boolean searchAcrossAddressGaps) {
- return findBytes(set, byteString, matchLimit, alignment);
+ return findBytes(set, byteRegex, matchLimit, alignment);
}
/**