@@ -692,6 +692,42 @@ static DecodeStatus DecodeLazyLoadStoreMul(MCInst &Inst, unsigned Insn,
692
692
uint64_t Address,
693
693
const MCDisassembler *Decoder);
694
694
695
+ // / tryAddingSymbolicOperand - trys to add a symbolic operand in place of the
696
+ // / immediate Value in the MCInst. The immediate Value has had any PC
697
+ // / adjustment made by the caller. If the instruction is a branch instruction
698
+ // / then isBranch is true, else false. If the getOpInfo() function was set as
699
+ // / part of the setupForSymbolicDisassembly() call then that function is called
700
+ // / to get any symbolic information at the Address for this instruction. If
701
+ // / that returns non-zero then the symbolic information it returns is used to
702
+ // / create an MCExpr and that is added as an operand to the MCInst. If
703
+ // / getOpInfo() returns zero and isBranch is true then a symbol look up for
704
+ // / Value is done and if a symbol is found an MCExpr is created with that, else
705
+ // / an MCExpr with Value is created. This function returns true if it adds an
706
+ // / operand to the MCInst and false otherwise.
707
+ static bool tryAddingSymbolicOperand (uint64_t Address, int32_t Value,
708
+ bool isBranch, uint64_t InstSize,
709
+ MCInst &MI,
710
+ const MCDisassembler *Decoder) {
711
+ // FIXME: Does it make sense for value to be negative?
712
+ return Decoder->tryAddingSymbolicOperand (MI, (uint32_t )Value, Address,
713
+ isBranch, /* Offset=*/ 0 , /* OpSize=*/ 0 ,
714
+ InstSize);
715
+ }
716
+
717
+ // / tryAddingPcLoadReferenceComment - trys to add a comment as to what is being
718
+ // / referenced by a load instruction with the base register that is the Pc.
719
+ // / These can often be values in a literal pool near the Address of the
720
+ // / instruction. The Address of the instruction and its immediate Value are
721
+ // / used as a possible literal pool entry. The SymbolLookUp call back will
722
+ // / return the name of a symbol referenced by the literal pool's entry if
723
+ // / the referenced address is that of a symbol. Or it will return a pointer to
724
+ // / a literal 'C' string if the referenced address of the literal pool's entry
725
+ // / is an address into a section with 'C' string literals.
726
+ static void tryAddingPcLoadReferenceComment (uint64_t Address, int Value,
727
+ const MCDisassembler *Decoder) {
728
+ Decoder->tryAddingPcLoadReferenceComment (Value, Address);
729
+ }
730
+
695
731
#include " ARMGenDisassemblerTables.inc"
696
732
697
733
static MCDisassembler *createARMDisassembler (const Target &T,
@@ -832,42 +868,6 @@ DecodeStatus ARMDisassembler::getARMInstruction(MCInst &MI, uint64_t &Size,
832
868
return MCDisassembler::Fail;
833
869
}
834
870
835
- // / tryAddingSymbolicOperand - trys to add a symbolic operand in place of the
836
- // / immediate Value in the MCInst. The immediate Value has had any PC
837
- // / adjustment made by the caller. If the instruction is a branch instruction
838
- // / then isBranch is true, else false. If the getOpInfo() function was set as
839
- // / part of the setupForSymbolicDisassembly() call then that function is called
840
- // / to get any symbolic information at the Address for this instruction. If
841
- // / that returns non-zero then the symbolic information it returns is used to
842
- // / create an MCExpr and that is added as an operand to the MCInst. If
843
- // / getOpInfo() returns zero and isBranch is true then a symbol look up for
844
- // / Value is done and if a symbol is found an MCExpr is created with that, else
845
- // / an MCExpr with Value is created. This function returns true if it adds an
846
- // / operand to the MCInst and false otherwise.
847
- static bool tryAddingSymbolicOperand (uint64_t Address, int32_t Value,
848
- bool isBranch, uint64_t InstSize,
849
- MCInst &MI,
850
- const MCDisassembler *Decoder) {
851
- // FIXME: Does it make sense for value to be negative?
852
- return Decoder->tryAddingSymbolicOperand (MI, (uint32_t )Value, Address,
853
- isBranch, /* Offset=*/ 0 , /* OpSize=*/ 0 ,
854
- InstSize);
855
- }
856
-
857
- // / tryAddingPcLoadReferenceComment - trys to add a comment as to what is being
858
- // / referenced by a load instruction with the base register that is the Pc.
859
- // / These can often be values in a literal pool near the Address of the
860
- // / instruction. The Address of the instruction and its immediate Value are
861
- // / used as a possible literal pool entry. The SymbolLookUp call back will
862
- // / return the name of a symbol referenced by the literal pool's entry if
863
- // / the referenced address is that of a symbol. Or it will return a pointer to
864
- // / a literal 'C' string if the referenced address of the literal pool's entry
865
- // / is an address into a section with 'C' string literals.
866
- static void tryAddingPcLoadReferenceComment (uint64_t Address, int Value,
867
- const MCDisassembler *Decoder) {
868
- Decoder->tryAddingPcLoadReferenceComment (Value, Address);
869
- }
870
-
871
871
// Thumb1 instructions don't have explicit S bits. Rather, they
872
872
// implicitly set CPSR. Since it's not represented in the encoding, the
873
873
// auto-generated decoder won't inject the CPSR operand. We need to fix
0 commit comments