LLVM JIT machine detection

How does the LLVM JIT determine the ABI and architecture to generate
code for?

I ask because I have an armhf device (running Debian, sort of), except
the JIT is generating soft-float code. This isn't ABI compatible as
parameters are passed in the wrong registers, and so simply doesn't work.

Is this something that I, as an LLVM library user, should not need to
worry about (and therefore the fact that it doesn't work is a
misconfiguration of the LLVM Debian package), or should I be setting up
the JIT somehow?

It is controlled by the TargetTriple which tries to have a good default. You can explicitly sets it by using EngineBuilder::setEnvironment().