I'm doing some modifications to DMD where some symbols need to match
what Clang outputs. I'm trying to figure out how to output absolute and
lazy symbols. Running "nm -m" on the object file compiled with Clang
results in this:
00000000 (absolute) external [no dead strip] .objc_class_name_Foo
(undefined [lazy bound]) external [no dead strip]
.objc_class_name_NSObject
Foo is defined in the object file and NSObject is externally defined. I
had a look at the LLVM source code how these symbols are outputted. LLVM
uses file scope inline assembly for these symbols. The assembly Clang
generates look like this:
.section __TEXT,__text,regular,pure_instructions
## Start of file scope inline assembly
.objc_class_name_Foo=0
.globl .objc_class_name_Foo
.lazy_reference .objc_class_name_NSObject
.lazy_reference .objc_class_name_Foo
## End of file scope inline assembly
The above code is the top of the assembly file.
Does anyone know how to generate the same symbols in DMD?
--
/Jacob Carlborg