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