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