Adaptation to changes in libraries
This commit is contained in:
		| @@ -94,7 +94,9 @@ template <typename ARCH> struct riscv_target_adapter : public target_adapter_bas | ||||
|  | ||||
|     status remove_break(int type, uint64_t addr, unsigned int length) override; | ||||
|  | ||||
|     status resume_from_addr(bool step, int sig, uint64_t addr) override; | ||||
|     status resume_from_addr(bool step, int sig, uint64_t addr, rp_thread_ref thread, std::function<void(unsigned)> stop_callback) override; | ||||
|  | ||||
|     status target_xml_query(std::string& out_buf) override; | ||||
|  | ||||
| protected: | ||||
|     static inline constexpr addr_t map_addr(const addr_t &i) { return i; } | ||||
| @@ -157,6 +159,11 @@ status riscv_target_adapter<ARCH>::read_registers(std::vector<uint8_t> &data, st | ||||
|             data.push_back(*(reg_base + offset + j)); | ||||
|             avail.push_back(0xff); | ||||
|         } | ||||
| //        if(arch::traits<ARCH>::XLEN < 64) | ||||
| //            for(unsigned j=0; j<4; ++j){ | ||||
| //                data.push_back(0); | ||||
| //                avail.push_back(0xff); | ||||
| //            } | ||||
|     } | ||||
|     // work around fill with F type registers | ||||
|     if (arch::traits<ARCH>::NUM_REGS < 65) { | ||||
| @@ -166,6 +173,11 @@ status riscv_target_adapter<ARCH>::read_registers(std::vector<uint8_t> &data, st | ||||
|                 data.push_back(0x0); | ||||
|                 avail.push_back(0x00); | ||||
|             } | ||||
| //            if(arch::traits<ARCH>::XLEN < 64) | ||||
| //                for(unsigned j=0; j<4; ++j){ | ||||
| //                    data.push_back(0x0); | ||||
| //                    avail.push_back(0x00); | ||||
| //                } | ||||
|         } | ||||
|     } | ||||
|     return Ok; | ||||
| @@ -292,10 +304,10 @@ template <typename ARCH> status riscv_target_adapter<ARCH>::add_break(int type, | ||||
| template <typename ARCH> status riscv_target_adapter<ARCH>::remove_break(int type, uint64_t addr, unsigned int length) { | ||||
|     auto saddr = map_addr({iss::CODE, iss::PHYSICAL, addr}); | ||||
|     unsigned handle = target_adapter_base::bp_lut.getEntry(saddr.val); | ||||
|     // TODO: check length of addr range | ||||
|     if (handle) { | ||||
|         LOG(TRACE) << "Removing breakpoint with handle " << handle << " for addr 0x" << std::hex << saddr.val | ||||
|                    << std::dec; | ||||
|         // TODO: check length of addr range | ||||
|         target_adapter_base::bp_lut.removeEntry(handle); | ||||
|         LOG(TRACE) << "Now having " << target_adapter_base::bp_lut.size() << " breakpoints"; | ||||
|         return Ok; | ||||
| @@ -304,13 +316,102 @@ template <typename ARCH> status riscv_target_adapter<ARCH>::remove_break(int typ | ||||
|     return Err; | ||||
| } | ||||
|  | ||||
| template <typename ARCH> status riscv_target_adapter<ARCH>::resume_from_addr(bool step, int sig, uint64_t addr) { | ||||
| template <typename ARCH> status riscv_target_adapter<ARCH>::resume_from_addr(bool step, int sig, uint64_t addr, rp_thread_ref thread, | ||||
|         std::function<void(unsigned)> stop_callback) { | ||||
|     unsigned reg_no = arch::traits<ARCH>::PC; | ||||
|     std::vector<uint8_t> data(8); | ||||
|     *(reinterpret_cast<uint64_t *>(&data[0])) = addr; | ||||
|     core->set_reg(reg_no, data); | ||||
|     return resume_from_current(step, sig); | ||||
|     return resume_from_current(step, sig, thread, stop_callback); | ||||
| } | ||||
| template <typename ARCH> status riscv_target_adapter<ARCH>::target_xml_query(std::string& out_buf) { | ||||
|     const std::string res{ | ||||
|         "<?xml version=\"1.0\"?><!DOCTYPE target SYSTEM \"gdb-target.dtd\">" | ||||
| "<target><architecture>riscv:rv32</architecture>" | ||||
| //"  <feature name=\"org.gnu.gdb.riscv.rv32i\">\n" | ||||
| //"    <reg name=\"x0\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x1\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x2\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x3\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x4\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x5\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x6\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x7\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x8\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x9\"  bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x10\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x11\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x12\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x13\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x14\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x15\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x16\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x17\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x18\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x19\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x20\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x21\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x22\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x23\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x24\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x25\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x26\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x27\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x28\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x29\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x30\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"    <reg name=\"x31\" bitsize=\"32\" group=\"general\"/>\n" | ||||
| //"  </feature>\n" | ||||
| "</target>"}; | ||||
|     out_buf=res; | ||||
|     return Ok; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * | ||||
| <?xml version="1.0"?> | ||||
| <!DOCTYPE target SYSTEM "gdb-target.dtd"> | ||||
| <target> | ||||
|   <architecture>riscv:rv32</architecture> | ||||
|  | ||||
|   <feature name="org.gnu.gdb.riscv.rv32i"> | ||||
|     <reg name="x0"  bitsize="32" group="general"/> | ||||
|     <reg name="x1"  bitsize="32" group="general"/> | ||||
|     <reg name="x2"  bitsize="32" group="general"/> | ||||
|     <reg name="x3"  bitsize="32" group="general"/> | ||||
|     <reg name="x4"  bitsize="32" group="general"/> | ||||
|     <reg name="x5"  bitsize="32" group="general"/> | ||||
|     <reg name="x6"  bitsize="32" group="general"/> | ||||
|     <reg name="x7"  bitsize="32" group="general"/> | ||||
|     <reg name="x8"  bitsize="32" group="general"/> | ||||
|     <reg name="x9"  bitsize="32" group="general"/> | ||||
|     <reg name="x10" bitsize="32" group="general"/> | ||||
|     <reg name="x11" bitsize="32" group="general"/> | ||||
|     <reg name="x12" bitsize="32" group="general"/> | ||||
|     <reg name="x13" bitsize="32" group="general"/> | ||||
|     <reg name="x14" bitsize="32" group="general"/> | ||||
|     <reg name="x15" bitsize="32" group="general"/> | ||||
|     <reg name="x16" bitsize="32" group="general"/> | ||||
|     <reg name="x17" bitsize="32" group="general"/> | ||||
|     <reg name="x18" bitsize="32" group="general"/> | ||||
|     <reg name="x19" bitsize="32" group="general"/> | ||||
|     <reg name="x20" bitsize="32" group="general"/> | ||||
|     <reg name="x21" bitsize="32" group="general"/> | ||||
|     <reg name="x22" bitsize="32" group="general"/> | ||||
|     <reg name="x23" bitsize="32" group="general"/> | ||||
|     <reg name="x24" bitsize="32" group="general"/> | ||||
|     <reg name="x25" bitsize="32" group="general"/> | ||||
|     <reg name="x26" bitsize="32" group="general"/> | ||||
|     <reg name="x27" bitsize="32" group="general"/> | ||||
|     <reg name="x28" bitsize="32" group="general"/> | ||||
|     <reg name="x29" bitsize="32" group="general"/> | ||||
|     <reg name="x30" bitsize="32" group="general"/> | ||||
|     <reg name="x31" bitsize="32" group="general"/> | ||||
|   </feature> | ||||
|  | ||||
| </target> | ||||
|  | ||||
|  */ | ||||
| } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user