- OmfObj_alias
void OmfObj_alias(const(char)* n1, const(char)* n2)
Output an alias definition record.
- OmfObj_allowZeroSize
bool OmfObj_allowZeroSize()
Do we allow zero sized objects?
- OmfObj_byte
void OmfObj_byte(int seg, targ_size_t offset, uint _byte)
Output byte to object file.
- OmfObj_bytes
uint OmfObj_bytes(int seg, targ_size_t offset, uint nbytes, void* p)
Output bytes to object file.
- OmfObj_codeseg
int OmfObj_codeseg(char* name, int suffix)
Define a new code segment.
Input:
name name of segment, if null then revert to default
suffix 0 use name as is
1 append "_TEXT" to name
Output:
cseg segment index of new current code segment
Coffset starting offset in cseg
- OmfObj_comdat
int OmfObj_comdat(Symbol* s)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_comdatsize
int OmfObj_comdatsize(Symbol* s, targ_size_t symsize)
Setup for Symbol s to go into a COMDAT segment.
Output (if s is a function):
cseg segment index of new current code segment
Coffset starting offset in cseg
- OmfObj_common_block
int OmfObj_common_block(Symbol* s, targ_size_t size, targ_size_t count)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_common_block
int OmfObj_common_block(Symbol* s, int flag, targ_size_t size, targ_size_t count)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_compiler
void OmfObj_compiler()
Embed compiler version in .obj file.
- OmfObj_data_readonly
int OmfObj_data_readonly(char* p, int len, int* pseg)
Ouput read only data for data.
Output:
*pseg segment of that data
- OmfObj_data_readonly
int OmfObj_data_readonly(char* p, int len)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_data_start
int OmfObj_data_start(Symbol* sdata, targ_size_t datasize, int seg)
Update data information about symbol
align for output and assign segment
if not already specified.
- OmfObj_dosseg
void OmfObj_dosseg()
Output DOSSEG coment record.
- OmfObj_ehsections
void OmfObj_ehsections()
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_ehtables
void OmfObj_ehtables(Symbol* sfunc, uint size, Symbol* ehsym)
Stuff pointer to function in its own segment.
Used for static ctor and dtor lists.
- OmfObj_exestr
void OmfObj_exestr(const(char)* p)
Embed string in executable.
- OmfObj_export_symbol
void OmfObj_export_symbol(Symbol* s, uint argsize)
- OmfObj_external
int OmfObj_external(Symbol* s)
Output an external definition.
Input:
s Symbol to do EXTDEF on
- OmfObj_external_def
int OmfObj_external_def(const(char)* name)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_far16thunk
void OmfObj_far16thunk(Symbol* s)
Generate far16 thunk.
Input:
s Symbol to generate a thunk for
- OmfObj_fardata
int OmfObj_fardata(char* name, targ_size_t size, targ_size_t* poffset)
Define a far data segment.
Input:
name Name of module
size Size of the segment to be created
- OmfObj_fltused
void OmfObj_fltused()
Mark object file as using floating point.
- OmfObj_func_start
void OmfObj_func_start(Symbol* sfunc)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_func_term
void OmfObj_func_term(Symbol* sfunc)
Update function info after codgen
- OmfObj_gotref
void OmfObj_gotref(Symbol* s)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_import
void OmfObj_import(elem* e)
Convert reference to imported name.
- OmfObj_includelib
bool OmfObj_includelib(const(char)* name)
Output library name.
Output:
name is modified
- OmfObj_init
Obj OmfObj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname)
Perform initialization that applies to all .obj output files.
Input:
filename source file name
csegname code segment name (can be null)
- OmfObj_initfile
void OmfObj_initfile(const(char)* filename, const(char)* csegname, const(char)* modname)
Initialize the start of object output for this particular .obj file.
- OmfObj_jmpTableSegment
int OmfObj_jmpTableSegment(Symbol* s)
- OmfObj_ledata
void OmfObj_ledata(int seg, targ_size_t offset, targ_size_t data, uint lcfd, uint idx1, uint idx2)
Output word of data. (Two words if segment:offset pair.)
Input:
seg CODE, DATA, CDATA, UDATA
offset offset of start of data
data word of data
lcfd LCxxxx | FDxxxx
if (FD_F2 | FD_T6)
idx1 = external Symbol #
else
idx1 = frame datum
idx2 = target datum
- OmfObj_lidata
void OmfObj_lidata(int seg, targ_size_t offset, targ_size_t count)
Output an iterated data block of 0s.
(uninitialized data only)
- OmfObj_linkerdirective
bool OmfObj_linkerdirective(const(char)* name)
Output linker directive.
Output:
directive is modified
- OmfObj_linnum
void OmfObj_linnum(Srcpos srcpos, int seg, targ_size_t offset)
Record line number linnum at offset.
- OmfObj_lzext
void OmfObj_lzext(Symbol* s1, Symbol* s2)
Output a lazy extern record.
s1 is the lazy extern, s2 is its default resolution.
- OmfObj_mangle
size_t OmfObj_mangle(Symbol* s, char* dest)
- OmfObj_moduleinfo
void OmfObj_moduleinfo(Symbol* scc)
Append pointer to ModuleInfo to "FM" segment.
The FM segment is bracketed by the empty FMB and FME segments.
- OmfObj_pubdef
void OmfObj_pubdef(int seg, Symbol* s, targ_size_t offset)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_pubdefsize
void OmfObj_pubdefsize(int seg, Symbol* s, targ_size_t offset, targ_size_t symsize)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_readonly_comdat
int OmfObj_readonly_comdat(Symbol* s)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_reftocodeseg
void OmfObj_reftocodeseg(int seg, targ_size_t offset, targ_size_t val)
Refer to address that is in the code segment.
Only offsets are output, regardless of the memory model.
Used to put values in switch address tables.
Input:
seg = where the address is going (CODE or DATA)
offset = offset within seg
val = displacement from start of this module
- OmfObj_reftodatseg
void OmfObj_reftodatseg(int seg, targ_size_t offset, targ_size_t val, uint targetdatum, int flags)
Refer to address that is in the data segment.
Input:
seg = where the address is going
offset = offset within seg
val = displacement from address
targetdatum = DATA, CDATA or UDATA, depending where the address is
flags = CFoff, CFseg
- OmfObj_reftofarseg
void OmfObj_reftofarseg(int seg, targ_size_t offset, targ_size_t val, int farseg, int flags)
Refer to address that is in a far segment.
Input:
seg = where the address is going
offset = offset within seg
val = displacement from address
farseg = far segment index
flags = CFoff, CFseg
- OmfObj_reftoident
int OmfObj_reftoident(int seg, targ_size_t offset, Symbol* s, targ_size_t val, int flags)
Refer to an identifier.
Input:
seg = where the address is going (CODE or DATA)
offset = offset within seg
s . Symbol table entry for identifier
val = displacement from identifier
flags = CFselfrel: self-relative
CFseg: get segment
CFoff: get offset
- OmfObj_seg_debugT
segidx_t OmfObj_seg_debugT()
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_segment_group
void OmfObj_segment_group(targ_size_t codesize, targ_size_t datasize, targ_size_t cdatasize, targ_size_t udatasize)
Output segment and group definitions.
Input:
codesize size of code segment
datasize size of initialized data segment
cdatasize size of initialized const data segment
udatasize size of uninitialized data segment
- OmfObj_setModuleCtorDtor
void OmfObj_setModuleCtorDtor(Symbol* s, bool isCtor)
Set up function to be called as static constructor on program
startup or static destructor on program shutdown.
- OmfObj_setcodeseg
void OmfObj_setcodeseg(int seg)
Reset code seg to existing seg.
Used after a COMDAT for a function is done.
- OmfObj_startaddress
void OmfObj_startaddress(Symbol* s)
- OmfObj_staticctor
void OmfObj_staticctor(Symbol* s, int dtor, int seg)
Symbol is the function that calls the static constructors.
Put a pointer to it into a special segment that the startup code
looks at.
Input:
s static constructor function
dtor number of static destructors
seg 1: user
2: lib
3: compiler
- OmfObj_staticdtor
void OmfObj_staticdtor(Symbol* s)
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_string_literal_segment
int OmfObj_string_literal_segment(uint sz)
Get segment for readonly string literals.
The linker will pool strings in this section.
- OmfObj_sym_cdata
Symbol* OmfObj_sym_cdata(tym_t ty, char* p, int len)
Output read only data and generate a symbol for it.
- OmfObj_term
void OmfObj_term(const(char)* objfilename)
- OmfObj_termfile
void OmfObj_termfile()
Fixup and terminate object file.
- OmfObj_theadr
void OmfObj_theadr(const(char)* modname)
Output module name record.
- OmfObj_tlsseg
seg_data* OmfObj_tlsseg()
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_tlsseg_bss
seg_data* OmfObj_tlsseg_bss()
Define segment for Thread Local Storage.
Output:
tlsseg set to segment number for TLS segment.
- OmfObj_tlsseg_data
seg_data* OmfObj_tlsseg_data()
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_tlv_bootstrap
Symbol* OmfObj_tlv_bootstrap()
Undocumented in source. Be warned that the author may not have intended to support it.
- OmfObj_user
void OmfObj_user(const(char)* p)
- OmfObj_wkext
void OmfObj_wkext(Symbol* s1, Symbol* s2)
Output a weak extern record.
s1 is the weak extern, s2 is its default resolution.
- OmfObj_write_byte
void OmfObj_write_byte(seg_data* pseg, uint _byte)
- OmfObj_write_bytes
void OmfObj_write_bytes(seg_data* pseg, uint nbytes, void* p)
- OmfObj_write_long
void OmfObj_write_long(int seg, targ_size_t offset, uint data, uint lcfd, uint idx1, uint idx2)
Output long word of data.
Input:
seg CODE, DATA, CDATA, UDATA
offset offset of start of data
data long word of data
Present only if size == 2:
lcfd LCxxxx | FDxxxx
if (FD_F2 | FD_T6)
idx1 = external Symbol #
else
idx1 = frame datum
idx2 = target datum
- OmfObj_write_pointerRef
void OmfObj_write_pointerRef(Symbol* s, uint soff)
write a reference to a mutable pointer into the object file
- OmfObj_write_zeros
void OmfObj_write_zeros(seg_data* pseg, targ_size_t count)
Append an iterated data block of 0s.
(uninitialized data only)
- SEG_ATTR
uint SEG_ATTR(uint A, uint C, uint B, uint P)
- TOLONG
void TOLONG(void* a, uint b)
Undocumented in source. Be warned that the author may not have intended to support it.
- TOOFFSET
void TOOFFSET(void* p, targ_size_t value)
Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name.
- TOWORD
void TOWORD(void* a, uint b)
Undocumented in source. Be warned that the author may not have intended to support it.
- error
void error(Loc loc, const(char)* format, ...)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- error
void error(Loc loc, const(char)* format, ...)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- error
void error(const(char)* filename, uint linnum, uint charnum, const(char)* format, ...)
Insert an index number.
Input:
p . where to put the 1 or 2 byte index
index = the 15 bit index
- fatal
void fatal()
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- filespecdotext
char* filespecdotext(const(char)* filespec)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- filespecgetroot
char* filespecgetroot(const(char)* name)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- filespecname
char* filespecname(const(char)* filespec)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- getcwd
char* getcwd(char* , size_t )
Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name.
- getcwd
char* getcwd(char* , size_t )
Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name.
- getindex
int getindex(ubyte* p)
- getsegment
seg_data* getsegment()
Allocate a new segment.
Return index for the new segment.
- insidx
int insidx(char* p, uint index)
Undocumented in source. Be warned that the author may not have intended to support it.
- insidx
int insidx(char* p, uint index)
Undocumented in source. Be warned that the author may not have intended to support it.
- instypidx
int instypidx(char* p, uint index)
Insert a type index number.
Input:
p . where to put the 1 or 2 byte index
index = the 15 bit index
- list_fixup
FIXUP* list_fixup(list_t fl)
Undocumented in source. Be warned that the author may not have intended to support it.
- obj_namestring
int obj_namestring(char* p, const(char)* name)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- objrecord
void objrecord(uint rectyp, const(char)* record, uint reclen)
Output an object file data record.
Input:
rectyp = record type
record . the data
reclen = # of bytes in record
- seg_is_comdat
int seg_is_comdat(int seg)
Undocumented in source. Be warned that the author may not have intended to support it.
- stricmp
int stricmp(const(char)* , const(char)* )
Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name.
- strupr
char* strupr(char* )
Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name.
- strupr
char* strupr(char* s)
Undocumented in source. Be warned that the author may not have intended to support it.
- too_many_symbols
void too_many_symbols()
Undocumented in source. Be warned that the author may not have intended to support it.
Compiler implementation of the D programming language.