[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 12/20] disas/nanomips: Replace std::string type
From: |
Richard Henderson |
Subject: |
Re: [PATCH v2 12/20] disas/nanomips: Replace std::string type |
Date: |
Mon, 5 Sep 2022 12:32:30 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
On 9/5/22 10:55, Milica Lazarevic wrote:
-static std::string save_restore_list(uint64 rt, uint64 count, uint64 gp)
+static char *save_restore_list(uint64 rt, uint64 count, uint64 gp)
{
- std::string str;
+ /*
+ * Currently, this file compiles as a cpp file, so the explicit cast here
+ * is necessary. Later, the cast will be removed.
+ */
+ char *str = (char *)g_malloc(200);
+ str[0] = '\0';
for (uint64 counter = 0; counter != count; counter++) {
bool use_gp = gp && (counter == count - 1);
uint64 this_rt = use_gp ? 28 : ((rt & 0x10) | (rt + counter)) & 0x1f;
- str += img_format(",%s", GPR(this_rt));
+ strcat(str, img_format(",%s", GPR(this_rt)));
}
return str;
}
This would be better written as
char *reg_list[33];
assert(count <= 32);
for (c = 0; c < count; c++) {
bool use_gp = ...
uint64 this_rt = ...
/* glib usage below requires casting away const */
reg_list[c] = (char *)GPR(this_rt);
}
reg_list[count] = NULL;
return g_strjoinv(",", reg_list);
@@ -716,7 +617,7 @@ static uint64 extract_op_code_value(const uint16 *data, int
size)
* instruction size - negative is error
* disassembly string - on error will constain error string
*/
-static int Disassemble(const uint16 *data, std::string & dis,
+static int Disassemble(const uint16 *data, char *dis,
I think this interface should be
char **dis,
so that...
@@ -746,25 +647,26 @@ static int Disassemble(const uint16 *data, std::string &
dis,
* an ASE attribute and the requested version
* not having that attribute
*/
- dis = "ASE attribute mismatch";
+ strcpy(dis, "ASE attribute mismatch");
these become
*dis = g_strdup("string");
and the usage in nanomips_dis does not assume a fixed sized buffer.
r~
- Re: [PATCH v2 07/20] disas/nanomips: Remove Pool tables from the class, (continued)
- [PATCH v2 08/20] disas/nanomips: Remove NMD class, Milica Lazarevic, 2022/09/05
- [PATCH v2 10/20] disas/nanomips: Delete nanomips.h, Milica Lazarevic, 2022/09/05
- [PATCH v2 09/20] disas/nanomips: Move typedefs etc to nanomips.cpp, Milica Lazarevic, 2022/09/05
- [PATCH v2 11/20] disas/nanomips: Remove #inlcude <sstream>, Milica Lazarevic, 2022/09/05
- [PATCH v2 12/20] disas/nanomips: Replace std::string type, Milica Lazarevic, 2022/09/05
- Re: [PATCH v2 12/20] disas/nanomips: Replace std::string type,
Richard Henderson <=
[PATCH v2 13/20] disas/nanomips: Prevent memory leaking, Milica Lazarevic, 2022/09/05
[PATCH v2 14/20] disas/nanomips: Remove function overloading, Milica Lazarevic, 2022/09/05
[PATCH v2 15/20] disas/nanomips: Introduce Dis_info struct, Milica Lazarevic, 2022/09/05
[PATCH v2 16/20] disas/nanomips: Replace exception handling, Milica Lazarevic, 2022/09/05