1

我有一个与 -bind_at_load 参数链接到 ld 的二进制文件。在 ELF 系统上,我会使用 -Wl,-z,now 然后 readelf 来验证二进制文件上是否启用了 DT_BIND_NOW 标志。在 OS X 上,我如何验证 mach 标头中的适当标志是否已遵守 -bind_at_load?标志的名称是什么,应该设置什么值?

4

1 回答 1

1

您可以使用otool -l /path/to/binary和检查LC_DYLD_INFO_ONLYload 命令。如果二进制文件与 链接-bind_at_load,则延迟绑定偏移量/大小等于 0:dyld不会延迟绑定符号,并且在加载二进制文件时会绑定所有符号。

样本输出:

  • -bind_at_load

    Load command 4
                cmd LC_DYLD_INFO_ONLY
            cmdsize 48
         rebase_off 8192
        rebase_size 8
           bind_off 8200
          bind_size 224
      weak_bind_off 0
     weak_bind_size 0
      lazy_bind_off 0
     lazy_bind_size 0
         export_off 8424
        export_size 48
    
  • 没有-bind_at_load

    Load command 4
                cmd LC_DYLD_INFO_ONLY
            cmdsize 48
         rebase_off 8192
        rebase_size 8
           bind_off 8200
          bind_size 128
      weak_bind_off 0
     weak_bind_size 0
      lazy_bind_off 8328
     lazy_bind_size 104
         export_off 8432
        export_size 48
    
于 2013-06-14T18:09:17.343 回答