相关疑难解决方法(0)

加载Mach-O可执行文件需要什么?

我试图手写一个Mach-O可执行文件.有三个加载命令:

  • LC_SEGMENT_64 装载 __PAGEZERO
  • LC_SEGMENT_64装载__TEXT,单个__text部分
  • LC_UNIXTHREAD 适当的设置 rip

每个命令都匹配结构mach/loader.h和相关标头.otool -l按预期列出信息,不报告任何错误.从各方面来看,它是一个格式良好的目标文件 - 但OS X 10.10.5终止了任务(SIGKILL).

在OS X加载之前,会检查Mach-O可执行文件的哪些功能?这些信息在哪里?这些功能是否会将版本更改为版本?(经常引用的"OS X ABI Mach-O参考"显然是缺失的.)


这是二进制文件的部分注释hexdump.

otool 理智检查(摘录):

$ otool -l machtest
machtest:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __PAGEZERO
…
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 152
  segname __TEXT
…
Section
  sectname __text
   segname __TEXT
…
Load command 2
        cmd LC_UNIXTHREAD
…
Run Code Online (Sandbox Code Playgroud)

mach-o xnu

7
推荐指数
1
解决办法
1295
查看次数

Stack给'dyld:malformed mach-o'

当我尝试运行堆栈时,例如即使只是stack --version,我得到了

dyld: malformed mach-o: load commands size (38712) > 32768
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题.这是在Homebrew最近的一些更新之后开始出现的.

cabal-install haskell-stack

4
推荐指数
1
解决办法
1750
查看次数

标签 统计

cabal-install ×1

haskell-stack ×1

mach-o ×1

xnu ×1