Sync swift demangler syntax with Apple one and force trylib=0 in r2r.c

This commit is contained in:
Sergi Àlvarez i Capilla 2021-10-05 10:10:32 +02:00
parent f427fc77cd
commit 6969ee42ee
5 changed files with 11 additions and 13 deletions

View File

@ -333,6 +333,7 @@ int main(int argc, char **argv) {
}
atexit (r2r_subprocess_fini);
r_sys_setenv ("RABIN2_TRYLIB", "0");
r_sys_setenv ("TZ", "UTC");
ut64 time_start = r_time_now_mono ();
R2RState state = {{0}};

View File

@ -21,7 +21,7 @@ struct Type {
static struct Type types[] = {
/* basic types */
{ "Sb", "Bool" },
{ "SS", "String" },
{ "SS", "Swift.String" },
{ "FS", "String" },
{ "GV", "mutableAddressor" }, // C_ARGC
{ "Ss", "generic" }, // C_ARGC
@ -36,7 +36,6 @@ static struct Type types[] = {
{ "SQ", "ImplicitlyUnwrappedOptional" },
{ "Sc", "UnicodeScalar" },
{ "Sd", "Double" },
{ "SS", "String" }, // Swift.String
/* builtin */
{ "Bi1", "Builtin.Int1" },
{ "Bp", "Builtin.RawPointer" },
@ -276,8 +275,8 @@ R_API char *r_bin_demangle_swift(const char *s, bool syscmd, bool trylib) {
// _TF or __TW
if (IS_DIGIT (*p) || *p == 'v' || *p == 'I' || *p == 'o' || *p == 'T' || *p == 'V' || *p == 'M' || *p == 'C' || *p == 'F' || *p == 'W') {
if (!strncmp (p+1, "SS", 2)) {
strcat (out, "Swift.String.init (");
if (!strncmp (p + 1, "SS", 2)) {
strcat (out, "Swift.String.init(");
p += 3;
}
if (!strncmp (p, "vdv", 3)) {
@ -422,7 +421,6 @@ R_API char *r_bin_demangle_swift(const char *s, bool syscmd, bool trylib) {
if (attr) {
strcat (out, attr);
}
//p = q + 7;
q = p = q + 1;
attr = "";
break;
@ -584,13 +582,12 @@ R_API char *r_bin_demangle_swift(const char *s, bool syscmd, bool trylib) {
p = outstr;
for (;;) {
p = strstr (p, ")(");
if (p) {
p[0] = '_';
p[1] = '_';
p+=2;
} else {
if (!p) {
break;
}
p[0] = '_';
p[1] = '_';
p += 2;
}
return outstr;
#endif

View File

@ -1495,7 +1495,7 @@ NAME=iD
FILE=bins/elf/libmagic.so
CMDS=iD swift _TFSSCfT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS
EXPECT=<<EOF
Swift.String.init (_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) -> String
Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String
EOF
RUN

View File

@ -11,6 +11,6 @@ FILE=bins/elf/analysis/hello-swift
ARGS=-e bin.demangle.trylib=false
CMDS=isq~0x004009e0
EXPECT=<<EOF
0x004009e0 16 Swift.String.init (_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) -> String
0x004009e0 16 Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String
EOF
RUN

View File

@ -879,7 +879,7 @@ NAME=rabin2 -D swift
FILE=bins/elf/libc.so.0
CMDS=!rabin2 -D swift _TFSSCfT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS
EXPECT=<<EOF
Swift.String.init (_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) -> String
Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String
EOF
RUN