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

Reply via email to