以下代码适用于 x86,但不适用于 mips 平台。
char *str = "11111111-22222222 r-xp 00000000 00:0e 1843624 /lib/libdl.so.0";
unsigned long long start_addr, stop_addr, offset;
char* access = NULL;
char* filename = NULL;
sscanf(str, "%llx-%llx %m[-rwxp] %llx %*[:0-9a-f] %*d %ms",
&start_addr, &stop_addr, &access, &offset, &filename);
printf("\n start : %x, stop : %x, offset : %x\n",start_addr,stop_addr,offset);
printf("\n Permission : %s\n",access);
printf("\n Filename : %s\n",filename);
在 x86 中,它输出:
start : 11111111, stop : 22222222, offset : 0
Permission : r-xp
Filename : /lib/libdl.so.0
但在 mips 中显示:
start : 7ff20f5b, stop : 11111111, offset : 0
Permission : (null)
Filename : (null)
我使用 mipsel-linux-uclibc 工具链进行编译。有人可以帮忙吗。