error wrapping binary: Insufficient size available in the Mach-O header

  • Hey guys,
    I recently started having an issue on my MAC when wrapping a binary.
    Insufficient size available in the Mach-O header for the operation. The desired new command size is 232, but only 152 bytes are available in the header.
    Have you guys seen this before?
    Gonna reach out to Pace now since this just started happening (no changes to my system)

    wraptool Error: pace::eden::thrift::exception::PaceThriftExceptionWire: MachOException::InsufficientHeaderPad, 12, Insufficient size available in the Mach-O header for the operation. Please try again after rebuilding the binary with the following header pad setting:
    OTHER_LDFLAGS = -Xlinker -headerpad -Xlinker 800, MachOHeader.cpp, line 2780, function: pace::macho::MachOSegmentCommand *pace::macho::MachOHeader::AddSegment(const std::string &, const PaceUIntMax_T, const void *, const PaceUIntMax_T, const vm_prot_t, const vm_prot_t, const uint32_t, pace::macho::MachOSectionContainer *, uint32_t *), The desired new command size is 232, but only 152 bytes are available in the header.

    I forgot to mention that this only appears with VST3 plugins. AAX wraps fine, and AU gives me some warnings about x86 stuff but successfully wraps.

    EDIT 2:
    Just created a simple VST3 test with one sampler + slider. It wraps properly.... so there's something in my current project that is creating the error 😞
    @Christoph-Hart do you have any ideas what would be affecting the Mach-O header size?

  • Looks like this is caused by setting the Export Format to "All Formats".
    Exporting individually (aax, vst, au) causes no errors when wrapping.

  • @dustbro I remember reading the PACE doc about header pad that can be too small sometimes to embed the signature. I don't remember more but there's might be more info on how to solve that issue in the doc...

  • @ustk It seems to be the way "export all formats" works.
    When I look at Terminal, it exports in this order:

    When I go to wrap:
    AAX - wraps properly
    AU - gives errors about some Eden code missing, but wraps anyway
    VST3 - throws an error and doesn't wrap at all.

    Looks like the problem gets worse as it heads down stream.

    I'm compiling and wrapping fine when i export each format separately.

  • @dustbro That's weird... It means the builds are a bit different somehow 🤔

  • @ustk They each use a different SDK.

  • @d-healey Of course they are. I mean between identical format, depending on whether your export everything at once or separately like @dustbro said…

  • @ustk Could be to do with intermediate files that are created each time, maybe exporting all at once doesn't clear them before compiling.

  • @Christoph-Hart I have a project that I just can't seem to wrap, no matter what I do. It's been hit or miss in the past. Sometimes it'll fail, and then I build again and it wraps fine (with no changes).
    I've tried to manually add the OTHER_LDFLAGS, but doesn't help. Is there anything you can implement to increase the Mach-O header pad by default?

  • Sorry I have no idea about anything related to PACE / iLok except for signing AAX plugins but maybe the JUCE forum would be a good place to ask since this is nothing particular to HISE and I'm sure there are a few developers who faced this problem.

  • @Christoph-Hart I was able to wrap by adding the flags to both the project AND AAX builds. I'm gonna explore a little more when I get some free time.

  • commenting for the next time I forget how to do this 😂

Log in to reply