Commit Graph

14013 Commits

Author SHA1 Message Date
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
florian
6ae2a43161 * fix compilation with extdebug
git-svn-id: trunk@21705 -
2012-06-25 20:01:35 +00:00
sergei
8c8883cc35 * Once TExeOutput is accessible in TObjSection.fixuprelocs, its ImageBase can be used directly, without a need to have a copy in every TObjSection.
* Also simplified COFF symbol loading, separate array of symbol sizes is not needed because these sizes never change during the load.

git-svn-id: trunk@21704 -
2012-06-25 18:39:46 +00:00
pierre
aee68923e8 Fix .pdr generation by adding .end pseudo-instruction, limit .ent to text section for mips cpu
git-svn-id: trunk@21700 -
2012-06-24 21:54:31 +00:00
Jonas Maebe
7c21cba1e2 * migrated g_copyshortstring, g_incrrefcount and g_array_rtti_helper to thlcg
git-svn-id: trunk@21699 -
2012-06-24 21:36:28 +00:00
Jonas Maebe
60aedb19d6 * removed superfluous (de)allocallcpuregisters calls
git-svn-id: trunk@21698 -
2012-06-24 21:36:15 +00:00
Jonas Maebe
7a0ae38700 + also specify the parameter def when allocating a parameter via
getintparaloc + adapted all call sites of getintparaloc. This
    led to a number of additional, related changes:
   o corrected the type information for some getintparaloc parameters
   o don't allocate some intparalocs in cases they aren't used
   o changed "const tvardata" parameter into "constref tvardata" for
     fpc_variant_copy_overwrite to make pass-by-reference semantics
     explicit
   o moved a number of routines that now have to call find_system_type()
     from cgobj to hlcgobj so that cgobj doesn't have to start depending
     on the symtable unit
   o added versions of the cpureg alloc/dealloc methods to hlcgobj that
     call through to their cgobj counter parts, so we can call save/restore
     the cpu registers before/after calling system helpers from hlcgobj
     (not implemented in hlcgobj itself, because all basic register
      allocator functionality is still part of cgobj/cgcpu)

git-svn-id: trunk@21696 -
2012-06-24 15:02:12 +00:00
Jonas Maebe
adf66eed8b * don't turn constref shortstring parameters into openstrings (they can't
be changed just like const parameters, so there's no use for the hidden
    high parameter)

git-svn-id: trunk@21695 -
2012-06-24 15:02:03 +00:00