Code to read the `jl_compileropts` structure in julia at runtime

June 7, 2014 ยท View on GitHub

#!/usr/bin/env julia

immutable jl_compileropts build_path::ASCIIString cpu_target::ASCIIString code_coverage::Int8 check_bounds::Int8 int_literals::Int32 end

function load_compileropts() opts_addr = cglobal(:jl_compileropts)

build_path = unsafe_load(convert(Ptr{Ptr{Uint8}}, opts_addr))
if build_path != C_NULL
	build_path = bytestring(build_path)
else
	build_path = ""
end
opts_addr += sizeof(Ptr{Uint8})

cpu_target = unsafe_load(convert(Ptr{Ptr{Uint8}}, opts_addr))
if cpu_target != C_NULL
	cpu_target = bytestring(cpu_target)
else
	cpu_target = ""
end
opts_addr += sizeof(Ptr{Uint8})

code_coverage = unsafe_load(convert(Ptr{Int8}, opts_addr))
opts_addr += sizeof(Int8)

check_bounds = unsafe_load(convert(Ptr{Int8}, opts_addr))
opts_addr += sizeof(Int8)

int_literals = unsafe_load(convert(Ptr{Int32}, opts_addr))
opts_addr += sizeof(Int32)

return jl_compileropts(build_path, cpu_target, code_coverage, check_bounds, int_literals)

end

println("cpu_target: $(load_compileropts().cpu_target)")