Commit Graph

14020 Commits

Author SHA1 Message Date
pierre
56b4977858 Override tcallnode.pass_1 for use of got for cdecl'ared functions (assuming it can be PIC code)
git-svn-id: trunk@21797 -
2012-07-05 21:18:16 +00:00
pierre
c53d07f741 Improve addr_pic support
git-svn-id: trunk@21796 -
2012-07-05 21:16:02 +00:00
pierre
86d82a9006 Add reference to new ncpuld unit
git-svn-id: trunk@21795 -
2012-07-05 21:13:22 +00:00
pierre
514b14a5ae Override a_call_name to use _gp loading and call for cdecl (to get PIC compatible code)
git-svn-id: trunk@21794 -
2012-07-05 21:12:14 +00:00
pierre
fc81979f61 set got at create of cs_create_pic is used
git-svn-id: trunk@21793 -
2012-07-05 21:10:30 +00:00
pierre
c2cd8246cb Override tloadnode.pass_1 to for use of got for shared library variables and genrate_picvaraccess
git-svn-id: trunk@21792 -
2012-07-05 21:07:46 +00:00
pierre
b63bc6be13 MIPS: use OC_EQ instead of OC_NE for new_exception to avoid branch out of range error
git-svn-id: trunk@21791 -
2012-07-05 21:04:03 +00:00
pierre
024bde8875 Create .ent/.end pair for mips/mipsel and alpha
git-svn-id: trunk@21787 -
2012-07-04 16:38:57 +00:00
pierre
3acc0e6686 Add needs_got_for_pic, set global_used to that procedure
git-svn-id: trunk@21786 -
2012-07-04 16:38:19 +00:00
pierre
31a3f4f4a0 Add ait_ent and ait_ent_end to aiclass array
git-svn-id: trunk@21785 -
2012-07-04 16:37:14 +00:00
pierre
9b7fec59bb Support ait_ent and ait_ent_end
git-svn-id: trunk@21784 -
2012-07-04 16:36:33 +00:00
pierre
502cd6db29 Remove tai_ent, which is moved to aasmtai unit
git-svn-id: trunk@21783 -
2012-07-04 16:35:46 +00:00
pierre
0a21c01737 Use 8 for max record alignment for mips/mipsel
git-svn-id: trunk@21782 -
2012-07-04 16:34:51 +00:00
pierre
e25937854f Use std reg names and and
git-svn-id: trunk@21781 -
2012-07-04 16:34:06 +00:00
pierre
1f762cc247 Add and replacement, for MIPS
git-svn-id: trunk@21780 -
2012-07-04 16:33:17 +00:00
pierre
f92fba996d + New tai_ent and tai_ent_end classes
git-svn-id: trunk@21779 -
2012-07-04 16:32:20 +00:00
pierre
68d7e943c8 + Add global_used callback procedure
git-svn-id: trunk@21778 -
2012-07-04 16:31:20 +00:00
pierre
7982b34416 Start of PIC code support
git-svn-id: trunk@21777 -
2012-07-04 16:28:55 +00:00
pierre
6a9edb2083 Always pass records by value (OABI compliance)
git-svn-id: trunk@21776 -
2012-07-04 16:27:57 +00:00
pierre
63b4cb3347 + Add NR/RS _GP and _PIC_FUNC aliases
git-svn-id: trunk@21775 -
2012-07-04 16:26:29 +00:00
pierre
a892e2aa6f set pi_needs_got always if cs_create_pic is on
git-svn-id: trunk@21774 -
2012-07-04 16:25:42 +00:00
pierre
944d500d55 Change std reg names to allow use with GAS assembler
git-svn-id: trunk@21773 -
2012-07-04 16:24:11 +00:00
pierre
87b6bb5053 + Add .cpXXX pseudo-instruction for PIC code
git-svn-id: trunk@21772 -
2012-07-04 16:23:16 +00:00
masta
8001979f7e Reworked ispowerof2 in cutils.pas
IsPowerOf2 now uses the BsfQWord intrinsic introduced in Freepascal 2.6,
instead of the old shl loop, to find the power.

git-svn-id: trunk@21771 -
2012-07-04 13:25:25 +00:00
Jonas Maebe
882351bb21 * don't insert a conversion to widechar for ansistr[x]:='y' assignments on
the jvm target  (forgot to adapt code after adding ansistring support)

git-svn-id: trunk@21765 -
2012-07-03 21:16:29 +00:00
svenbarth
71c13190e1 Fix for Mantis #22329.
symtable.pas, searchsym_in_class:
* if we found a helper method that has overload defined we should not forget the symbol as there can be a case that no method with that name is defined in the extended class hierarchy
symtable.pas, searchsym_in_record:
* analogous to the above

+ added test given in the issue
+ added analogous test for record helpers

git-svn-id: trunk@21764 -
2012-07-03 16:27:03 +00:00
svenbarth
a908db5a91 Partially fix for Mantis #22160. This resolves the internal error, but the given example units still don't compile, because of the way we handle specializations and unit loading (more about this once I fixed that, too).
pgenutil.pas, specialization_init:
* don't add implementation units of the generic's unit to the symtable stack if we are specializing in a different unit (thus the generic needs to be defined in the interface section) as there is the possibility that the globalsymtable of an implementation unit is not yet defined if the specialization unit is used in the interface section of an implementation unit

git-svn-id: trunk@21763 -
2012-07-03 16:17:55 +00:00
pierre
7492f196f8 * Handle OS_F32 <-> OS_F64 float conversions
git-svn-id: trunk@21762 -
2012-07-03 16:16:21 +00:00
sergei
37b8cd1b7a * If relocation to a local label cannot be translated into (section+offset), then the target symbol must be written into symbol table. Fixes IE 200603012 in number of tests with -Cg on i386-linux (and possibly other targets with internal ELF assembler).
git-svn-id: trunk@21759 -
2012-07-02 15:43:33 +00:00
florian
3f14f2b61b + be able to turn off warning -> error conversion on the command line (with -)
git-svn-id: trunk@21754 -
2012-07-01 18:47:45 +00:00
florian
7df1403849 * fix releasing of shortstring temps. in arrayconstructor nodes
git-svn-id: trunk@21753 -
2012-07-01 18:46:54 +00:00
florian
c62a2c8bb5 + write temptype when printing tempdelete nodes
git-svn-id: trunk@21752 -
2012-07-01 18:46:13 +00:00
sergei
1c5fa5448e * Do not dereference null pointer, 'real' (not script-provided) common symbols don't have objsection assigned at this point.
git-svn-id: trunk@21748 -
2012-07-01 13:42:25 +00:00
masta
504a0ce0ca Fix for Mantis #22326
This fixes 64bit shifts on arm with a constant shift value of 0.

The old code would have emitted something like this
mov r0, r0, lsl #32
as 32 is an invalid shift value (and would be wrong anyway) the
assembler declined to assemble the produced source.

The new code will just not emit any code for a shift value of 0.

tests/test/tint642.pp now tests shl/shr 0 on 64 bit values.
tests/webtbs/tw22326.pp is also added as an additional test.

git-svn-id: trunk@21746 -
2012-07-01 08:09:00 +00:00
sergei
65e701a198 * Fixed operation of 'PROVIDE' link script directive (all symbols were incorrectly put into .bss section, instead of locations given by placement of the directive).
* Changed type of symbols created by link script from AT_FUNCTION to AT_DATA. This isn't significant for COFF, but matters for ELF targets.
* Changed alignment of .gnu_debuglink section from 0 to 1, this matches behavior of ld.

git-svn-id: trunk@21741 -
2012-06-30 17:32:45 +00:00
sergei
c65abdeeae * Implemented link map generation without involving TObjSection.ObjSymbolDefines, and removed the latter because it isn't used otherwise. The new approach uses CPU/memory only when map generation is requested.
git-svn-id: trunk@21737 -
2012-06-30 07:51:45 +00:00
Jonas Maebe
b0462d27cc * by default, no longer initialize enumeration fields of classes/objects
with the enum instance corresponding to ordinal 0 in JVM constructors,
    because a virtual method called by a parent constructor may already
    have assigned a different value (see tests/test/jvm/tenum2.pp). This
    will result in null pointer exceptions when using such fields without
    first explicitly assigning a value to them though.

    The old behaviour can be restored with the new -CTenumfieldinit command
    line parameter

git-svn-id: trunk@21736 -
2012-06-29 21:24:35 +00:00
Jonas Maebe
bb28a7cd08 * decrease the fpu stack position counter after explicitly inserted
fist(t)pq instructions (mantis #22331)
  * also internalerror in case the internal fpu stack position counter
    becomes larger than 7, so we don't have to wait for the entire
    byte to overflow before we detect a problem

git-svn-id: trunk@21734 -
2012-06-29 09:52:35 +00:00
svenbarth
378dd7d6ab fppu.pas, tppumodule.readsourcefiles:
set "temp" string to a useful value if "sources_avail" is "false" as otherwise
  garbage is printed if "-vu" is given

git-svn-id: trunk@21733 -
2012-06-29 06:36:26 +00:00
sergei
32e399159f * Factored common parts that can be/should be reused in the internal linker.
git-svn-id: trunk@21732 -
2012-06-28 20:21:17 +00:00
sergei
1284be72ea * Fixed alignment of '.data' section, which got accidentally changed from 16 to 8 by r21374, causing e.g. tests/test/tasm3.pp to crash if compiled without -Cg and on target without tf_smartlink_sections. The root problem is not here, however: if appending data with higher alignment to a section with lower alignment, we likely need to raise the alignment of section.
git-svn-id: trunk@21731 -
2012-06-28 18:35:34 +00:00
sergei
346fbef445 * Factored a common linker script building block into separate method.
git-svn-id: trunk@21730 -
2012-06-28 17:18:02 +00:00
Jonas Maebe
fdbe35aadf * only try to call procvars while choosing overloads in case they don't
require any parameters (mantis #22320)

git-svn-id: trunk@21729 -
2012-06-28 14:41:31 +00:00
sergei
80bbd388f9 * Made removal of unused ExeSymbols a separate procedure, call it earlier and regardless of presence of the 'SYMBOLS' directive in the linker script.
git-svn-id: trunk@21727 -
2012-06-27 20:26:49 +00:00
Jonas Maebe
d472a6d5d0 * changed tregset into tcpuregisterset so it's faster and uses less memory
git-svn-id: trunk@21717 -
2012-06-26 19:01:11 +00:00
florian
3733a000a4 * fix compilation with -dextdebug
git-svn-id: trunk@21716 -
2012-06-26 17:22:09 +00:00
Jonas Maebe
571b3feab1 * fixed internalerror on win64 after r21696 (source register size depends on
the platform, mantis #22316)

git-svn-id: trunk@21715 -
2012-06-26 17:01:34 +00:00
pierre
3a082f8c29 Add defautl mips name and use mips instead of mipseb
git-svn-id: trunk@21711 -
2012-06-26 07:20:12 +00:00
sergei
0c32756ef3 - removed TCoffObjData.afteralloc, calculating MemPos there is useless because every call to afteralloc is immediately followed by call to TObjData.resetsections that resets all MemPos back to zero.
- PE_FILE_RELOCS_STRIPPED flag is meaningless for object files.
- Don't write PE_FILE_BYTES_REVERSED_LO as well, it is deprecated and GNU tools don't write it either.
- Don't set PE_FILE_32_BIT_MACHINE flag in x86_64 object files.

git-svn-id: trunk@21710 -
2012-06-25 23:26:07 +00:00
florian
117c083003 * call inherited Destroy in TAsmOptimizer to avoid memory leak
git-svn-id: trunk@21706 -
2012-06-25 20:19:19 +00:00