Commit Graph

297 Commits

Author SHA1 Message Date
Jonas Maebe
ff4847f685 * also write out the assembler invocation when using pipes
git-svn-id: trunk@31803 -
2015-09-23 20:38:11 +00:00
yury
432248cbf1 * Removed lot of unused vars.
git-svn-id: trunk@31732 -
2015-09-17 12:48:58 +00:00
Jonas Maebe
839482751d * when generating code for a pure assembler routine with LLVM, instantiate
a code and temp generator for the architectural target instead of for LLVM
  * write the code for pure assembler routines using a GNU-style external
    assembler writer for the target, with a decorator to wrap it in
    LLVM module-level assembly statements

git-svn-id: trunk@31633 -
2015-09-12 23:32:31 +00:00
Jonas Maebe
55e84df094 + GetExternalAssemblerWithAsmInfoWriter() to get a GNU-style external
assembler writer that is compatible with the current architecture,
    for use by the LLVM assembler writer to write inline assembly

git-svn-id: trunk@31631 -
2015-09-12 23:32:24 +00:00
Jonas Maebe
991e1f49bd * store a pointer to the used tasminfo record in every assembler writer, so
that we can use assembler writers with different conventions from the
    currently set target_asm (e.g. an x86 assembler writer for inline assembly
    in LLVM IR)

git-svn-id: trunk@31628 -
2015-09-12 23:32:13 +00:00
Jonas Maebe
4bb82b0a3f - removed unused OnlyAsm procedure
git-svn-id: trunk@31627 -
2015-09-12 23:32:09 +00:00
Jonas Maebe
e1f78cb774 * added decorator support to the external assembler writers so the LLVM
assembler writer can postprocess their output

git-svn-id: trunk@31626 -
2015-09-12 23:32:05 +00:00
Jonas Maebe
b3d0197f98 * factored out the output file handling (mostly writing data) from the
external assembler writer, so we can reuse the archtecture-specific
    writers to write inline assembly in LLVM IR files

git-svn-id: trunk@31625 -
2015-09-12 23:32:01 +00:00
nickysn
4a855b140a + support mixing initialized and bss data in the same object section (only in
case the section options contain the new option 'oso_sparse_data') in the
  internal object writer (needed for the huge memory model)

git-svn-id: trunk@31503 -
2015-09-04 13:16:45 +00:00
nickysn
046a4e4114 * allow using a TObjSymbol subclass via using a "class of" type
git-svn-id: trunk@31424 -
2015-08-25 14:32:08 +00:00
nickysn
d204aaab72 * refactored "ar" object writer creation in the internal assembler to allow
having different implementations of an internal "ar" writer

git-svn-id: trunk@30667 -
2015-04-19 16:35:16 +00:00
nickysn
cebd3de630 + added unit owomflib (empty for now), which is going to contain the internal
.lib writer for i8086-msdos

git-svn-id: trunk@30643 -
2015-04-18 09:49:38 +00:00
nickysn
7315175c32 * keep the proper original section name and order (and not just the type) of the
last encountered section at the object cut location when writing a smartlinked
  library with the internal assembler. This fixes the $HUGECODE directive with
  the internal assembler on i8086 and maybe other things on other platforms,
  that use library based smartlinking in combination with the internal asm.

git-svn-id: trunk@30615 -
2015-04-16 23:33:26 +00:00
nickysn
f66d8cfb7f * create normal object files, instead of using the internal "ar" writer in TInternalAssembler.writetreesmart in case the af_needar flag is set on an internal assembler
git-svn-id: trunk@30515 -
2015-04-09 14:50:22 +00:00
nickysn
3840db5457 * handle aitconst_farptr with a constant (nil) directly in the internal asm
writer, without calling writereloc

git-svn-id: trunk@30457 -
2015-04-05 23:56:23 +00:00
nickysn
393b9b54a8 + handle aitconst_farptr in the internal asm writer as a new relocation type (RELOC_FARPTR)
git-svn-id: trunk@30456 -
2015-04-05 23:43:37 +00:00
Jeppe Johansen
e2272c8a7e Added aitconst_gs for AVR pointer references to Flash.
git-svn-id: trunk@30419 -
2015-04-04 10:29:11 +00:00
Jonas Maebe
bd203a5b57 * synchronised with trunk till r30240
git-svn-id: branches/hlcgllvm@30241 -
2015-03-15 19:44:58 +00:00
Jeppe Johansen
60f24739fc Fixed typo
git-svn-id: trunk@30238 -
2015-03-15 15:47:45 +00:00
Jeppe Johansen
2bcef2daee Fix break caused by r30233
git-svn-id: trunk@30235 -
2015-03-15 13:34:01 +00:00
Jeppe Johansen
155998fe89 Support .set and .weak in internal assembler.
Fix problem with fpc_initialHeap getting put in .data instead of .bss.

git-svn-id: trunk@30233 -
2015-03-15 12:10:54 +00:00
Jeppe Johansen
52e505bff7 Fixed internal error in GOT related code for ARM internal assembler.
git-svn-id: trunk@30188 -
2015-03-14 16:03:16 +00:00
Jeppe Johansen
914e9e7b49 Merged from trunk
git-svn-id: branches/laksen/armiw@30146 -
2015-03-08 12:33:46 +00:00
Jonas Maebe
06dd396a2f * fixed writing float values using the internal assembler after r28105
git-svn-id: branches/hlcgllvm@30105 -
2015-03-05 21:41:56 +00:00
Jonas Maebe
67b8aceaee * synchronized with privatetrunk till r30095
git-svn-id: branches/hlcgllvm@30101 -
2015-03-05 20:32:15 +00:00
Jonas Maebe
bb1274a8ee * make DoPipe() a method of TExternalAssembler and use it in
TAArch64AppleAssembler to determine whether we have to add extra
    parameters to support assembling via a pipe ("as" is a symlink to
    clang for Arch64 on OS X, and needs to be explicitly told its going to
    receive assembler code from standard input)

git-svn-id: trunk@29952 -
2015-02-23 22:55:05 +00:00
Jeppe Johansen
6fff181679 Add support for TBB/TBH instructions.
Precisize rules for selection of thumb instructions.
Add short-cut notation support for most simple Thumb2 instructions ( add r1,#4 instead of add r1,r1,#4 ).

git-svn-id: branches/laksen/armiw@29343 -
2014-12-27 16:00:06 +00:00
Jeppe Johansen
de00a1d76d Implement simple support for .thumb_func in the ELF output.
git-svn-id: branches/laksen/armiw@29340 -
2014-12-27 11:02:38 +00:00
Jeppe Johansen
6976af8365 Change .thumb_func to be an ait_directive instead of it's own tai type.
git-svn-id: branches/laksen/armiw@29334 -
2014-12-26 23:13:14 +00:00
sergei
6fd8a26ae1 + internal assembler: early check for empty asmlists.
git-svn-id: trunk@28629 -
2014-09-08 23:26:20 +00:00
Jonas Maebe
7ebb1b813f + basic support infrastructure in the llvm assembler writer to write out
typed constant data
   o llvm declarations now get an extra "initdata" list that contains the
     typed constant data associated with this declaration (if any)

git-svn-id: branches/hlcgllvm@28111 -
2014-07-01 16:30:19 +00:00
Jonas Maebe
b0ff41406a * grouped all tai_real* types into a single tai_realconst type,
to free up space for more ait_* types in taitype (can't have
    more than 32 because they have to fit in a small set)
   o factored out writing of floating point numbers as an array of
     byte in the external assemblers

git-svn-id: branches/hlcgllvm@28105 -
2014-07-01 16:29:58 +00:00
Károly Balogh
2d38cf0dbd assemble: don't include exec directly, but use GetProcessID to generate the unique file ID, because that maps to exec/FindTask on Amiga anyway
git-svn-id: trunk@27737 -
2014-05-04 23:16:52 +00:00
pierre
9c78abafce Add SmartFilesCount number to AddAsmCommand call for SmartAsm
git-svn-id: trunk@27530 -
2014-04-11 13:37:00 +00:00
Károly Balogh
7e1051324d include exec on Amiga only in the implementation part
git-svn-id: trunk@27065 -
2014-03-09 23:05:13 +00:00
sergei
46f8e78d1f + Support GOT/gp-relative constants in GAS and internal assemblers, MIPS and i386.
* Change MIPS jump tables in PIC mode to use gp-relative constants, making them ABI-compliant and not requiring dynamic relocations.

git-svn-id: trunk@26886 -
2014-02-26 14:54:47 +00:00
Károly Balogh
31ec76422a redirect .s files to the RAM: drive on Amiga while compiling
git-svn-id: trunk@26829 -
2014-02-22 08:43:11 +00:00
pierre
441b9feffc pass new asm extra opt using -ao option
git-svn-id: trunk@26540 -
2014-01-21 00:16:53 +00:00
florian
4d5119bf1c * fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
git-svn-id: trunk@26161 -
2013-12-01 17:02:08 +00:00
Károly Balogh
3d07b35d77 do not append directory separator when it is already there, as // equals /../ on Amiga, fixes smartlinked RTL build
git-svn-id: trunk@26126 -
2013-11-24 03:09:24 +00:00
Jonas Maebe
f348e89112 - removed too early assignment of have_first_symbol:=true, making the later
check of "if not have_first_symbol and dosub then" always evaluate to
    false (found by looking at the results of constant propagation :)

git-svn-id: trunk@26011 -
2013-11-10 15:08:28 +00:00
svenbarth
6f5a648516 Improve the cpu type handling for M68k just in case we should branch 2.8.0 before I can start working on M68k again.
Therefor the cpu type (-Cp...) "coldfire" was split up into "isaa", "isaa+", "isab" and "isac". The Linux RTL can currently compiled for "68020", "isab" and "isac". For the other three Bcc.L must be handled differently (only Bcc.B/W supported) and for "68000" also EXT.L needs to be handled differently.

fpcdefs.inc:
  + define CPUCAPABILITIES if capabilities can be set for a certain CPU type (currently ARM, AVR and M68k)
options.pas:
  * check for CPUCAPABILITIES instead of specific CPUs
assemble.pas:
  - the handling of the CPU type is already done in m68k/ag68kgas.pas, Tm68kGNUAssembler.MakeCmdLine (and thereby already using the gascputypestr array!)
m68k/cpuinfo.pas:
  - tcputype: remove "cpu_coldfire"
  + tcputype: add "cpu_isa_a", "cpu_isa_a_p", "cpu_isa_b" and "cpu_isa_c"
  + add "cpu_coldfire" constant which contains all Coldfire specific cpu types
  * adjust "cputypestr" and  "gascputypestr"
  + add tcpuflags and cpu_capabilities (DBRA restriction was checked with CPUCOLDFIRE, CAS/TAS will be needed for atomic operations and BRAL restriction was discovered during testing of new cpu types)
m68k/cgcpu.pas:
  * adjust checks for "cpu_coldfire"
m68k/n68kadd.pas:
  * don't use a BRA.L if it is not supported, but (at least for now) a BRA.W
aggas.pas:
  * adjusted check for Coldfire

git-svn-id: trunk@25457 -
2013-09-11 17:07:32 +00:00
Jonas Maebe
de56f909d5 * synchronized with trunk up to and including r25430
git-svn-id: branches/cpstrrtl@25431 -
2013-09-06 10:09:26 +00:00
Jonas Maebe
efa95bed66 * changes so the compiler can be compiled with a unicode RTL without warnings
git-svn-id: branches/cpstrrtl@25307 -
2013-08-19 22:47:07 +00:00
sergei
9e3d17778d - Removed TAbstractAssembler and TAbstractAssemblerClass, they are not used anymore.
git-svn-id: trunk@25278 -
2013-08-18 11:03:30 +00:00
sergei
2caa05ccd1 * Make Win64 SEH support enabled by default. If necessary to disable, compiler should be cycled with OPT=-dDISABLE_WIN64_SEH. Mantis #24012.
git-svn-id: trunk@23732 -
2013-03-08 16:58:05 +00:00
svenbarth
a68e237450 Fix cycle/build with -al
assemble.pas, TExternalAssembler.WriteSourceLine:
  * don't generate an internal error if no module is found; if the system unit is compiled with -al there can be cases when fileinfo contains only zeros (though I wonder where this comes from; I'll need to investigate this when I have time)

git-svn-id: trunk@23631 -
2013-02-19 10:11:39 +00:00
svenbarth
b219638284 Ensure that no garbage for specialization code is written in case of "-al"
assemble.pas, TExternalAssembler.WriteSourceLine:
  * also respect a module change which can happen if the generated assembler code belongs to a specialized generic

git-svn-id: trunk@23628 -
2013-02-18 16:53:37 +00:00
sergei
d967566a37 * Changed TExternalAssembler.CreateSmartLinkPath to use ansistrings (TPathStr), like the rest of file handling routines do.
git-svn-id: trunk@23214 -
2012-12-23 14:11:27 +00:00
Károly Balogh
7fa067265b small & ugly patch to work around old GNU AS on Amiga, which doesn't know about -march=
git-svn-id: trunk@23160 -
2012-12-17 00:12:30 +00:00