sscanf在mips平台上无法正常工作

时间:2013-04-17 09:08:16

标签: mips scanf

以下代码适用于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工具链进行编译。有人可以帮忙。

1 个答案:

答案 0 :(得分:0)

C代码在SunOS上生成分段错误。所以它适用于Linux,但不适用于RISC架构lijke MIPS(?)。您应该调查使用gdb调试器的原因,因此请使用命令man gdb或运行gdb并插入断点,否则我将将其作为练习。

相关问题