Commit Graph

864 Commits

Author SHA1 Message Date
Jonas Maebe
1b66995754 * factored out check to determine whether a variable can be subscripted in
inline assembly, and fixed check after r35959 (mantis #32318)
   o can also subscript parameters passed by value on the stack
   o can also subscript local variables, the parameters passed by reference
     that are subsequently copied into a local

git-svn-id: trunk@37886 -
2018-01-01 14:29:21 +00:00
florian
8eb885de91 * better error message if a unit is not found
git-svn-id: trunk@37868 -
2017-12-29 17:27:44 +00:00
nickysn
ed4a5acb31 + added -Twin16 (the 16-bit windows target) to the i8086 crosscompiler help screen
git-svn-id: trunk@37710 -
2017-12-11 14:11:25 +00:00
florian
b41cb26727 + write selected features in ppu of the system unit and load them further on
* ppu version update
* -Sf might be used only during system unit compilation
* loadsystemunit factored out so the system unit can be loaded earlier than other units to get features set

git-svn-id: trunk@37708 -
2017-12-10 16:32:56 +00:00
nickysn
29558a74cd + support exporting labels from asm blocks in intel syntax asm blocks via the
'public' directive

git-svn-id: trunk@37530 -
2017-10-30 16:44:13 +00:00
nickysn
e58bad8eef + check for the 'pop cs' instruction in the x86 inline assembler and print a
warning (on the i8086 target) or an error (on i386 and x86_64) when this
  instruction is used (because it only works on 8086 and 8088 CPUs)

git-svn-id: trunk@37514 -
2017-10-24 15:07:20 +00:00
nickysn
cece021bd1 + check whether the address sizes match for x86 string instructions with two
memory operands, when using the at&t syntax inline assembler

git-svn-id: trunk@37473 -
2017-10-16 16:01:38 +00:00
nickysn
a8232ac477 + added warning if source or destination for x86 string instructions isn't
specified to be (%esi) or (%edi), when using at&t syntax assembler (this is
  not considered an error by intel syntax assemblers, so we're not adding a
  warning there, for now)

git-svn-id: trunk@37458 -
2017-10-14 15:27:00 +00:00
nickysn
1ee36b5b9b + added error message in the intel assembler reader, when an attempt is made to
override the ES segment in an x86 string instruction (because it cannot be
  overriden)

git-svn-id: trunk@37454 -
2017-10-13 14:56:38 +00:00
svenbarth
fcc1ce7a08 * fix for Mantis #30344: applied patch by Mario Ray Mahardhika to add new command line option -Sj[-|+] to control writeable typed constants (with a small adjustment to the help text)
+ added test

git-svn-id: trunk@37437 -
2017-10-09 19:19:23 +00:00
svenbarth
9619576515 + add support for $SetPE{OS,SubSys,User}Version directives; Delphi compatible; Note: $SetPEUserVersion takes precedence to $Version
+ added test

git-svn-id: trunk@37364 -
2017-09-30 13:55:29 +00:00
pierre
91fa2999ee Add aarch64 and sparc64 linux targets to help output
git-svn-id: trunk@37249 -
2017-09-18 11:58:45 +00:00
Károly Balogh
925ffcc744 regenerated compiler messages after r37029
git-svn-id: trunk@37030 -
2017-08-22 10:45:52 +00:00
pierre
0041450edc Regenerated with -Tandroid for mipsel not mipseb
git-svn-id: trunk@36896 -
2017-08-14 10:48:27 +00:00
pierre
4d29122097 msgtxt.inc and msgidx.inc regenerated after: Remove obsolete -Tsunos help line, it is not accpeted by the compiler anymore
git-svn-id: trunk@36828 -
2017-08-04 09:38:59 +00:00
nickysn
e667a18838 + support the codepage directive in the msg2inc converter util
* msgtxt.inc updated to include the codepage info

git-svn-id: trunk@36449 -
2017-06-08 15:46:30 +00:00
pierre
5c18830aab Regenerated files after: Add help for second argument to -Ch option, -Chx,y y is max heap size
git-svn-id: trunk@36259 -
2017-05-19 21:27:43 +00:00
pierre
b7fab7d39c Add -Wh command line option to enable HugeCode (equivalent of $F+)
for msdos memory models that support this.
  Add message to document this new command line option.

git-svn-id: trunk@36199 -
2017-05-12 22:49:50 +00:00
svenbarth
e9c40f5b24 + correctly handle COMDAT sections in COFF files (at least as long as the COMDAT selection isn't IMAGE_COMDAT_SELECT_ASSOCIATIVE or IMAGE_COMDAT_SELECT_EXACT_MATCH), fixes the .refptr problems mentioned in Mantis #30614
git-svn-id: trunk@36197 -
2017-05-12 15:57:31 +00:00
florian
e7fd71db36 + write name of segment/group which is too large
git-svn-id: trunk@35456 -
2017-02-19 19:15:18 +00:00
florian
c4fe4ab1f5 * correctly handle push <imm> on 80186+
git-svn-id: trunk@35455 -
2017-02-19 19:15:16 +00:00
svenbarth
a9888eba70 * also generate Big Obj COFF files with the GNU utilities (needs 2.25 or newer), at least as long as the new option -a5 isn't given, which disables this
Note 1: using an older AS might fail anyway if the amount of sections is too high (like in packages\odata\src\sharepoint.pp)
Note 2: it might be an idea to keep track of the created sections in the asmlists and only enable the option if *really* necessary (like with the internal COFF output generator), though this might lead to false positives due to multiple sections with the same name (since I'd prefer to use the KISS principle only a counter would be used)

git-svn-id: trunk@35381 -
2017-02-03 22:45:32 +00:00
florian
668b198d7c * fix for issue #29936: check if the internal needed types are available
git-svn-id: trunk@35310 -
2017-01-15 20:54:07 +00:00
Jonas Maebe
9cd707a27a * give an error if -Pxxx is specified to the compiler binary and xxx is not
the target architecture this compiler binary supports (mantis #30098)

git-svn-id: trunk@35299 -
2017-01-14 13:50:41 +00:00
florian
29a2c433f7 * -Sr option for iso mode: in case no command line parameter is passed, the file name for program parameters is derived from their variable name
git-svn-id: trunk@35257 -
2017-01-07 14:50:58 +00:00
florian
466d26b5ef * copyright notice updated to 2017
git-svn-id: trunk@35234 -
2017-01-04 21:32:19 +00:00
svenbarth
8c253703f0 * regenerate after r35181
git-svn-id: trunk@35182 -
2016-12-23 15:55:24 +00:00
svenbarth
a23cfd9a85 * regenerate msgidx.inc and msgtxt.inc after r35079; thankfully that didn't break the build this time since it was merely a text change ^.^'
git-svn-id: trunk@35080 -
2016-12-07 07:38:01 +00:00
Károly Balogh
64650261d1 m68k: refactor of the reglist and the regpair support in the assembler reader. also added support for float register lists for FMOVEM
git-svn-id: trunk@34783 -
2016-11-05 18:53:20 +00:00
pierre
e6ee3f445e msg files regenerated after:
* msg/errore.msg: Add new message saying that -gc and -Ur options are incompatible
   Add description to -gc option, saying it is experimental.
   Add warning at link time for program/library if checkpointer is used in any unit or main code.

git-svn-id: trunk@34566 -
2016-09-27 14:45:44 +00:00
yury
db590da1e6 * Added a new debug option switch -godwarfcpp - Simulate C++ debug information in DWARF. It is more correct way to workaround LLDB issues than in r34558. This option can be used for debuggers, which does not support Pascal correctly.
git-svn-id: trunk@34562 -
2016-09-26 13:05:17 +00:00
pierre
17ba06f7c8 Regenerated after: Add missing -Tlinux help line for mipsel compiler
git-svn-id: trunk@34448 -
2016-09-08 05:53:19 +00:00
Károly Balogh
464ecab542 huge syscall support refactor for Amiga-likes. removed large chunks of ancient duplicated code, and in general tried to make the entire thing more maintainable and cleaner. also added support for AROS EAXBase syscall convention
git-svn-id: trunk@34416 -
2016-09-03 07:57:23 +00:00
pierre
10454d4fec Regenerated msg files after: Add aarch64 to -P<x> CPU list
git-svn-id: trunk@34271 -
2016-08-11 09:07:01 +00:00
svenbarth
68f014a7c5 * regenerate after r34232
git-svn-id: trunk@34233 -
2016-07-29 18:44:24 +00:00
Károly Balogh
b0ca7e9594 show AT&T and Intel style assembler switches in i8086 and x86_64 help text. also fix Motorola name initials at several places for 68k
git-svn-id: trunk@34081 -
2016-07-06 13:34:38 +00:00
svenbarth
8ec2d5478c Regenerated after r33890
git-svn-id: trunk@33891 -
2016-06-03 20:53:58 +00:00
svenbarth
0f9e556c80 * regenerate message files after r33450
git-svn-id: trunk@33451 -
2016-04-08 14:57:08 +00:00
Jonas Maebe
dcedd62049 * regenerated after r33249
git-svn-id: trunk@33269 -
2016-03-18 12:43:44 +00:00
florian
cb4773432b + hardfloat directive (arm only): use hard float calling conventions regardless of the abi, resolves #29715
git-svn-id: trunk@33196 -
2016-03-06 15:47:31 +00:00
nickysn
06b9789928 + implemented a new {$ASMCPU XXX} directive, allowing to specify a different
CPU target for inline assembler blocks. In addition to the different CPUs
  (as listed under 'Supported CPU instruction sets:' in the output of 'fpc -i'),
  it also supports the special values 'ANY' and 'CURRENT'. 'ANY' means no
  restrictions (i.e. all instructions are available). 'CURRENT' means the
  current CPU target (as specified with the '-Cp' command line option). For
  backward compatibility, the default value is 'ANY' for all CPU targets, except
  i8086, where it defaults to 'CURRENT'.

  This directive requires support for the new asd_cpu directive in the assembler
  writer. This is currently implemented only for NASM, but will be supported in
  some of the other assembler writers as well (incl. the x86 internal assembler
  writer).

git-svn-id: trunk@33138 -
2016-02-29 22:25:25 +00:00
florian
aa0ec8c0e5 + show -Mextendedpascal in the help page
git-svn-id: trunk@33051 -
2016-02-04 20:32:09 +00:00
florian
368d77dfae + show -Miso in the help page
git-svn-id: trunk@33050 -
2016-02-04 20:22:36 +00:00
svenbarth
678716be22 msgidx.inc & msgtixt.inc: regenerate after r32978
git-svn-id: trunk@32979 -
2016-01-22 15:36:13 +00:00
nickysn
a508f9e5d3 + added check if the selected cpu is 386+ when writing a 66h or 67h prefix in
the i8086 internal object writer. This allows weeding out spurious 386
  instructions, as is similarly done by NASM when using it as an external
  assembler.

git-svn-id: trunk@32871 -
2016-01-07 15:40:32 +00:00
nickysn
114c76bc4a + added i8086 to the list of supported cpus in the compiler usage help screen
git-svn-id: trunk@32870 -
2016-01-07 14:38:25 +00:00
florian
37cb35d780 + support for the .code directive in arm inline assembler
git-svn-id: trunk@32840 -
2016-01-03 22:08:25 +00:00
Károly Balogh
bc51cc1151 regenerated msgidx.inc and msgtxt.inc afer r32324
git-svn-id: trunk@32325 -
2015-11-15 01:25:17 +00:00
svenbarth
017821f5db * regenerated msgidx.inc and msgtxt.inc after r32322
git-svn-id: trunk@32323 -
2015-11-14 21:22:55 +00:00
nickysn
a553b15a1c + handle properly inline asm segment constants different than word:
o 'DB SEG symbol' produces an error
  o 'DD SEG symbol' (and anything larger than DW, like DQ) adds extra high zeros
    to the segment constant (this is Turbo Pascal 7 compatible)

git-svn-id: trunk@32283 -
2015-11-10 21:18:34 +00:00
nickysn
995ca4fb12 + implemented the 'SEG @DATA' inline assembler directive for i8086
git-svn-id: trunk@32280 -
2015-11-10 17:26:21 +00:00
nickysn
7d41d19150 + added an error message when trying to compile a tiny model DOS .COM file with
segment relocations

git-svn-id: trunk@32276 -
2015-11-08 21:13:16 +00:00
pierre
6524e536fa Regenerated after addition of new general_e_exception_raised Error
git-svn-id: trunk@31800 -
2015-09-23 16:39:58 +00:00
svenbarth
79f19f79f2 msg/errore.msg:
+ add error message if a generic method is declared inside an interface
  + add error message if a generic method is declared as virtual

git-svn-id: trunk@31764 -
2015-09-18 14:52:47 +00:00
Jonas Maebe
4564bffb85 * use binutils 2.19+ linker script "augmentation" functionality to specify
how the fpc sections have to be linked *on Linux*. This prevents the
    "did you forget -T" warnings from ld, and in general is more correct than
    our previous approach of specifying a complete linker script without -T
    and hoping that there won't be any unexpected interactions with ld's
    built-in linker script (fixed version of r31664, thanks to Alan Modra)
   o use the new -X9 command line option to generate linker scripts that
     are compatible with binutils older than 2.19 (reverts to the old
     behaviour)

git-svn-id: trunk@31675 -
2015-09-14 07:24:54 +00:00
Jonas Maebe
e06a759e20 - reverted r31664, it causes crashes with some ld versions :/
git-svn-id: trunk@31670 -
2015-09-13 20:14:46 +00:00
Jonas Maebe
cd41bf672c * use binutils 2.19+ linker script "augmentation" functionality to specify
how the fpc sections have to be linked *on Linux*. This prevents the
    "did you forget -T" warnings from ld, and in general is more correct than
    our previous approach of specifying a complete linker script without -T
    and hoping that there won't be any unexpected interactions with ld's
    built-in linker script
   o use the new -X9 command line option to generate linker scripts that
     are compatible with binutils older than 2.19 (reverts to the old
     behaviour)

git-svn-id: trunk@31664 -
2015-09-13 19:06:14 +00:00
nickysn
253793ab9d + added the 'farprocspushoddbp' target switch to the help screen
git-svn-id: trunk@31570 -
2015-09-07 19:23:25 +00:00
nickysn
4c9b339c22 + added the huge memory model option to the compiler help screen
git-svn-id: trunk@31518 -
2015-09-04 20:43:38 +00:00
Jonas Maebe
e720b44471 * expand the error message for when trying to use a formal class with an
explanation of what to do

git-svn-id: trunk@31457 -
2015-08-30 14:32:56 +00:00
nickysn
e9c790f4eb + support 'SEG' in the i8086 inline assembler
git-svn-id: trunk@31428 -
2015-08-26 15:57:44 +00:00
nickysn
6e20e0fc84 + added checks and error messages in case a 16-bit segment or group exceeds 64k
git-svn-id: trunk@31416 -
2015-08-25 01:01:20 +00:00
florian
ee89e99189 * correctly write an error if one tries to implement a method introduced in a generic in a specialization of the generic, resolves issue #23169
git-svn-id: trunk@31241 -
2015-07-28 21:16:47 +00:00
Jonas Maebe
e3ddf1c0b7 * fixed typos in error.msg (patch by Stéphane Aulery, mantis #27931)
git-svn-id: trunk@30725 -
2015-04-25 18:15:18 +00:00
nickysn
bde7d0aacb + added "code segment too large" and "data segment too large" error messages
git-svn-id: trunk@30687 -
2015-04-20 23:47:22 +00:00
Jonas Maebe
3684e7665d * changed temporary type_e_anonymous_function_unsupported message into an
inline comment, because using a high message number wastes space in
    the messages array

git-svn-id: trunk@30666 -
2015-04-19 14:31:35 +00:00
Jonas Maebe
a56bf0f892 * regenerated message files after r30604
git-svn-id: trunk@30606 -
2015-04-15 18:29:47 +00:00
nickysn
470fb65e80 + implemented aasmcpu.process_ea for i8086
git-svn-id: trunk@30495 -
2015-04-08 12:54:09 +00:00
florian
9ab9e03650 * limit number of possible units with initialization/finalization for a certain architecture to high(aint)
+ give an error if the number of possible units is exceeded

git-svn-id: trunk@30450 -
2015-04-05 21:06:58 +00:00
florian
91db2a1698 + report when compilation of a unit is stopped because it has been already compiled during the recursive search in uses clauses
git-svn-id: trunk@30001 -
2015-02-24 21:46:09 +00:00
Jonas Maebe
3b5adcb3de + print iphonesim/x86_86-specific command line options in the help
git-svn-id: trunk@29982 -
2015-02-23 22:57:12 +00:00
Jonas Maebe
dcb6f2baae + print Darwin/AArch64-specific command line options in the help
git-svn-id: trunk@29981 -
2015-02-23 22:57:09 +00:00
Jonas Maebe
146e3bcb9e * synchronised with trunk till r29513
git-svn-id: branches/blocks@29516 -
2015-01-21 23:28:34 +00:00
Jonas Maebe
e97f31541e - reverted partial commit of merge
git-svn-id: branches/blocks@29515 -
2015-01-21 23:24:37 +00:00
Jonas Maebe
a76bbf363d * synchronised with trunk r29513
git-svn-id: branches/blocks@29514 -
2015-01-21 23:18:29 +00:00
Jonas Maebe
990e47f2d3 * give a warning instead of an error if a parameter or local variable in a
an Objective-C method masks an identifier from a category, because due
    to the fact that all standard categories are imported at the same time via
    the CocoaAll unit, this can often happen with categories you don't know/
    care about. These errors also didn't happen in 2.6.x

git-svn-id: trunk@29497 -
2015-01-17 15:27:42 +00:00
florian
d25dbec070 * allow the varargs directive in combination with stdcall as well, resolves #27299
git-svn-id: trunk@29496 -
2015-01-17 14:23:38 +00:00
Tomas Hajny
b1e51054cb * add information about -vz to the help pages
git-svn-id: trunk@29475 -
2015-01-14 17:08:26 +00:00
pierre
b3a4d47b96 Regenerated after msg/errore.msg commit:
Added two new messages for changes in assembler symbols after use.
Those changes can lead to invalid code generation.

git-svn-id: trunk@29445 -
2015-01-12 10:10:21 +00:00
svenbarth
af43e5e3e9 Fix for Mantis #24872.
psub.pas, tcgprocinfo.parse_body:
  * also check record symtables besides object symtables to determine whether the staticsymtable is accessed from a globally declared generic
  * use a translateable message if the static symtable is accessed if it should not
msg/errore.msg:
  + add new error message for when the static symtable is accessed from a global generic
msgidx.inc & msgtixt.inc:
  * regenerated

+ added test

git-svn-id: trunk@29427 -
2015-01-06 20:46:12 +00:00
florian
9b6b029ca1 * patch by Yuri Zaporozhets to fix typos in text messages, resolves #27250
git-svn-id: trunk@29396 -
2015-01-04 20:46:36 +00:00
florian
ec3063c8cc * forgot to regenerate msgtxt.inc
git-svn-id: trunk@29391 -
2015-01-04 18:48:52 +00:00
Tomas Hajny
ee82b6ea0b * do not mention OS/2 and EMX on option list for x86_64
git-svn-id: trunk@29318 -
2014-12-23 23:08:43 +00:00
florian
4289dd667d * managed types cause a different warning/hint when they are
used uninitialized, so users can turn off these messages if they want, resolves #24601 and #26403

git-svn-id: trunk@29295 -
2014-12-14 20:48:54 +00:00
florian
bb01872821 + handle -CPPACKENUM and -CPPACKRECORD, resolves #27153
git-svn-id: trunk@29283 -
2014-12-13 21:08:18 +00:00
svenbarth
e2c546b26f Regenerate msg*.inc files
git-svn-id: trunk@29239 -
2014-12-09 21:20:05 +00:00
florian
25e19f27a0 + write name of missing feature in error message
git-svn-id: trunk@29211 -
2014-12-07 18:20:56 +00:00
svenbarth
2288df9fcf Fix for Mantis #27073. The -vx option is not only for Win32, but in fact for information about tool invocation on all platforms.
git-svn-id: trunk@29129 -
2014-11-23 20:46:45 +00:00
Tomas Hajny
4c98113569 * note about multiple 't' in -gt added to the help page
git-svn-id: trunk@29099 -
2014-11-21 13:53:53 +00:00
Tomas Hajny
fc17e318b0 * add some previously missing options to the help page, add support for listing recognized compiler and RTL features in -i and allow skipping an empty section (controllertypes) in -i listing by providing support of multiple output lines based on one source line in the msg file using $\n as newline
git-svn-id: trunk@29097 -
2014-11-21 13:03:24 +00:00
Tomas Hajny
f7e6ea56d9 * support for machine-parseable output of information in fpc -i plus improvements in help (including previously missing information for some less used platforms
git-svn-id: trunk@29032 -
2014-11-09 14:55:31 +00:00
Tomas Hajny
2a0d760a3f * fixed typo (can not)
git-svn-id: trunk@29030 -
2014-11-08 21:03:22 +00:00
Jonas Maebe
839d11eac9 * mention that misplaced global directives are ignored (mantis #27004)
git-svn-id: trunk@28998 -
2014-11-06 09:02:40 +00:00
Károly Balogh
4431ba2c08 merged/updated AROS/i386 target to trunk from AROS branch, to support Marcus Sackrow's work on AROS support which will hopefully benefit all Amiga-like targets (classic, MorphOS) on the long run. Compiler only, RTL comes in the next run.
git-svn-id: trunk@28432 -
2014-08-17 18:18:07 +00:00
Jonas Maebe
c730e16031 * changed the syntax for block procvars from "xxx is block" to
"reference to ...; cdecl;". The "reference to ..." syntax is what Delphi
    uses for anonymous function references. The "cdecl;" indicates that this
    is for the C-variant of such references, which is what blocks are

git-svn-id: branches/blocks@28233 -
2014-07-18 09:15:29 +00:00
Tomas Hajny
82d62aa883 * added description for option @ and missing bracket at the end of list for -P
git-svn-id: trunk@28188 -
2014-07-08 22:33:18 +00:00
nickysn
7f9fa145e8 + added error message in case the HUGEPOINTERNORMALIZATION directive is used
with an invalid argument

git-svn-id: trunk@28152 -
2014-07-04 17:16:58 +00:00
nickysn
a3b48b79cb - rm the scan_w_hugepointernormalization_not_support message, replaced with
scanner_w_directive_ignored_on_target

git-svn-id: trunk@28150 -
2014-07-04 14:03:18 +00:00
svenbarth
30be5d8d33 As discussed on core enable the abstract class construction warning by default and also make it controllable with {$warn constructing_abstract ...}.
* scandir.pas, dir_warn: also adjust the message state for type_w_instance_abstract_class if the identifier is CONSTRUCTING_ABSTRACT
* msg/errore.msg: enable type_w_instance_abstract_class by default

* msgidx.inc, msgtxt.inc: updated

git-svn-id: trunk@28137 -
2014-07-02 19:40:22 +00:00
svenbarth
a7a9440692 Add a new warning message that is generated if an instance of an abstract class is created. This message is disabled by default, but can be switched on by using {$warn 4122 on} or {$warn 4122 error}.
Please note that this warning won't be triggered if an instance of that class is created using a class variable of that class type as the compiler can not know the type contained in the variable at compile time (see also the added test).

+ msg/errore.msg: added disabled message which informs about the instantiation of an abstract class
* pexpr.pas, do_member_read: generate the message if we have a constructor call for an abstract class using a loadvmtaddrnode (thus the type name is used and not a class variable)

* msg{idx,txt}.inc: updated

+ added test

git-svn-id: trunk@28127 -
2014-07-01 20:41:05 +00:00