[llvm-c] LLVMInitializeNativeTarget not exported in shared library

Dear LLVM devs (and other subscribers),

when building llvm as a shared library (so or dll, tested with both) and then performing objdump
on the resulting library will reveal that LLVMInitializeNativeTarget does not get exported
("objdump -x libLLVM-3.3svn.so | grep LLVMInitializeNativeTarget" will return without any output).

As far as I can tell this is because the function is marked as inline at its definition in
which afaik (correct me if I'm wrong here) means that for each call to the function its body
will be copied to the call location when compiling/linking with other c/c++ code,
instead of being compiled as a normal function call (in addition it allows the function body
to be defined directly in the header, instead of a c/cpp file);
That in turn means the compiler won't export a symbol for this function, making it
inaccessible for other C compatible languages that use the shared library.

Applying a visibiliy attribute of default to the functio
i.e. changing
static inline LLVMBool LLVMInitializeNativeTarget(void) {
__attribute__((visibility("default"))) static inline LLVMBool LLVMInitializeNativeTarget(void) {
doesn't work because -fvisibility-inlines-hidden seems to get handed down from the top Makefile.

The solution to this may be simple, but I cannot see it right now, so I would be grateful
if anyone knows how to get LLVMInitializeNativeTarget to be exported properly (other
than to remove the inline and make it a normal function, because I think there was a reason
it was made inline originally), because with this afaict a llvm shared lib cannot be used
for jitting via the c api from non-c, c-compatible languages.

-- Moritz