C Binding Question: LLVMCreateExecutionEngineForModule takes a char**

I was wondering if the usage of char** in LLVM C bindings mostly for outMessages is designed correctly as a C function interface.

It’s unclear if the buffer should be caller-allocated or callee-allocated. If it’s caller-allocated, how does the caller know how big the buffer to be?

But if it’s callee-allocated, how does one dispose the memory?

Maybe I’m missing a piece of documentation, but it either seems a design flaw, or we’re sticking with it for backward compat reasons?