Commit Graph

18216 Commits

Author SHA1 Message Date
nickysn
fdbfaacec8 + calculate the MZ loadable image size (excluding bss, stack and heap)
+ only write the loadable image size number of bytes to .com files

git-svn-id: trunk@31385 -
2015-08-24 14:42:43 +00:00
nickysn
a7e63581b4 + i8086-msdos internal lniker: find the program entry point and fill it in the
mz exe header; also write it in the linker map file

git-svn-id: trunk@31384 -
2015-08-24 14:22:17 +00:00
nickysn
e0bd25191e + also take into account the frame method when converting the omf start address to a symbol
git-svn-id: trunk@31383 -
2015-08-24 13:46:37 +00:00
nickysn
cff94639d5 * i8086-msdos internal linker: improved handling of the _edata and _end internal
symbols - add them to 'DGROUP' and define them in a section with class 'BSS'

git-svn-id: trunk@31382 -
2015-08-24 12:39:39 +00:00
nickysn
989afc6ecb * show section addresses relative to the segment's MemBasePos in the i8086-msdos
internal linker map file

git-svn-id: trunk@31380 -
2015-08-24 01:31:16 +00:00
nickysn
368ba47d6e * support writing more than 1024 zeros in tobjectwriter.writezeros
git-svn-id: trunk@31379 -
2015-08-24 01:09:53 +00:00
nickysn
fa8841d575 + support omf group-relative fixups pointing to external symbol (e.g.
'wrt dgroup' references)
- removed debug code from TMZExeOutput.DoRelocationFixup

git-svn-id: trunk@31378 -
2015-08-24 00:55:56 +00:00
nickysn
173713ce57 * preserve original order (as specified in the link script) of omf sections with
the same name. This ensures that the startup code always comes first, which is
  important for .com files

git-svn-id: trunk@31377 -
2015-08-24 00:30:24 +00:00
nickysn
f182a98d7b * also preserve TObjSymbol.group when updating external with global symbols
git-svn-id: trunk@31376 -
2015-08-24 00:25:37 +00:00
nickysn
f08e98bfd0 + partial implementation of DoRelocationFixups for the i8086-msdos internal linker
git-svn-id: trunk@31375 -
2015-08-24 00:23:56 +00:00
nickysn
78cbb1ba2b + implemented writing .com files in the i8086-msdos internal linker
git-svn-id: trunk@31374 -
2015-08-23 22:06:30 +00:00
nickysn
fa9a1f706b + i8086-msdos internal linker: calculate the final segments and groups locations
in memory (incl. segment bases) before DoRelocations; list segments and groups
  in the map file as well

git-svn-id: trunk@31373 -
2015-08-23 21:36:24 +00:00
nickysn
5dc42404cf * capitalize omf segment class names, as that's how other 16-bit compilers write them
git-svn-id: trunk@31371 -
2015-08-22 19:07:04 +00:00
nickysn
e09ab50724 * capitalize the group name 'DGROUP' in the generated omf object files, because
that's how it is usually written by other 16-bit compilers

git-svn-id: trunk@31369 -
2015-08-22 16:28:36 +00:00
nickysn
70677e3e44 + added a descendant class for omf section groups, which adds base address, size
and a method to calculate these new fields

git-svn-id: trunk@31363 -
2015-08-22 12:23:49 +00:00
marco
f59b88f6f8 * Add support for libraries with C linking under Haiku
Patch by Olivier, mantis #28558

git-svn-id: trunk@31362 -
2015-08-22 12:23:15 +00:00
nickysn
b74a104e48 * instantiate TObjSectionGroup through a class type, to allow using a child
class for certain object formats

git-svn-id: trunk@31360 -
2015-08-22 11:27:22 +00:00
nickysn
9aeb94676c + added virtual method to tobjsection for returning a string representation of
the section's base address for the internal linker map file
* implemented it for omf sections to return the address in 'seg:ofs' format

git-svn-id: trunk@31359 -
2015-08-21 16:21:16 +00:00
nickysn
a762532ae1 * changed the MemPos field in TObjSection and TExeSection from aword to qword:
1) aword follows the ALU size of the CPU, not the address size
  2) it is already qword in TExeOutput and its methods and there's already
     MaxMemPos to check if the limits of the platform/exe format have been
     exceeded

git-svn-id: trunk@31357 -
2015-08-21 14:13:27 +00:00
nickysn
157345c9c2 + obtain and return the internal module name in brackets in the internal omf
library reader (just like the internal .ar reader does)

git-svn-id: trunk@31355 -
2015-08-20 23:24:54 +00:00
nickysn
808b5dfb78 * allow gaps between LEDATA records, as nasm seems to produce them. They're
automatically filled with zeros. This fixes reading of the tiny memory model
  startup code object module by the i8086-msdos internal linker.

git-svn-id: trunk@31354 -
2015-08-20 22:57:15 +00:00
nickysn
1b9eeee25d + order omf sections first by classname, then by name
git-svn-id: trunk@31352 -
2015-08-20 21:21:52 +00:00
nickysn
eed7e3aa6b + implemented GetCode/Data/BssSize in the i8086-msdos internal linker
git-svn-id: trunk@31351 -
2015-08-20 21:11:09 +00:00
nickysn
7d586df038 * override DoRelocationFixup in TMZExeOutput - doing nothing for now, but
prevents the "abstract method called" error

git-svn-id: trunk@31350 -
2015-08-20 20:55:24 +00:00
nickysn
0fb92b803b * set the MZ exe section limit to 640k
git-svn-id: trunk@31348 -
2015-08-20 15:01:39 +00:00
nickysn
07fff73527 * fixed the "Incompatible section options" error when using the omf internal linker to produce msdos executables
git-svn-id: trunk@31347 -
2015-08-20 14:50:59 +00:00
nickysn
a4c188ff01 + partial implementation of omf fixup reading
git-svn-id: trunk@31346 -
2015-08-19 15:55:03 +00:00
Jonas Maebe
4c5191f5d7 * generate LLVM typedefs for file-typed data
git-svn-id: trunk@31344 -
2015-08-18 16:10:29 +00:00
Jonas Maebe
2cf17c0487 * don't generate DWARF cfi when targeting LLVM, it will do that itself
git-svn-id: trunk@31343 -
2015-08-18 16:09:44 +00:00
nickysn
6d6ed840a4 * set the data record start offset of the omf fixup object when reading omf fixups
git-svn-id: trunk@31342 -
2015-08-18 15:18:03 +00:00
nickysn
ebde434255 * specify the proper segment ordering in the link script of the i8086-msdos
internal linker

git-svn-id: trunk@31341 -
2015-08-18 14:44:00 +00:00
nickysn
cbc676e80e * ignore case (i.e. always convert to upper case) in omf segment/class/overlay/group names
git-svn-id: trunk@31340 -
2015-08-18 14:41:29 +00:00
nickysn
d4b0b6f6e6 * use SegmentName+'||'+ClassName for the name of OMF sections when reading OMF
files, because omf segments are (according to the spec) identified by the
  tuple <SegmentName,ClassName,OverlayName> and not just by name (and we ignore
  the overlay name)

git-svn-id: trunk@31339 -
2015-08-18 14:31:59 +00:00
nickysn
0dab94e35d * i8086-msdos internal linker: put the static libraries in a group, to enable
multiple passes when resolving symbols

git-svn-id: trunk@31338 -
2015-08-18 13:37:57 +00:00
nickysn
3c0d83bd74 * fixed reading of OMF library dictionary
git-svn-id: trunk@31337 -
2015-08-17 13:03:57 +00:00
nickysn
9ff0057a94 * return true if TOmfObjInput.ReadObjData is successful
git-svn-id: trunk@31336 -
2015-08-17 12:25:59 +00:00
Jonas Maebe
add015f808 * ensure that the dwarf file table contains an entry if the current unit
contains any code, even if we cannot generate any debug info for that
    code (because the default file is file number 1, and if that table is
    empty some gdb versions crash)

git-svn-id: trunk@31335 -
2015-08-17 08:47:38 +00:00
Jonas Maebe
e06181749c * guarantee the order of parameter pushes again after r31201 on platforms
that don't use a fixed stack (mantis #28454)
   o moved the code to finalise managed out parameters from ncgcal to ncal,
     and add it to the init code of the call node (so it's evaluated before
     any parameters are processed, ensuring that mantis #28390 stays fixed)

git-svn-id: trunk@31328 -
2015-08-16 12:47:09 +00:00
Jonas Maebe
c95a3f2cf7 * firstpass rather than typecheckpass statements added to the call node
init/done block, as these can be added while pass_1 is ongoing

git-svn-id: trunk@31327 -
2015-08-16 12:47:04 +00:00
nickysn
41203a9152 * support far classrefdef targets on i8086 in thlcgcpu.a_loadaddr_ref_reg. This
fixes code generation for loadvmtaddr nodes in i8086 far data memory models
  after r31064.

git-svn-id: trunk@31326 -
2015-08-15 17:24:49 +00:00
nickysn
ef207475fd + parse omf modend records and add symbol for module start address
git-svn-id: trunk@31324 -
2015-08-14 15:42:43 +00:00
nickysn
e1298a035c * provide msdos-specific dummy overrides for GetCode/Data/BssSize to avoid crash
when using the (not yet finished) internal linker

git-svn-id: trunk@31323 -
2015-08-14 14:36:18 +00:00
nickysn
d4a4b9a57b * refactored the internal linker ar object reader object creation to allow using
different 'ar' implementations under different platforms
* use the omflib reader instead of the ar reader in the msdos internal linker

git-svn-id: trunk@31322 -
2015-08-14 13:52:45 +00:00
nickysn
8206c6dbd0 * the code for determining the code, data and bss sizes in the internal linker
moved to virtual methods, to allow for platform specific overrides (e.g. for
  supporting section names, other than '.text', '.data' and '.bss', etc.)

git-svn-id: trunk@31321 -
2015-08-13 15:07:24 +00:00
nickysn
e59c164844 + parse FIXUPP records in the omf object reader (although converting them TOmfRelocation is not yet implemented)
git-svn-id: trunk@31320 -
2015-08-13 13:44:46 +00:00
Jeppe Johansen
59f164b948 Changed type of size argument from aint to asizeint. This previously broke things on 8bit targets.
git-svn-id: trunk@31319 -
2015-08-13 01:57:09 +00:00
nickysn
c3133c498a + added property tobjectreader.pos, which returns the current position when reading an object file
git-svn-id: trunk@31315 -
2015-08-11 15:46:44 +00:00
nickysn
515d702408 - removed semicolon after 'begin'
git-svn-id: trunk@31314 -
2015-08-11 14:30:32 +00:00
nickysn
0cd1a88588 * fixed memory leak in TOmfObjInput.ReadExtDef
git-svn-id: trunk@31313 -
2015-08-11 13:39:26 +00:00
nickysn
9fc100574c + added property TObjSymbol.group for use with the omf object format
git-svn-id: trunk@31312 -
2015-08-11 13:38:28 +00:00