Commit Graph

1111 Commits

Author SHA1 Message Date
nickysn
b9ab9e5782 + initial (experimental) implementation of section-based smartlinking for i8086.
Use -dI8086_SMARTLINK_SECTIONS to enable.

git-svn-id: trunk@39211 -
2018-06-11 16:56:33 +00:00
nickysn
22e8763100 + generate script code for creating the dwarf exe sections when using the
internal linker with dwarf debug info enabled on i8086-msdos

git-svn-id: trunk@39117 -
2018-05-25 15:35:17 +00:00
pierre
a5a6b70658 Add tf_no_pic_supported to go32v2 target (was generating wrong code)
git-svn-id: trunk@39102 -
2018-05-23 21:12:56 +00:00
nickysn
6f44deb557 + implemented the -Xg option for putting the debug information in a separate
file on i8086-msdos and i8086-win16

git-svn-id: trunk@39096 -
2018-05-22 15:33:26 +00:00
nickysn
b80642c384 + started implementing support for generating Microsoft CodeView debug
information. Only enabled on i8086 (for now). Does not do much yet, but
  hopefully, soon it'll start emitting line number information for i8086-msdos
  that is usable by DOS debuggers.

git-svn-id: trunk@39006 -
2018-05-16 15:25:33 +00:00
Jonas Maebe
4686f61002 * keep track of the temp position separately from the offset in references,
so that they can still be freed after the reference has been changed
    (e.g. in case of array indexing or record field accesses) (mantis #33628)

git-svn-id: trunk@38814 -
2018-04-22 17:03:16 +00:00
Károly Balogh
626dc172ee arm-netbsd: append -N to the command line. lets figure out later if this is the right solution here
git-svn-id: trunk@38590 -
2018-03-22 00:43:32 +00:00
Károly Balogh
5e8e9efd83 arm-netbsd: use HF ABI, needs proper alignment
git-svn-id: trunk@38589 -
2018-03-22 00:42:43 +00:00
florian
35d49f804c * search also the "lib" path variants on x86-64 if the "lib64" ones are not
found, some distros use lib instead of lib64 for x86-64

git-svn-id: trunk@38557 -
2018-03-17 21:58:24 +00:00
florian
aa4af19027 * set localalignmin to 4 on x86_64-win64, there is no reason to leave it at 8 (same as linux)
* adapt tasm23b

git-svn-id: trunk@38554 -
2018-03-17 21:30:49 +00:00
Károly Balogh
054ef133f9 netbsd/arm: default to EABI
git-svn-id: trunk@38530 -
2018-03-15 13:44:54 +00:00
Károly Balogh
dbb91b5ef0 arm-netbsd: added platform define and dummy rtl files so the build passes for this platform. port not functional yet
git-svn-id: trunk@38412 -
2018-03-05 15:38:46 +00:00
florian
0baf3f69d8 * modified patch of Sergey Shishmintzev: add a __text_start symbol if an external linker is used, resolves #26190
git-svn-id: trunk@38235 -
2018-02-13 21:16:58 +00:00
Károly Balogh
ba2327f89b macos: initial cross-linker support, based on the binutils in the Retro68 GNU binutils
git-svn-id: trunk@38101 -
2018-02-02 23:01:25 +00:00
Károly Balogh
aaa40927fe palmos: also pass --embedded-relocs to the linker. mimics what prc-tools GCC does
git-svn-id: trunk@37899 -
2018-01-04 08:27:23 +00:00
Károly Balogh
ae1b005b1a palmos: turned off large object generation for palmos, fixed linking by skipping the unnecessary obj-res stage
git-svn-id: trunk@37894 -
2018-01-04 07:36:10 +00:00
pierre
dcc6a20d22 Call RegisterTarget for system_x86_6432_linux_info
git-svn-id: trunk@37891 -
2018-01-02 16:52:41 +00:00
Károly Balogh
ad1742373a atari: remove -sd vlink option. this stops the linker from merging the bss segment into the data segment shaving off about 8K from the Hello, world! size. the data segment is merged into a single one on atari anyway, so this argument is not needed
git-svn-id: trunk@37826 -
2017-12-27 01:01:41 +00:00
nickysn
125360ca16 * fixed the amount of bytes in the 'data' section, reported by the compiler,
when compiling an msdos executable in the huge memory model with the internal
  linker (previously it would always print "0 bytes data" in the huge memory
  model)

git-svn-id: trunk@37771 -
2017-12-20 17:55:03 +00:00
florian
0b10193660 * use dwarf-3 for avr-embedded by default as it makes the size of DW_FORM_ref_addr target indepented
git-svn-id: trunk@37661 -
2017-12-02 17:37:11 +00:00
Károly Balogh
e6aed467b5 renamed script unit to cscript to avoid namespace conflict with univint package on Darwin. this makes it possible to build the textmode IDE on Darwin
git-svn-id: trunk@37598 -
2017-11-17 11:27:19 +00:00
Károly Balogh
fd00920006 m68k-palmos: internal sysinit, and patch target support so it works prc-tools-remix on a modern system
git-svn-id: trunk@37230 -
2017-09-16 21:34:55 +00:00
Károly Balogh
93910c60be palmos: register the linker at least, although it's probably not functional with current RTL
git-svn-id: trunk@37211 -
2017-09-15 11:33:40 +00:00
Károly Balogh
d115b0e8dc m68k: changed the internal name of 68k MacOS from system_m68k_mac to system_m68k_macos, so it's consistent with the PowerPC version. suggestion/request by Sven :)
git-svn-id: trunk@37035 -
2017-08-22 11:22:15 +00:00
Károly Balogh
1d78e73ed8 m68k: there are now cross-binutils for old MacOS, so based on the old/existing bits, fix the support in the compiler
git-svn-id: trunk@37028 -
2017-08-22 10:41:02 +00:00
svenbarth
01046b8a17 * more sensible values for the alignments (based on the powerpc-darwin ones)
git-svn-id: trunk@36886 -
2017-08-12 15:35:24 +00:00
Károly Balogh
071b588da2 netbsd/m68k: tweaks, so it works at least in my test-env with NetBSD/amiga 7.1
git-svn-id: trunk@36801 -
2017-07-27 19:00:37 +00:00
florian
13801bebfe * pass debian specific path to c init files to ld for sparc64 as it is done on other targets as well
git-svn-id: trunk@36676 -
2017-07-07 22:33:42 +00:00
Károly Balogh
8a22807efa m68k: also add Debian's custom library path like on other CPUs
git-svn-id: trunk@36645 -
2017-07-04 22:51:08 +00:00
Károly Balogh
ad89a972e5 m68k: also have tf_safecall_clearstack flag defined for Linux
git-svn-id: trunk@36611 -
2017-06-28 23:55:17 +00:00
Károly Balogh
890f4ac2bc m68k: use 2 byte alignments for C structs on Linux
git-svn-id: trunk@36595 -
2017-06-24 23:19:00 +00:00
Károly Balogh
da11451934 m68k: revert the 2 byte C record alignment fix on Linux. sadly it completely breaks RTTI, which takes longer to fix, so meanwhile, at least cause no regressions
git-svn-id: trunk@36591 -
2017-06-24 10:50:24 +00:00
Károly Balogh
4258413e8c m68k: revert recordalignmax to 2 on Linux. the value of 4 caused a bunch of weird RTTI test failures
git-svn-id: trunk@36590 -
2017-06-23 21:24:39 +00:00
Károly Balogh
bf3478fb35 m68k: fix C struct alignment on Linux. tested against GCC on current Debian-m68k
git-svn-id: trunk@36589 -
2017-06-23 20:47:06 +00:00
Károly Balogh
cf8aebf00f m68k: enabled safecall exception wrappers with linux
git-svn-id: trunk@36575 -
2017-06-22 15:31:32 +00:00
florian
719faf5e54 * more restrictive alignment for variables
git-svn-id: trunk@36549 -
2017-06-19 21:18:11 +00:00
florian
2e2e560d5a * use dwarf on sparc64
git-svn-id: trunk@36539 -
2017-06-19 21:17:51 +00:00
florian
3c72115e30 * basic sparc64 calling convention handling and stack frame handling fixed
git-svn-id: trunk@36518 -
2017-06-18 15:49:21 +00:00
florian
ac16c90357 * linker command for sparc64-linux fixed
git-svn-id: trunk@36517 -
2017-06-18 15:45:32 +00:00
Károly Balogh
903548b21a morphos: added legacy GNU AS support for the ancient AS version, which is still bundled as default in the SDK. switches off named sections support in the assembler generator
git-svn-id: trunk@36487 -
2017-06-11 23:36:40 +00:00
florian
21e5f99faa + some basic compiler support for sparc64-linux
git-svn-id: trunk@36418 -
2017-06-04 22:07:24 +00:00
florian
1f4432af6b * sparc64 compiler can be build, not working yet
git-svn-id: trunk@36399 -
2017-06-02 20:13:30 +00:00
Károly Balogh
1252aefb86 t_linux: whitespace and tab 2 space fix. no functional change.
git-svn-id: trunk@36370 -
2017-05-29 16:11:24 +00:00
maciej-izak
fa75f25fac * Enabling crosscompiling from Windows towards Darwin. Patch from Alfred (mantis 31099). Thanks! :)
git-svn-id: trunk@36168 -
2017-05-10 07:53:43 +00:00
florian
b1dff29cbf * removed unused units
git-svn-id: trunk@36165 -
2017-05-09 19:53:14 +00:00
Károly Balogh
01ebb52ba8 morphos: added tf_needs_smybol_type and tf_needs_symbol_size flags. fixes generated executables to not be falsely recognized as PowerUP but native binaries
git-svn-id: trunk@36019 -
2017-04-29 22:31:41 +00:00
florian
0897bd154a + align(<int64>,<int64>) and align(<qword>,<qword>), resolves an issue reported on the mailing list with large records
+ tests
* trecordsymtable.insertunionst takes a asizeint parameter
* changed one aint into a asizeint

git-svn-id: trunk@35662 -
2017-03-26 09:35:56 +00:00
Károly Balogh
a4b096e9da m68k: added the embedded target
git-svn-id: trunk@35589 -
2017-03-15 13:37:56 +00:00
Károly Balogh
1c4207642c tabs to spaces indentation fixes. no functional changes
git-svn-id: trunk@35318 -
2017-01-17 13:41:13 +00:00
Károly Balogh
b2ff3f82bc m68k: marked palmos as 'under development', as there's code there, but was never really tested with the current CG
git-svn-id: trunk@35316 -
2017-01-16 21:31:49 +00:00
Jeppe Johansen
7e75457a3e Added more Nordic Semi controllers. Created a new unit for NRF52x controllers with a more precise register naming following Nordic SDK conventions.
Patch from Paul Mitchell.

git-svn-id: trunk@35274 -
2017-01-10 20:30:20 +00:00
Károly Balogh
c4ba3ef09d amigaos4: fix linker script and signature symbol preservation with current vlink
git-svn-id: trunk@35272 -
2017-01-08 20:33:28 +00:00
Károly Balogh
49fc799e97 atari: section smartlinking support for atari. needs vlink nightly
git-svn-id: trunk@35244 -
2017-01-06 02:44:12 +00:00
Károly Balogh
48744d0abd amiga: section smartlinking support for amiga. needs vlink nightly
git-svn-id: trunk@35243 -
2017-01-05 23:08:08 +00:00
Károly Balogh
48de52f41b morphos: added section smartlinking support using vlink. needs vlink nightly
git-svn-id: trunk@35242 -
2017-01-05 22:39:54 +00:00
Károly Balogh
ab5b9982ee aros: enabled internal sysinit for i386-aros
git-svn-id: trunk@35238 -
2017-01-05 00:25:10 +00:00
Károly Balogh
789fb552d5 aros: fixed striping and added section smartlinking support
git-svn-id: trunk@35236 -
2017-01-04 22:59:05 +00:00
florian
53019b2470 * align code slightly better on i386-win32/x86_64-win64
git-svn-id: trunk@35224 -
2017-01-03 16:43:26 +00:00
Károly Balogh
95274c1d7b atari: enable apptype directive, and change exe extension when compiling a GUI app
git-svn-id: trunk@35215 -
2016-12-30 10:27:27 +00:00
Károly Balogh
217307cd69 atari: revert back to unix dirsep, because thats what the 3rd party dev tools prefer
git-svn-id: trunk@35213 -
2016-12-29 16:15:37 +00:00
Károly Balogh
adb58ad467 atari: fixed newline and dirsep
git-svn-id: trunk@35212 -
2016-12-29 14:53:23 +00:00
Károly Balogh
9ce4184dd9 atari: add fastload and fastram flags for TOS exes. ideally this should become a directive or some option at some point
git-svn-id: trunk@35207 -
2016-12-27 22:22:13 +00:00
Károly Balogh
8760ff96e1 atari: new pascal startup code, reworked build, also ParamStr/ParamCount works now
git-svn-id: trunk@35201 -
2016-12-27 08:14:34 +00:00
Károly Balogh
4e51dc2298 m68k: enable named sections for vasm generated objects. have a separate as_m68k_as_aout for a.out objects which doesn't have named sections. amiga and atari gas defaults to a.out, so have it default on these systems. finally enable section smartlinking for amiga and atari, which will be used with vasm assembler
git-svn-id: trunk@35112 -
2016-12-11 23:27:24 +00:00
Károly Balogh
788c622307 amiga: pascal startup code for 68k and buildrtl refactor
git-svn-id: trunk@35068 -
2016-12-04 18:21:24 +00:00
marcus
bebef242d4 AROS: Initial ABIv1 Support
git-svn-id: trunk@35066 -
2016-12-04 15:41:35 +00:00
Károly Balogh
f3e33a9dde morphos: new pascal-written internal startup code. also refactored the rtl build process for morphos
git-svn-id: trunk@35054 -
2016-12-04 00:15:41 +00:00
marcus
b02d541e78 AROS: x86_64 needs also BINCOMPAT, TTask fixed type for 64 bit
git-svn-id: trunk@35028 -
2016-12-01 17:22:11 +00:00
Jonas Maebe
a25ebbba3e + added volatility information to all memory references
o separate information for reading and writing, because e.g. in a
     try-block, only the writes to local variables and parameters are
     volatile (they have to be committed immediately in case the next
     instruction causes an exception)
   o for now, only references to absolute memory addresses are marked
     as volatile
   o the volatily information is (should be) properly maintained throughout
     all code generators for all archictures with this patch
   o no optimizers or other compiler infrastructure uses the volatility
     information yet
   o this functionality is not (yet) exposed at the language level, it
     is only for internal code generator use right now

git-svn-id: trunk@34996 -
2016-11-27 18:17:37 +00:00
marcus
3207a346e1 AROS: arm needs AROS_FLAVOUR_BINCOMPAT defines
git-svn-id: trunk@34895 -
2016-11-13 21:05:12 +00:00
marcus
86940dfb32 AROS: added arm-aros target to compiler and fpcmake
git-svn-id: trunk@34805 -
2016-11-06 10:51:45 +00:00
Károly Balogh
b8e1151eed atari: add tf_requires_proper_alignment to the atari target
git-svn-id: trunk@34703 -
2016-10-09 22:56:23 +00:00
Károly Balogh
311f6dbf84 atari: fixed exe extension typo.
git-svn-id: trunk@34603 -
2016-10-03 04:06:04 +00:00
Károly Balogh
8d56d60d78 atari: added an external linker implementation, supporting GNU LD and VLink in theory. however the GNU LD version I have segfaults when I try to link the executable...
git-svn-id: trunk@34602 -
2016-10-03 03:54:56 +00:00
yury
c29c5571b8 * android: Fixed AV during linking when JNI_OnLoad is located in a non-main unit.
git-svn-id: trunk@34553 -
2016-09-22 07:40:51 +00:00
yury
a0d6873331 * android: Android versions prior to 4.1 do not support recursive dlopen() calls.
Therefore if a shared library is loaded by JVM ( using dlopen() ),
          it is not possible to use dlopen() in a units initialization code -
          dlopen() simply hangs.
          To workaround this issue, if a library exports JNI_OnLoad(), then
          no unit initialization is performed during library load.
          The initialization is called when JVM has loaded the library and calls
          JNI_OnLoad().

git-svn-id: trunk@34406 -
2016-09-01 23:22:41 +00:00
florian
f274e316fe + search /usr/lib/powerpc-linux-gnu for powerpc startup files
git-svn-id: trunk@34365 -
2016-08-22 10:01:47 +00:00
svenbarth
2808be3e20 + add and use sysinit unit for Win64 (only one since we don't support cygwin and gprof there)
* switch Win64 to indirect entry information

git-svn-id: trunk@34307 -
2016-08-13 19:10:27 +00:00
Jonas Maebe
aa1be3276f - removed default value of _typ parameter of TAsmData.(Weak)RefAsmSymbol():
it was AT_NONE, which is invalid and should never be used
  * explicitly pass the correct value for all calls to those methods elsewhere
    in the compiler

git-svn-id: trunk@34250 -
2016-08-05 07:09:16 +00:00
Jeppe Johansen
6a1c1e4f29 Added support for NRF52832 controllers.
git-svn-id: trunk@34170 -
2016-07-22 10:01:10 +00:00
Jonas Maebe
1cb8c0d00c * specify the def of assembler level symbols defined via
tasmdata.DefineAsmSymbol() and all routines that call it
   o will be used to automatically generate AB_INDIRECT sybols when
     necessary

git-svn-id: trunk@34164 -
2016-07-20 20:52:59 +00:00
Jonas Maebe
53ace5b489 - removed disabled exportlib override code
git-svn-id: trunk@34163 -
2016-07-20 20:52:55 +00:00
pierre
e68b8467b6 Use 'debug watcom all' if -g, without dwarf option is used
git-svn-id: trunk@34077 -
2016-07-06 06:13:08 +00:00
pierre
fba50767b3 Add SUPPORT_OMF conditional to be able to test OMF for win32/win64 targets, not working for now
git-svn-id: trunk@34076 -
2016-07-06 06:08:01 +00:00
nickysn
c2305809dc + added an i8086-embedded target support to the compiler (RTL and makefile
support are not done yet)

git-svn-id: trunk@33999 -
2016-06-17 19:15:24 +00:00
svenbarth
f406867100 Merged revision(s) 31929-31931,32547 from branches/svenbarth/packages:
Switch Mac OS X to indirect entry information.

compiler/systems/t_bsd.pas, TLinkerBSD:
  + implement InitSysInitUnitName
compiler/system.pas:
  * systems_internal_sysinit: add Darwin systems
compiler/hlcgobj.pas, thlcgobj:
  * gen_proc_symbol_end: for Darwin systems don't directly call PascalMain for libraries, but FPC_LIBMAIN instead
rtl/darwin:
  + add sysinit.pas unit which contains the executable and library entry points for Darwin
rtl/darwin/Makefile.fpc:
  * add sysinit unit
rtl/bsd/sysosh.inc:
  + add a Darwin specific TPlatformEntryInformation (could probably be used for all Unix systems...)
rtl/bsd/system.pp:
  * define FPC_HAS_INDIRECT_MAIN_INFORMATION for Darwin systems once we're no longer bootstrapping with 2.6.x
  + add EntryInformation variable (this could maybe moved to system.inc...)
  + add new procedure SysEntry that is called from the entrypoint and which sets up necessary information required by other parts of the RTL
  * the old FPC_SYSTEMMAIN is still in place for bootstrapping
rtl/inc/systemh.inc, TEntryInformation:
  * PascalMain is cdecl on non-Windows systems (ToDo: really?)
rtl/inc/system.inc:
  * initialstklen is provided by the indirect entry information, so no external here
........
Fix bootstrapping.

rtl/darwin/sysinit.pas:
  * enable the code only when no longer bootstrapping with 2.6.x
........
Fix bootstrapping.

rtl/objpas/objpas.pp:
  * define FPC_HAS_INDIRECT_MAIN_INFORMATION for Darwin only while not bootstrapping with 2.6.x
........
rtl/darwin/sysinit.pas:
  * reference PASCALMAIN correctly (I wonder how this even worked previously :/ )

git-svn-id: trunk@33949 -
2016-06-11 20:29:51 +00:00
Károly Balogh
a82196bf84 * now Amiga and MorphOS defines tf_requires_proper_alignment. for 68k Amiga it's required for 68000, on others it's not mandatory but beneficial
git-svn-id: trunk@33788 -
2016-05-25 09:54:01 +00:00
nickysn
c78f406d99 + implemented proper stack checking for the i8086
git-svn-id: trunk@33787 -
2016-05-24 23:57:47 +00:00
marcus
a77d26530d AmigaOS4: set winlike resources
git-svn-id: trunk@33622 -
2016-05-02 17:33:52 +00:00
Károly Balogh
6d3b580f2f * enabled internal ELF resources for AmigaOS4
git-svn-id: trunk@33596 -
2016-05-01 12:59:54 +00:00
Károly Balogh
a806114af6 * since AMIGA is now defined by both AmigaOS4 and 68k Amiga, have an unique AMIGA68K define for classic Amiga
git-svn-id: trunk@33583 -
2016-04-30 19:51:30 +00:00
Károly Balogh
5a50fc4be3 * don't provide __amigaos4__ symbol in our VLink linker script by default. it's in prt0.as for now.
git-svn-id: trunk@33582 -
2016-04-30 19:48:54 +00:00
svenbarth
adbef4fc84 New export option that enforces the use of the provided export name instead of using the name of the provided symbol. This is necessary to correctly handle overloaded functions, especially if one of them is an internproc one.
export.pas:
  + texportoption: new option eo_no_sym_name
pkgutil.pas:
  * exportprocsym: set eo_no_sym_name when exporting procdefs from a package
systems/t_win.pas, TExportLibWin:
  * generatelib: respect eo_no_sym_name

git-svn-id: trunk@33574 -
2016-04-29 15:03:18 +00:00
Károly Balogh
814d3c4071 * fixed GNU LD support for powerpc-amiga, broken by the previous commit
git-svn-id: trunk@33509 -
2016-04-14 21:33:04 +00:00
Károly Balogh
ea8322ee80 * powerpc-amiga linker invocation fixes, and added a linker script required for VLink, courtesy of Frank Wille
git-svn-id: trunk@33506 -
2016-04-14 21:12:15 +00:00
Károly Balogh
c39bce3747 * added vlink command line for AmigaOS/PPC
git-svn-id: trunk@33488 -
2016-04-12 12:53:56 +00:00
Jeppe Johansen
681b06bc90 Fixed more linkerscript errors.
git-svn-id: trunk@33306 -
2016-03-21 08:19:45 +00:00
Jeppe Johansen
632de58a5e Fixes #29853
git-svn-id: trunk@33267 -
2016-03-18 10:51:46 +00:00
Jeppe Johansen
1c0c944311 Added x86_64-embedded target. Patch from Benjamin Rosseaux
git-svn-id: trunk@33097 -
2016-02-14 10:57:00 +00:00
svenbarth
716b3082e9 Merged revision(s) 28792 from branches/svenbarth/packages:
Provide a possibility to ignore duplicate symbols for exporting.

export.pas, texportlib:
  + new property "ignoreduplicates" with which duplicate symbols are ignored upon insertion
  + new method "duplicatesymbol" which checks "ignoreduplicates" and generates an error if it is False (this method needs to be used if a duplicate was detected)
expunix.pas, texportlibunix:
  * exportprocedure: use "duplicatesymbol" instead of always generating an error
systems/t_beos.pas, texportlibbeos:
  * exportprocedure: use "duplicatesymbol" instead of always generating an error
systems/t_haiku.pas, texportlibhaiku:
  * exportprocedure: use "duplicatesymbol" instead of always generating an error
systems/t_nwl.pas, texportlibnetwlibc:
  * exportprocedure: use "duplicatesymbol" instead of always generating an error
systems/t_nwm.pas, texportlibnetware:
  * exportprocedure: use "duplicatesymbol" instead of always generating an error
systems/t_win.pas, texportlibwin:
  * exportfromlist: use "duplicatesymbol" instead of always generating an error
........

git-svn-id: trunk@32974 -
2016-01-22 13:57:41 +00:00