mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-3302 corrected EXTERNAL thunk function creation which resulted in
duplciate symbol
This commit is contained in:
@@ -16,10 +16,7 @@
|
|||||||
package ghidra.app.cmd.function;
|
package ghidra.app.cmd.function;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import ghidra.app.util.PseudoDisassembler;
|
import ghidra.app.util.PseudoDisassembler;
|
||||||
@@ -27,11 +24,7 @@ import ghidra.framework.cmd.BackgroundCommand;
|
|||||||
import ghidra.framework.model.DomainObject;
|
import ghidra.framework.model.DomainObject;
|
||||||
import ghidra.program.database.function.OverlappingFunctionException;
|
import ghidra.program.database.function.OverlappingFunctionException;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.program.model.block.BasicBlockModel;
|
import ghidra.program.model.block.*;
|
||||||
import ghidra.program.model.block.CodeBlock;
|
|
||||||
import ghidra.program.model.block.CodeBlockReference;
|
|
||||||
import ghidra.program.model.block.CodeBlockReferenceIterator;
|
|
||||||
import ghidra.program.model.block.SimpleBlockModel;
|
|
||||||
import ghidra.program.model.data.DataType;
|
import ghidra.program.model.data.DataType;
|
||||||
import ghidra.program.model.lang.Register;
|
import ghidra.program.model.lang.Register;
|
||||||
import ghidra.program.model.lang.RegisterValue;
|
import ghidra.program.model.lang.RegisterValue;
|
||||||
@@ -695,6 +688,7 @@ public class CreateThunkFunctionCmd extends BackgroundCommand {
|
|||||||
ExternalManager extMgr = program.getExternalManager();
|
ExternalManager extMgr = program.getExternalManager();
|
||||||
ExternalLocation extLoc =
|
ExternalLocation extLoc =
|
||||||
extMgr.addExtFunction(Library.UNKNOWN, s.getName(), null, s.getSource());
|
extMgr.addExtFunction(Library.UNKNOWN, s.getName(), null, s.getSource());
|
||||||
|
s.delete(); // remove original symbol from EXTERNAL block
|
||||||
return extLoc.getExternalSpaceAddress();
|
return extLoc.getExternalSpaceAddress();
|
||||||
}
|
}
|
||||||
catch (DuplicateNameException | InvalidInputException e) {
|
catch (DuplicateNameException | InvalidInputException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user