Commit Graph

48452 Commits

Author SHA1 Message Date
Károly Balogh
a73404a88c * disable default VLink for AmigaOS/PowerPC, as current VLink internalerrors while tries to link FPC-generated objects on this platform, for unknow reasons
git-svn-id: trunk@33494 -
2016-04-13 03:16:58 +00:00
svenbarth
9d1938a713 Partial merge of r28851 (aside the parts that requires the global assembler symbols)
Generate the import library for each used package.

pkgutil.pas:
  - remove function createimportlibfromexports
  + new function createimportlibfromexternals which uses the imported unit symbols of a unit to generate the correct import library for each used package used in a program or library
pmodules.pas, proc_program:
  * move the generation of the import library further down until all tables were generated of which entries might reside in a package
  * use createimportlibfromexternals to generate the import library for the program/library
-- Diese und die folgenden Zeilen werden ignoriert --

M    pmodules.pas
M    pkgutil.pas

git-svn-id: trunk@33493 -
2016-04-12 21:32:25 +00:00
svenbarth
9fd8c8718a Partial merge of r28846 (without the global assembler symbols)
To correctly generate the import library for a package we need to resolve the dangling external symbols of all units. For this each unit now stores which symbols it exported from another unit and it also stores all global and external assembler symbols it has (maybe this can be streamlined later on, but for now this works).

entfile.pas:
  + new entry for the imported unit symbols
fmodule.pas, tmodule:
  + new field unitimportsyms which holds all symbols imported by a unit from another unit
  + new method to add an imported symbol
  * create, destroy & reset: correctly instantiate/free the two new lists
fppu.pas, tppumodule:
  + new field unitimportsymsderefs to hold the derefs during loading from/storing to PPU
  + new method buildderefunitimportsyms to generate the derefs for each imported symbol
  + new method derefunitimportsyms to resolve each imported symbol deref
  + new method readunitimportsyms to read the imported symbols from the PPU
  + new method writeunitimportsyms to write all imported symbols to the PPU
  * load_implementation: read the imported symbols if their entry is encountered
  * writeppu: generate the derefs for the imported symbols and write them to the PPU
  * load_usedunits: resolve the imported symbols once all derefs are known
symtable.pas:
  * addsymref: if the symbol is not from the current unit than mark it as imported
ppu.pas:
  * increase PPU version
-- Diese und die folgenden Zeilen werden ignoriert --

M    entfile.pas
M    fmodule.pas
M    fppu.pas
M    ppu.pas
M    symtable.pas

git-svn-id: trunk@33492 -
2016-04-12 20:59:35 +00:00
florian
9b1e6e1976 - removed i386 specific fpc_pchar_length implementation as it is much slower than the generic one which takes advantage of IndexByte
git-svn-id: trunk@33491 -
2016-04-12 18:13:24 +00:00
florian
2b082d88a6 * generic implementation of fpc_pchar_length uses IndexByte instead of a simple while loop
git-svn-id: trunk@33490 -
2016-04-12 18:11:27 +00:00
Károly Balogh
9dae10b8ba * enable VLink when running on Amiga/MorphOS targets earlier so it can even be disabled afterwards
git-svn-id: trunk@33489 -
2016-04-12 16:52:47 +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
yury
511f5b5ded * trwsync test: Increased timeout to 60 seconds. Trying to fix random failures due to the timeout on busy machines.
git-svn-id: trunk@33487 -
2016-04-12 08:38:18 +00:00
michael
2282996817 * Add command-line options to enable image compression and JPEG image support
git-svn-id: trunk@33485 -
2016-04-11 19:08:21 +00:00
michael
591f3dc879 * Fix bug #29989, add compression and JPEG image support (by Ondrej Pokorny)
git-svn-id: trunk@33484 -
2016-04-11 19:07:27 +00:00
michael
b46969cfa8 * Several improvements in PDF generator:
- Removed TTextDictionary class.
 - adds code comments and fixes a spelling mistake.
 - Removes TFontDef definition - we don't need it any more.
 - refactored TPDFDocument Text API to overloaded methods CreateText()
 - test: update test project to reflect the latest API changes.
 - unittests: update tests to match recent API changes.

git-svn-id: trunk@33483 -
2016-04-11 18:27:34 +00:00
michael
b30a809fdd * Added ttfdump tool
git-svn-id: trunk@33482 -
2016-04-11 18:26:23 +00:00
Károly Balogh
2e398fa8f7 * disabled powerpc-amiga target for packages where it doesn't build (yet), so make all works
git-svn-id: trunk@33481 -
2016-04-10 21:52:33 +00:00
Jonas Maebe
08d63e3408 * allow default parameters for constref (mantis #29992)
git-svn-id: trunk@33480 -
2016-04-10 21:27:29 +00:00
Jonas Maebe
953c47dd97 - disabled DWARF (a)ranges for Darwin, it's not supported/used there
git-svn-id: trunk@33479 -
2016-04-10 21:16:55 +00:00
florian
71b7cd7e1d * the size of DW_FORM_ref_addr entries depends on the DWARF version
git-svn-id: trunk@33477 -
2016-04-10 19:46:05 +00:00
Károly Balogh
2e64db935a m68k: BSET and BCLR's dest operand is actually readwrite, not write only. fixes sets with regvars, when the regvar is spilled
git-svn-id: trunk@33476 -
2016-04-10 18:56:51 +00:00
michael
4b54a82678 * Implement ImageSize in Read handler (Patch by Ondrej Pokorny, bug ID #29988)
git-svn-id: trunk@33474 -
2016-04-10 16:05:50 +00:00
michael
2d52f18152 * Patch from Ondrej Pokorny to implement and use TFPCustomImage.FindHandlerFromExtension
git-svn-id: trunk@33473 -
2016-04-10 15:57:59 +00:00
michael
3b2770854a * Remove unneeded raising of exception
git-svn-id: trunk@33472 -
2016-04-10 15:52:31 +00:00
michael
65e901c844 * Fix foe 29990
git-svn-id: trunk@33471 -
2016-04-10 13:23:30 +00:00
florian
a7346b2f9d + make use of .debug_aranges section for faster name search when generating stack backtraces
git-svn-id: trunk@33470 -
2016-04-10 12:21:35 +00:00
michael
fb87b6bc9c * Patch from Ondrej Pokorny (bug ID 29987)
- utf8string-aware TFPFontCacheItem.TextWidth (utf16 surrogate pairs aren't supported though)
  - Cached result for TFPFontCacheItem.GetFontData. 
  - Fix for range check error in TTFFileInfo.PrepareFontDefinition.

git-svn-id: trunk@33468 -
2016-04-10 10:32:54 +00:00
michael
b7a76bd3ab * Ondrejs fix for resetting stream is now redundant
git-svn-id: trunk@33467 -
2016-04-10 09:19:35 +00:00
michael
2d68132812 * Reset position after internalcheck
git-svn-id: trunk@33466 -
2016-04-10 07:04:21 +00:00
michael
1ef0ce2d92 * Implement InternalCheck (By Ondrey Pokorny, Bug ID #29985)
git-svn-id: trunk@33465 -
2016-04-10 06:53:20 +00:00
michael
12f11284bf * Record and reuse start position after checkcontents (Ondrey Pokorny, bug ID #29985)
git-svn-id: trunk@33464 -
2016-04-10 06:51:38 +00:00
Tomas Hajny
84fcab3fef * notify unit video of switching consoles under windows
git-svn-id: trunk@33463 -
2016-04-10 01:44:29 +00:00
Tomas Hajny
29cf2c9ed7 * avoid division by zero if no screen information is available on startup
git-svn-id: trunk@33462 -
2016-04-10 01:42:53 +00:00
Tomas Hajny
837b4bcff9 * allow working with console even if std output is redirected, add possibility of changing the console handle (needed for IDE or other programs switching consoles)
git-svn-id: trunk@33461 -
2016-04-10 01:41:32 +00:00
Tomas Hajny
92d045c483 * GetStdHandle returns a THandle (use of longint was not 64-bit safe)
git-svn-id: trunk@33460 -
2016-04-10 01:26:30 +00:00
Károly Balogh
d58d71666d * fixed build on architectures with cpufpuemu defined (like m68k)
git-svn-id: trunk@33459 -
2016-04-09 20:09:14 +00:00
Károly Balogh
0e41519516 * fixed powerpc build
git-svn-id: trunk@33457 -
2016-04-09 12:38:19 +00:00
michael
1a4dd1b9b2 * Fixed typo in russian message (Ondrej Pokorny)
git-svn-id: trunk@33456 -
2016-04-09 08:40:01 +00:00
Károly Balogh
4ed3a3f09a * re-read the libbase already pushed on the stack for AROS syscalls, instead of trying to re-resolve it. should fix threadvar libbases on AROS.
git-svn-id: trunk@33455 -
2016-04-08 22:42:29 +00:00
florian
90b284e169 + generate .debug_aranges sections for dwarf debug info: enables faster address to debug info translation
git-svn-id: trunk@33454 -
2016-04-08 20:19:59 +00:00
michael
897547b115 * More fixes from Graeme, hopefully UTF16 works now fully
git-svn-id: trunk@33453 -
2016-04-08 18:16:46 +00:00
svenbarth
f8e9b33f99 Merge first batch of package handling related revisions from the packages branch
Merged revision(s) 28796, 28837-28845, 28847-28850, 28852, 32135 from branches/svenbarth/packages:
Provide possibility to pass packages and search paths for packages as parameters.

fpkg.pas:
  + new unit which contains the base types related to package files (most importantly "tpackage")
globals.pas:
  + new variable "packagesearchpath" which contains all paths in which package files should be looked for
  + new variable "packagelist" which contains a list of all packages that should be used in a program or library
  * InitGlobals & DoneGlobals: initialize/finalize "packagesearchpath" accordingly ("packagelist" is handled in unit fpkg using a init/done-callback)
options.pas:
  + TOption: new fields "parapackagepath" and "parapackages" to keep track of package search paths and package files passed as parameters
  * TOption.interpret_option: use '-Fp' for package search paths and '-FP' for package files
  * read_arguments: apply the passed package search paths and packages to their respective containers
........
+ add a new unit which will contain basic functions related to handling packages
........
Move package related functions from pmodules to pkgutil.

pmodules.pas => pkgutil.pas:
  * createimportlibfromexports
  * varexport
  * procexport
  * insert_export
  * RewritePPU
........
* adjust indentation
........
Extract the code to export the symbols of a unit to its own function in pkgutil so that less functions need to be exported.

pmodules.pas, proc_package:
  * move code to export the symbols of a unit to new function export_unit
pkgutil.pas:
  + new function export_unit
  - remove exports of procexport, varexport and insert_export
........
Some small fixes for package parsing.

pmodules.pas, proc_package:
  * use orgpattern instead of pattern to build the module name (like is done in uses sections)
  * ignore duplicates when generating exports
  - no need to generate an import library for the package; that is done by the program/library that uses the package
........
+ new unit fpcp of which the class tpcppackage handles the reading and writing of package metadata from/to pcp files (equivalant to tppumodule).
........
+ add unit which contains representation of a PCP file (tpcpfile) like tppufile is for units.
........
Improve export generation.

pkgutil.pas:
  + new function exportprocsym to correctly export a procedure with all its aliases
  + new function exportabstractrecordsymproc to export the members of structured types 
  * insert_export: handle also namespacesym and propertsym (by ignoring them)
  * insert_export: correctly export classes, record and objects
  * insert_export: use new exportprocsym function to export a procsym
  * insert_export: only export public variables of a static symtable


........
+ add entry constants for the name of the package and the package file names, both used by a PCP file
........
* use messages to get rid of most writelns related to package loading
........
Add additional entry types for PCP files

entfile.pas:
  + new entries ibstartrequireds and ibendrequireds to store the list of required packages
  + new entries ibstartcontained and ibendcontained to store the list of contained units
  + new entries ibstartppus and ibendppus to store the list of contained PPU files
........
Generate the PCP file once the package file and the used units were compiled correctly.

pmodules.pas:
  * proc_package: generate the PCP file upon successful compilation
........
Add the possibility to load all packages supplied as parameters.

pkgutil.pas:
  + new function load_packages to load all packages supplied as parameters
pmodules.pas, proc_program:
  * use load_packages to load all packages before any unit is loaded
........
Add code which tries to load a unit from a package first and only then as usual.

fppu.pas, tppumodule:
  + new method loadfrompackage which searches all available packages for the unit and loads it from there if found
  * loadppu: first try to load the unit from a package if any are available
........
Don't link objects files of a unit that is provided by a package.

pmodules.pas, proc_program:
  * if a unit has uf_in_library set we must not include it in the units we link against
........

git-svn-id: trunk@33452 -
2016-04-08 15:40:27 +00:00
svenbarth
0f9e556c80 * regenerate message files after r33450
git-svn-id: trunk@33451 -
2016-04-08 14:57:08 +00:00
svenbarth
cde95b0e4a Merge all message related changes from the package branch
Merged revision(s) 29015, 29036, 31989, 32132-32133, 32306, 32478, 32513 from branches/svenbarth/packages:
Start to use package related messages
........
+ add a error message for specifying a package multiple times

........
msg/errore.msg:
  + add additional messages for implicitely imported units and units that must not be part of a package
........
* fix name of section for package related messages
+ add missing EndOfTex tag
........
+ add more package loading related messages
........
errore.msg:
  + new message that a PPU is loaded from a package
........
+ new message for when a unit is listed in the contains section that is already part of another package

........
msg/errore.msg:
  + new message when a unit from an indirectly referenced package is used

........

git-svn-id: trunk@33450 -
2016-04-08 14:56:20 +00:00
svenbarth
5be046d8dc Consider the revisions for indirectly loading global variables as merged.
Merged revision(s) 28642-28688 from branches/svenbarth/packages:
Generate indirect symbols for global variables and load them indirectly when necessary.

ptconst.pas, read_typed_const:
  * generate an indirect symbol for the const data using the indirect_suffix constant
ngenutil.pas, tnodeutils.insertbssdata:
  * generate an indirect symbol for the uninitialized data using the indirect_suffix constant
ncgld.pas, tcgloadnode.pass_generate_code:
  * load static variables indirectly if the following conditions are true:
      - the target supports packages (otherwise this is a waste of cycles)
      - the variable is not external
      - IMPORTEDDATA is active
      - the variable is loaded from a different unit
........
Forgot a variable declaration
........

git-svn-id: trunk@33449 -
2016-04-08 14:24:12 +00:00
svenbarth
9857a27ad8 Generate and use an indirect symbol for VMTs.
Note: the merged code has been adjusted to a) use the typed constant builder and b) to not use the indirect symbol when its not necessary (non-Windows or same unit)

Merged revision(s) 28340, 28350 from branches/svenbarth/packages:
Generate an indirect VMT symbol for each generated VMT.

ncgvmt.pas, TVMTWriter:
  * writevmt: write a symbol with the indirect VMT name that references the direct VMT symbol
........
Load the VMT using the indirect symbol if the target supports packages.

ncgmem.pas, tcgloadvmtaddrnode:
  * pass_generate_code: if tf_supports_packages is set in target_info.flags we load the VMT using the indirect symbol, otherwise we load it using the direct symbol

........

git-svn-id: trunk@33448 -
2016-04-08 14:21:51 +00:00
svenbarth
140f5b5f94 Write indirect symbols for the RTTI (basically a merge of r28238, but using the typed constant builder and the new indirect asmbinds)
ncgrtti.pas, TRTTIWriter:
  * write_rtti & write_rtti_extrasyms: generate an indirect symbol for each of the RTTI symbols (they are not used yet, but soon will be)
  * write_rtti: reorder operations a bit: first free the tcb (we don't need it anymore), then write the indirect symbol and only then write any extra symbols that might be needed (this way the RTTI data and the indirect symbol will be next to each other)
  

git-svn-id: trunk@33447 -
2016-04-08 13:39:04 +00:00
Károly Balogh
4e964c2ed7 m68k: rewrote fixref and a_load_ref_ref, fixing a bunch of problems on ColdFire, unifying and simplifying the code a lot, and hopefully not killing anything in the process
git-svn-id: trunk@33446 -
2016-04-08 03:27:19 +00:00
Károly Balogh
96fe4313dd m68k: fixed spilling code interfering with some ADDQ/SUBQ/MOV3Q instructions, fixes paszlib failing since r32830
git-svn-id: trunk@33445 -
2016-04-08 03:21:09 +00:00
yury
a934312e4f * pas2jni: Minor fix to exe extension.
git-svn-id: trunk@33436 -
2016-04-07 13:17:46 +00:00
yury
288f7285a3 * pas2jni: Fixed exit code.
git-svn-id: trunk@33435 -
2016-04-07 13:08:47 +00:00
marco
39f1244041 * fix mantis #29970
git-svn-id: trunk@33432 -
2016-04-07 09:30:03 +00:00
michael
438995b249 * Fix some hints
git-svn-id: trunk@33431 -
2016-04-06 21:26:15 +00:00
Legolas
3f80e9e221 * libndsfpc updated to ver. 1.5.12
git-svn-id: trunk@33429 -
2016-04-06 19:13:31 +00:00