Clang and -mcmodel=large

Hello all,

I’m developing a hobby kernel for x86-64 machines,
and I put the kernel into the higher half.

I’m trying to switch from GCC to Clang, but it seems
that the latter doesn’t support the -mcmodel=large
option, which is required in order to put the kernel
at the 0xFFFF800000000000 in virtual memory,
as specified in my linker script:
http://pastebin.com/f2f9e0112

Any workarounds or plans for implementing that feature
in the Clang compiler?

Andrea Orrù wrote:

Hello all,

I'm developing a hobby kernel for x86-64 machines,
and I put the kernel into the higher half.

I'm trying to switch from GCC to Clang, but it seems
that the latter doesn't support the -mcmodel=large
option, which is required in order to put the kernel
at the 0xFFFF800000000000 in virtual memory,
as specified in my linker script:
ENTRY(kmain) SECTIONS - Pastebin.com

Any workarounds or plans for implementing that feature
in the Clang compiler?

Does Clang proper even care about the memory model? I think this is more
an issue for LLVM core than Clang.

Sebastian

Do you confirm that? Do I have to put the same question in the llvm mailing list?

2009/6/7 Sebastian Redl <sebastian.redl@getdesigned.at>

Well, no. If you’re getting:

clang: warning: argument unused during compilation: ‘-mcmodel=large’

Then it’s an issue with clang not honoring the option and passing it through to the backend codegen layers.

Shantonu

No, nothing from clang.

2009/6/7 Shantonu Sen <ssen@apple.com>

Try passing "-mllvm -code-model=large" to clang.

-Eli

The support for large code model in LLVM x86_64 backend is incomplete.

Evan