* Added dependency on opengl

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23366 3ad0048d-3df7-0310-abae-a5850022a9f2
* Added dependency on opengl

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23367 3ad0048d-3df7-0310-abae-a5850022a9f2
* remove debug output

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23368 3ad0048d-3df7-0310-abae-a5850022a9f2
* Undid patch to resolve dotted unit names, it breaks generation of FPC documentation

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23369 3ad0048d-3df7-0310-abae-a5850022a9f2
+ Enable CPU-specific descendants to write specific dynamic tags.
+ Read version definitions from shared objects.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23370 3ad0048d-3df7-0310-abae-a5850022a9f2
 * fixed minor mistake in comment. Mantis #23631

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23371 3ad0048d-3df7-0310-abae-a5850022a9f2
 * Unblockfile to programmatically unblock MSIE downloads


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23372 3ad0048d-3df7-0310-abae-a5850022a9f2
m68k/cgcpu.pas, tcg68k.g_concatcopy:
  use the correct flag for the copy loop: we jump back to the copy code as long as the value is positive aka BPL instead of BMI

This fixes around 30 tests (it fixes a quite bit more, but now some other tests seem to be broken...)


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23373 3ad0048d-3df7-0310-abae-a5850022a9f2
+ chmod 755 on executable files produced by internal linker. I missed this "small" detail for half a year because all development was going on a NTFS drive where everything is executable.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23374 3ad0048d-3df7-0310-abae-a5850022a9f2
+ Support dynamic copy relocations.
* For unresolved weak symbols, provide dynamic binding only if they are referenced via GOT or PLT (ld-compatible behavior).
* Made more TElfExeOutput properties/methods usable by descendant classes.
* x86_64/cpuelf.pas: some refactoring, handle DTPOFF relocations, prohibit TPOFF relocations in shared objects.
* i386/cpuelf.pas: set symref_from_text flags for copy relocations to work correctly.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23375 3ad0048d-3df7-0310-abae-a5850022a9f2
+ ELF linker back-ends for ARM and MIPS.

ARM status: roughly corresponds to i386 one, passes the test suite. Handles libraries, can link static libc code including basic PIC and TLS IE/LE stuff. Completely misses Thumb support. Also does not handle ABI-specific stuff, for this reason internally linked .so cannot be used for linking executables with ld. Little-endian only. Tested only on "versatilepb" QEMU virtual machine.

MIPS status: can link the compiler and at least some dynamic executables including fpmake. Some PIC support is present but almost untested. Specific header flags and sections are also not handled yet. Written to handle both endian, but tested for big-endian only ("malta" QEMU VM), including cross-linking from x86_64.


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23376 3ad0048d-3df7-0310-abae-a5850022a9f2
* MIPS code generator fixes and improvements:
- removed a_jmp_cond, it's not virtual and not applicable to this CPU.
* a_loadfpu_reg_cgpara: use direct register moves for simple destinations.
* g_concatcopy: don't take address of source/destination for small amounts of data if possible, for single 32-bit moves this reduces number of generated instructions from 4 to 2.
* g_intf_wrapper: 'Self' is in R4 (a0), not R2. Fixes test/tinterface1.pp.

* mips/cpupara.pas: for functions with result returned in parameter, pass its address in a0 only if result is a record. ABI does not specify behavior for types except records/unions. At the same time, Pascal code relies on the fact that results like strings/interfaces does not change their locations, i.e. "function foo(<self>): IInterface" can be invoked as "procedure foo(<self>, out obj)". This fixes test/tdel1.pp and some Variant-related tests.


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23377 3ad0048d-3df7-0310-abae-a5850022a9f2
m68k/n68kmat.pas, tm68kshlshrnode.first_shlshr64bitint:
  use RTL helper functions (through the inherited method) if we're not shifting by a constant

This fixes test/cg/tshlshr


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23378 3ad0048d-3df7-0310-abae-a5850022a9f2
Fix comparisons (aka usage of flag/CCR register)

m68k/aasmcpu.pas, taicpu.spilling_get_operation_type:
  * add all Sxx instructions as "operand_write" instructions

m68k/n68kadd.pas, t68kaddnode.getresflags:
  * use the correct operation in case of swapped nodes

m68k/cgcpu.pas, tcg68k.g_flags2reg:
  - don't move a 0 to the register, because this will CLR it and thus the flags won't be valid anymore...
  - NEG would have been the wrong operation (NOT would have been correct), but it isn't needed anyway...
  * simplify the method by handling the address register case only when necessary



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23383 3ad0048d-3df7-0310-abae-a5850022a9f2