Commit Graph

14917 Commits

Author SHA1 Message Date
sergei
cded05ccef + MIPS linker: support linking PIC object files with non-PIC ones, by routing absolute calls into PIC code through stubs that load R25.
git-svn-id: trunk@24098 -
2013-03-31 19:58:52 +00:00
florian
9375529430 + put guids in a constant pool as well
git-svn-id: trunk@24061 -
2013-03-29 18:48:55 +00:00
sergei
e4949e3044 + ELF linker: finish support for imported symbol versions.
git-svn-id: trunk@24056 -
2013-03-29 15:17:48 +00:00
sergei
29c0266fb9 + Added values for DT_FLAGS and DT_FLAGS_1 dynamic tags.
git-svn-id: trunk@24053 -
2013-03-29 14:46:44 +00:00
sergei
c5bf2ecb65 + MIPS linker: added ELF header flags, TLS relocations and an utility procedure to handle endianness.
git-svn-id: trunk@24052 -
2013-03-29 14:11:27 +00:00
Jonas Maebe
9973a5737f * don't give an error when calling a class method on an object typecasted
into a class reference (problem introduced by r23976)

git-svn-id: trunk@24039 -
2013-03-28 18:45:09 +00:00
Jonas Maebe
4daa40f480 * reorder register parameters to minimise the number of register conflicts,
which usually (but not always) results in better register allocation

git-svn-id: trunk@24038 -
2013-03-28 18:44:57 +00:00
sergei
1d32b107f5 * Made address comparison 64-bit safe.
* Referencing a section is basically referencing its AT_SECTION symbol, fixed reporting in map file.

git-svn-id: trunk@24029 -
2013-03-28 10:44:09 +00:00
Jonas Maebe
4992fd1c88 * prevent previously freed temp blocks from getting lost occasionally (can
significantly reduce the stack frame size, more than 3 times in one place
    in the compiler)

git-svn-id: trunk@24025 -
2013-03-27 17:16:34 +00:00
Jonas Maebe
477eeadaca * made alloctemp more generic
git-svn-id: trunk@24023 -
2013-03-27 17:16:26 +00:00
Jonas Maebe
262593c571 * "can not" -> "cannot"
git-svn-id: trunk@24012 -
2013-03-26 18:35:38 +00:00
pierre
702effaad0 Force use of PIC compatible calling for register variable calls as procvars might be internal or external and thus require PIC
git-svn-id: trunk@24005 -
2013-03-25 21:53:31 +00:00
florian
b231c049c9 * arm thumb knows only positively growing stacks
git-svn-id: trunk@24000 -
2013-03-25 17:56:13 +00:00
florian
93fcd9152e * arm thumb supports only tst reg1,reg2
git-svn-id: trunk@23997 -
2013-03-25 17:53:54 +00:00
florian
64bc09ae58 * fixes several issues with arm thumb stack frame
git-svn-id: trunk@23988 -
2013-03-24 21:40:23 +00:00
florian
b434b7bc7d * armv6-m has no blx <immediate>
git-svn-id: trunk@23983 -
2013-03-24 20:24:15 +00:00
florian
ac4a6accd3 + SVC instruction
git-svn-id: trunk@23980 -
2013-03-24 20:22:06 +00:00
florian
07762e5c25 + proper assembler command line parameters for arm thumb
git-svn-id: trunk@23979 -
2013-03-24 20:21:22 +00:00
florian
89b4939cec * correctly handle stackframes with size>508 for arm thumb
git-svn-id: trunk@23977 -
2013-03-24 18:51:23 +00:00
Jonas Maebe
1601f6bea8 * treat methods called via records the same as records called via objects
without virtual methods: they may initialise the instance (mantis #23667)

git-svn-id: trunk@23976 -
2013-03-24 16:27:02 +00:00
florian
79d5d83f6c * fixed lazy english
git-svn-id: trunk@23975 -
2013-03-23 19:29:30 +00:00
sergei
6f1997f5e5 + MIPS: added profiling support
git-svn-id: trunk@23950 -
2013-03-21 13:40:50 +00:00
Jonas Maebe
e621bff943 * don't make a deep copy of records (and in the future, objects) in with-
statements on the JVM target (mantis #24089)

git-svn-id: trunk@23945 -
2013-03-20 16:23:25 +00:00
svenbarth
376bd046aa Don't allow "static" for class operators or normal methods (except in objects).
pdecsub.pas, pd_static:
  * check whether the given pd is an operator or a class method not inside an Object and generate an error if either of these is true
msg/errore.msg, msgidx.inc, msgtxt.inc:
  * add a message to inform that a certain procedure directive is not allowed

+ added tests

git-svn-id: trunk@23944 -
2013-03-20 10:46:55 +00:00
Jonas Maebe
0ad9f345dd * handle explicit typecasts of procdefs to procvardefs always via
proc_to_procdef, because a methodpointer may have to be discarded

git-svn-id: trunk@23929 -
2013-03-19 13:23:51 +00:00
Jonas Maebe
5152c86932 * set the location size of load nodes of procsyms without methodpointer/
framepointer
  * fixed conversion of procedure of object/nested procedure into a procvar
    that only contains the code address

git-svn-id: trunk@23928 -
2013-03-19 12:27:57 +00:00
Jonas Maebe
8b7071c8e8 * fixed recording generics token line info on big endian systems
git-svn-id: trunk@23926 -
2013-03-18 13:29:15 +00:00
florian
c345ed8945 * generate branches for arm-thumb which are always sufficient big, the optimizer can fix this later on
git-svn-id: trunk@23904 -
2013-03-17 20:26:06 +00:00
florian
d4613fe961 * update init_settings.setalloc in SetCompileMode if changeinit is set
git-svn-id: trunk@23898 -
2013-03-17 16:42:34 +00:00
florian
5a6e879248 * patch by Aleksa Todorovic: store relative include paths in PPUs, resolves #9961
git-svn-id: trunk@23897 -
2013-03-17 16:22:00 +00:00
florian
fdde11fcc8 - -CPPAKCSET=NORMAL and CPPAKCSET=DEFAULT should set setalloc to 0 as $PACKSET=... with the same parameters does
git-svn-id: trunk@23893 -
2013-03-17 15:10:33 +00:00
florian
7511968f2b + warn if one of the linux libc startup code files is not found
git-svn-id: trunk@23892 -
2013-03-17 14:51:19 +00:00
florian
20a534e63f * fixed code which causes range check errors when compiled with -Cr
git-svn-id: trunk@23889 -
2013-03-17 14:24:50 +00:00
Jonas Maebe
e1e11f81e3 * fixed using readstr/writestr inside routines called from the parameter
list of another readstr/writestr expression (mantis #23912)

git-svn-id: trunk@23888 -
2013-03-17 14:23:33 +00:00
florian
784641ec46 * delay parsing of the closing SEMICOLON of a uses clause till the
unit map is updated to avoid symbols not being found, resolves #8611

git-svn-id: trunk@23886 -
2013-03-17 11:06:04 +00:00
sergei
1c652eb8f9 MIPS procinfo improvements:
- Removed TMIPSProcInfo.needs_frame_pointer, it duplicates pi_needs_stackframe flag.
- Don't save RA for leaf procedures.
* GP is caller-saved register, it does not need saving/restoring as nonvolatile registers. Handle its restore position as a "normal" temp, whose offset is known before secondpass. This allows to handle PIC calls without involving GAS macro processing.

git-svn-id: trunk@23885 -
2013-03-17 08:43:39 +00:00
florian
d5985b4f0e * patch by Christophe Staïesse to implement more ISO-like read behaviour in iso mode, resolves #24060
git-svn-id: trunk@23884 -
2013-03-17 08:27:21 +00:00
florian
380bc56e32 + create a default heap on embedded targets and register this default heap
* sysutils for the embedded target depends on a working heap manager

git-svn-id: trunk@23853 -
2013-03-16 10:37:18 +00:00
masta
d60049a1fd Removing duplicated hash functions in compiler/cclasses.pas
FPHash was duplicated 4 times for different input types. I've
consolidated it to a single function with 3 proxy-functions which can be
inlined.

I've also modified the hash function itself slightly, it now resembled
the original DJB hash and seems to perform a tiny bit better.

git-svn-id: trunk@23850 -
2013-03-16 00:50:45 +00:00
pierre
8e2fcd6bfe Enable use of dllprt0 for netbsd
git-svn-id: trunk@23848 -
2013-03-15 16:21:22 +00:00
pierre
18ece9cf75 Also use VERSION in scripts for openbsd and netbsd
git-svn-id: trunk@23844 -
2013-03-15 15:39:32 +00:00
pierre
1ad6aacb78 * Also use dllprt0 for openbsd
git-svn-id: trunk@23829 -
2013-03-14 13:51:16 +00:00
sergei
6245bfd74f + ELF linker: load e_ident and e_flags from ELF header into properties of TElfObjData, necessary for targets that must be able to link together object files of different flavors.
git-svn-id: trunk@23821 -
2013-03-14 08:34:17 +00:00
paul
e379daaf9c compiler, rtl: move cpXXXX.pas files from compiler to RTL\charmaps directory and cleanup them, enable charmaps building for the majority of targets
git-svn-id: trunk@23799 -
2013-03-12 01:35:25 +00:00
paul
3682fddc49 compiler: minor optimization of tscannerfile.recordtoken
git-svn-id: trunk@23798 -
2013-03-12 01:32:07 +00:00
florian
2c7b34cda1 * don't apply cse on static variables being regable
git-svn-id: trunk@23785 -
2013-03-10 20:29:52 +00:00
florian
c2baf7b4c0 Merge r23058
git-svn-id: trunk@23776 -
2013-03-10 16:37:57 +00:00
florian
c0d4f189e9 * and takes three operands
git-svn-id: trunk@23775 -
2013-03-10 16:16:50 +00:00
florian
be81b89147 * fix bugs in previous commit
git-svn-id: trunk@23774 -
2013-03-10 14:33:10 +00:00
florian
086ae4b999 Merge r22905 and r22906
git-svn-id: trunk@23773 -
2013-03-10 10:45:34 +00:00