Commit Graph

884 Commits

Author SHA1 Message Date
Jonas Maebe
834026bfb5 * synchronised with trunk up to r21067
git-svn-id: branches/jvmbackend@21068 -
2012-04-26 21:24:20 +00:00
tom_at_work
c520f713f4 - commit missing new files
git-svn-id: branches/targetandroid@21062 -
2012-04-26 09:41:13 +00:00
Jonas Maebe
cecdff01e0 * corrected sharedClibext for AIX/ppc32
git-svn-id: trunk@21048 -
2012-04-25 20:28:09 +00:00
Jonas Maebe
52d1172f6d * correctly call assembler for AIX/ppc64
* corrected target flags for AIX/ppc64
  * corrected some file extensions for AIX/ppc64

git-svn-id: trunk@21047 -
2012-04-25 20:28:05 +00:00
Jonas Maebe
6502717e67 * align all code/data sections to sizeof(pint), instead of sometimes
to 0 or 1 (section alignment <> alignment of individual data
    elements in section on some platforms, such as AIX)
  * set constalignmin and varalignmin to 8 bytes for AIX/ppc64

git-svn-id: trunk@21044 -
2012-04-25 20:27:41 +00:00
pierre
f0afaef920 Use linux/i386 aligmnents for NetBSD/OpenBSD i386
git-svn-id: trunk@20937 -
2012-04-20 12:09:41 +00:00
Jonas Maebe
aee5380ae0 * merged trunk up to r20882
o support for the new codepage-aware ansistrings in the jvm branch
   o empty ansistrings are now always represented by a nil pointer rather than
     by an empty string, because an empty string also has a code page which
     can confuse code (although this will make ansistrings harder to use
     in Java code)
   o more string helpers code shared between the general and jvm rtl
   o support for indexbyte/word in the jvm rtl (warning: first parameter
     is an open array rather than an untyped parameter there, so
     indexchar(pcharvar^,10,0) will be equivalent to
     indexchar[pcharvar^],10,0) there, which is different from what is
     intended; changing it to an untyped parameter wouldn't help though)
   o default() support is not yet complete
   o calling fpcres is currently broken due to limitations in
     sysutils.executeprocess() regarding handling unix quoting and
     the compiler using the same command lines for scripts and directly
     calling external programs
   o compiling the Java compiler currently requires adding ALLOW_WARNINGS=1
     to the make command line

git-svn-id: branches/jvmbackend@20887 -
2012-04-15 15:54:10 +00:00
florian
4b7748ad11 * better suitable on x86_64-linux
git-svn-id: trunk@20876 -
2012-04-14 20:09:31 +00:00
Jonas Maebe
e9d52f7b95 * fixed copy/paste bug that caused the default target OS to be always set
to AIX on Linux PPC32/64 platforms

git-svn-id: trunk@20854 -
2012-04-12 09:36:46 +00:00
Jonas Maebe
adbad5ab96 + fcl-res support for xcoff/aix
+ compiler support for Delphi-style resources on aix

git-svn-id: trunk@20841 -
2012-04-11 18:06:33 +00:00
Jonas Maebe
51e50f72be + support for creating dynamic libraries on AIX
git-svn-id: trunk@20818 -
2012-04-11 18:04:40 +00:00
Jonas Maebe
462de0f5fd + AIX target definition and info for the compiler and ppudump
git-svn-id: trunk@20790 -
2012-04-11 18:00:29 +00:00
pierre
34a4ee46ff Use elf32 binary writer for i386 netbsd target
git-svn-id: trunk@20776 -
2012-04-09 22:00:54 +00:00
florian
7819eb892c * use GNU AS as default assembler on x86_64-win64 now
git-svn-id: trunk@20740 -
2012-04-07 13:00:46 +00:00
pierre
175ec19308 + Register for system_x86_64_ntbsd
git-svn-id: trunk@20732 -
2012-04-06 22:04:20 +00:00
pierre
d5dd980efe + Add system_x86_64_ntbsd_info record
git-svn-id: trunk@20731 -
2012-04-06 22:03:37 +00:00
pierre
b6576452ed Use correct dynamic linker for x86_64 openbsd system
git-svn-id: trunk@20728 -
2012-04-06 21:21:56 +00:00
pierre
7dfbc38c68 Mark x86_64 openbsd system as under development
git-svn-id: trunk@20727 -
2012-04-06 21:21:15 +00:00
pierre
7e71e1d3a0 + Add system_x86_64_openbsd_info record
git-svn-id: trunk@20715 -
2012-04-05 21:06:56 +00:00
Jonas Maebe
86265534d0 * fixed misplaced endif that caused the default target not be set when
(hypothetically) running the compiler on Darwin/ARM

git-svn-id: trunk@20662 -
2012-03-29 20:54:38 +00:00
Jonas Maebe
6ba8dc7146 + support for the ARM hard float EABI on Linux (patch by Peter Green):
o new eabihf (hard float) abi
   o vfpv3_d16 variant of VFP (default variant used by EABI assemblers: VFPv3
     with only 16 double registers instead of 32) and pass it to GNU as
   o make the odd numbered single precision floating point VFP registers
     available for explicit allocation for use by the calling convention
  * fixed copy/paste error in stdname of S30 register
  -> use -dFPC_ARMHF to create an ARM eabi hard float compiler
  (mantis #21554)

git-svn-id: trunk@20660 -
2012-03-29 20:50:09 +00:00
Jonas Maebe
eb2cccffda + -WM<X> and -WP<x> command line parameters to specify the minimally required
Mac OS X/iOS version for the compiler code
   o such a parameter is not passed, extract the information from the
     environment variables MACOSX_DEPLOYMENT_TARGET/IPHONEOS_DEPLOYMENT_TARGET,
     like gcc
   o if neither the parameter nor the environment variable is used, use preset
     default values
   o pass on this version setting on to the Darwin linker
   o use this setting to determine which version of the startup code (crt1.o
     etc) to use, if any (based on information gathered from the GCC sources)
   o define a symbol called MAC_OS_X_VERSION_MIN_REQUIRED/
     IPHONE_OS_VERSION_MIN_REQUIRED based on this parameter
   o for usage information, see
     http://wiki.freepascal.org/FPC_New_Features_Trunk#Support_for_specifying_and_querying_the_deployment_version

git-svn-id: trunk@20503 -
2012-03-10 19:31:57 +00:00
pierre
5b71a7597a i386 NetBSD uses GOT for position independent code
git-svn-id: trunk@20353 -
2012-02-15 13:08:49 +00:00
pierre
8efbcbaabb NetBSD also needs explicit DynamicLinker
git-svn-id: trunk@20293 -
2012-02-09 17:38:10 +00:00
pierre
0f1a4f94af Modern i386 NetBSD has no underscore prefix, but since when?
git-svn-id: trunk@20292 -
2012-02-09 17:37:40 +00:00
florian
8b339ded7a * started to fix the mips(el) linux rtl
git-svn-id: trunk@20255 -
2012-02-04 21:25:53 +00:00
Jonas Maebe
6a5cf6cf8d * always pass -arch parameter to linker when targetting Darwin, instead of
skipping this for dynamic libraries (not sure why that was done, but
    apparently not passing -arch triggers a bug in Xcode 4.2 Lion linker,
    mantis #21159)

git-svn-id: trunk@20211 -
2012-02-01 19:01:58 +00:00
Tomas Hajny
682299a647 + add previously missing support for link map generation for OS2 and EMX targets
git-svn-id: trunk@20158 -
2012-01-23 21:29:00 +00:00
florian
ce070c93fc + patch by Jeppe Johansen to support the SC32442B
git-svn-id: trunk@20081 -
2012-01-14 21:39:32 +00:00
florian
7070fef055 * patch by Jeppe Johansen to fix postprocessexecutable for the embedded target if host and target OS have different endianess, resolves #20926
git-svn-id: trunk@19913 -
2011-12-29 17:27:28 +00:00
Jonas Maebe
0d5b2b84a8 + Android/JVM target, including a translation of the Android r14 SDK
(= Android 4.0) java headers: java.*, javax.*, org.*, junit.*, android.*).
    The RTL can also be used to target earlier versions of the Android
    platform, but you manually have to take care of not using APIs that
    weren't available yet. Adding separate units for separate platform
    versions would only partly solve the problem, because some of the
    classes used inside the system unit have also changed across
    versions.

    Use -Tandroid while compiling to select the Android OS as target
    platform.

git-svn-id: branches/jvmbackend@19830 -
2011-12-12 02:34:34 +00:00
Jonas Maebe
8d2a7f3b88 * switched linux/ppc64 to tf_smartlink_sections (works fine even with
binutils 2.17, which is kind of ancient by today's standards),
    since it's much faster than tf_smartlink_library without an internal
    assembler 

git-svn-id: trunk@19680 -
2011-11-24 23:46:05 +00:00
pierre
4bda40649d * Add missing CATRES substitution and remove blank lines in link.res
git-svn-id: trunk@19667 -
2011-11-22 11:15:23 +00:00
pierre
30baddd3b8 Fix Haiku shared library creatiion
git-svn-id: trunk@19665 -
2011-11-21 14:14:31 +00:00
Jonas Maebe
3188916cda * also replace $CATRES for shared libraries (fix for r19649)
git-svn-id: trunk@19661 -
2011-11-20 20:06:43 +00:00
pierre
836da25e81 * Do not call with UseShell = true if CatFileContent expands the file into parameters
git-svn-id: trunk@19650 -
2011-11-18 22:08:51 +00:00
pierre
b1bd1d29ec Replace cat $RESby $CATRES and call CatFileContent method
git-svn-id: trunk@19649 -
2011-11-18 21:33:24 +00:00
pierre
98c7a5e4b0 * Enable internal elf writer for freebsd x86_64 target
git-svn-id: trunk@19608 -
2011-11-08 14:05:57 +00:00
Jonas Maebe
f2823a1d68 * r17629 changed the condition for generating safecall code on x64 and ARM
platforms from testing for a Windows target into testing to the
    tf_safecall_exceptions target flag. However, this flag was not set for
    non-i386 Windows platforms (mantis #20385)

git-svn-id: trunk@19486 -
2011-10-14 16:11:46 +00:00
pierre
0cd15043b3 * Set a default dynamic linker for OpenBSD
git-svn-id: trunk@19451 -
2011-10-10 21:45:21 +00:00
pierre
4601bca836 * i386 OpenBSD target also uses GOT for pic code
git-svn-id: trunk@19450 -
2011-10-10 21:44:44 +00:00
pierre
94eea3eca7 * Fix source info for openbsd
git-svn-id: trunk@19412 -
2011-10-08 09:53:46 +00:00
pierre
4a8b37016a i386-OpenBSD 4.9 has no underscore prefix
git-svn-id: trunk@19377 -
2011-10-04 22:33:13 +00:00
paul
7a74d2c2f8 compiler: reduce amount of hints and notes
git-svn-id: trunk@19293 -
2011-09-30 08:56:05 +00:00
florian
d7f7a9bb76 * patch by Alexander Shishkin to clean up $ifopt usage by $push/$pop, resolves #20346
git-svn-id: trunk@19256 -
2011-09-27 20:22:40 +00:00
pierre
1f0e5b496f Try to support shared libraries for freebsd
git-svn-id: trunk@19242 -
2011-09-26 10:25:27 +00:00
pierre
841b3e4179 TImportLibWin.generateimportlib method:
local procedure AddImport: Use same RIP relative code
  as in ogcoff unit for x86_64 CPU to allow a VMA above
  0x100000000 even when using.
  TImportLibWin.generateidatasection;
  also used RIP base for import libraries created using -WI option.

git-svn-id: trunk@19161 -
2011-09-20 15:25:13 +00:00
sergei
6280ee2eed * Changed attributes of .pdata section so it is smart-linkable on x86_64.
* Changed alignment of .pdata section to 4.
+ Support saving RELOC_NONE relocations to .o files and reading them back on x86_64.

git-svn-id: trunk@19070 -
2011-09-15 15:22:03 +00:00
tom_at_work
9ce34c63c9 Fix shared library loading and unloading for Linux platforms. Shared library initialization and finalization are now called correctly at program startup for compile-time linked dynamic libraries on powerpc-/powerpc64-/arm-/i386- and x86_64-linux.
Every startup code must now provide an additional entry point called "_dynamic_start" that is set as new the entry point if the program links to a Pascal shared library. Its purpose is to set up an exit hook usually passed via a register, which should be called during program finalization if non-nil.

We use this additional entry point because this register only has meaningful content when there are any compile-time linked shared libraries, otherwise it often contains random garbage. The difference between the _dynamic_start and the original code is minimal; actually in all implementations the _dynamic_start code passes on control to the old startup code, so we use an additional entry point instead of an additional startup file.

Detailed changes and fixes list:
compiler:
  always link to the dynamic loader (ld.so) when compiling shared libraries. Fixes crashes in the loader during shared library finalization on some Linuxes
  remove additional ENTRY() section in arm linker script
  select either _dynamic_start or _start as entry point depending on whether this is a static or dynamic executable
powerpc*:
  do not set System.isLibrary in startup code, it will be set during library initialization anyway
  trap in case of reaching code locations that should not be reached instead of looping (possibly endlessly)
powerpc:
  register atexit() function pointer if supplied to the executable and call it during shutdown
  correctly set argc/argv/envp in shared library code and return correctly to the caller after initialization
  pass on exitcode in shared library haltproc
  use the more recent exit_group system call if available for shutdown
powerpc64
  fix .ptrgl stub, do not set the environment register to the value of the GOT entry in the function descriptor
arm
  do not set System.isLibrary in startup code, it will be set during library initialization anyway
  reload exitcode to pass to shutdown
mips,mipsel,sparc
  added stubs to allow correct linking

git-svn-id: trunk@19036 -
2011-09-08 21:17:35 +00:00
florian
e9f2f3388e * use dwarf2 on avr-embedded by default because stabs is difficult due to name mangling issues
git-svn-id: trunk@18973 -
2011-09-04 19:37:26 +00:00
florian
0781ac1f82 + support for lpc1768 by David Welch
git-svn-id: trunk@18927 -
2011-08-31 20:17:23 +00:00
florian
df01d0209e * report code and data size for embedded targets
git-svn-id: trunk@18866 -
2011-08-27 22:03:40 +00:00
florian
a08dfdf803 o slightly modified patch by John Clymer:
* converts the embedded information into controller specific records (arm and avr)
  * new cpu-specific units for several Stellaris (Fury and Tempest class) targets, 
  + STM32F103RB
  - old Stellaris unit has been removed

git-svn-id: trunk@18848 -
2011-08-25 21:46:26 +00:00
Jonas Maebe
f6ddabde85 + "raw" resource support for the JVM target. The "raw" means that no
resource compilation happens and that the standard FPC resource
    helpers are not available. What happens is that all files specified
    in {$r xxx} statements are packed together into an <appname>.jar
    file, under the namespace "org.freepascal.rawresources". They
    can be loaded using the java.lang.Class.getResource/getResourceAsStream()
    api

git-svn-id: branches/jvmbackend@18776 -
2011-08-20 08:34:57 +00:00
Jonas Maebe
8a95a04e16 * extracted dynarray helpers from system unit into jdynarr.inc (were
in the system unit for easier debugging)
  * disabled a bunch more feature flags by default for the JVM target
  * incorporate modified version of inc/systemh.inc (split into two parts:
    jsystemh_types.inc and jsystemh.inc, because some of the types are
    required for the declaration of the shortstring/ansistring/set/...
    classes, which in turn are required for the routine declarations) and
    inc/system.inc (as jsystem.inc)
   o moved some routines around from old to new locations based on where
     they appear in the common files
   o added a number of defines that allow skipping more common implementations
     in case a platform-specific one is already available
  * all base classes (AnsistringClass etc) are now descendants of
    JLObject rather than TObject, because their declaration is now parsed
    before TObject is known (and there's no need for them to inherit from
    TObject)
  * incorporate modified version of inc/system.inc
  * use the common version of generic.inc, currh.inc, gencurr.inc and
    genmath.inc (with small modification to those files)
  + addition of quite a bit of system unit functionality (halt, runerror,
    random, round, str() for integer types, abs, odd, endian swapping helpers,
    bit scanning, trigonometric functions, ln, exp, ...)
   o round()/trunc() for comp-types has been renamed trunc_comp() on the
     JVM target because their JVM signature conflicts with trunc(currency)
   o the unsigned versions of swapendian() and other endian helpers are not
     available on the JVM target because of JVM signature conflicts

git-svn-id: branches/jvmbackend@18746 -
2011-08-20 08:32:13 +00:00
Jonas Maebe
d456ec2ffe + support for JVM local variable and parameter debug information
o self is encoded as "this" for javac compatibility
  + ait_jvar (for the above) and ait_jcatch (similar, for future try/catch
    support) classes
  + support for smallset JVM type encoding (as int)

git-svn-id: branches/jvmbackend@18354 -
2011-08-20 07:50:41 +00:00
Jonas Maebe
28740dce2d - removed extra "fordefinition" parameter again from tprocdef.mangledname(),
since the definition-specific adorning of JVM mangled names is Jasmin-
    specific, and such code has no place in symdef
  * moved code to adorn JVM mangled names for Jasmin definitions to agjasmin

git-svn-id: branches/jvmbackend@18346 -
2011-08-20 07:49:31 +00:00
Jonas Maebe
1e2c70796e + jvm (cpu architecure) and java ("OS"/target) identifiers
+ basic target information for jvm target (assembling/linking
    helpers are still dummies for now)
  + basic jasmin assembler writer
  + cpunode and cputarg units to include the target units in the
    compiler

git-svn-id: branches/jvmbackend@18309 -
2011-08-20 07:37:33 +00:00
Jonas Maebe
0ee702b3a2 * tprocdef.mangledname now gets an extra boolean parameter indicating
whether the mangled name is for defining a symbol, or for referencing
    it later (e.g. for a call or load of its address). The reason is that
    on the JVM both cases are different.
  + jvmdef unit to encode types according to the JVM rules
  + tprocdef.jvmmangledname() to encode a procdef's JVM mangled name
    (the common part of defining/referencing it; tprocdef.mangledname
     afterwards adorns it as required)

git-svn-id: branches/jvmbackend@18288 -
2011-08-20 07:22:00 +00:00
Jonas Maebe
ec8c7b4888 + when compiling for Darwin/ARM, pass the subarchitecture to the linker.
The old linker option to accept object files from all subarchitecture
    types no longer works.
  + support for subarchitectures in fcl-res/fpcres

git-svn-id: trunk@18070 -
2011-08-02 20:41:39 +00:00
florian
95ad75c7bf * hack to set stack top for atmega128
* default output for avr-embedded is .hex

git-svn-id: trunk@18015 -
2011-07-17 20:46:05 +00:00
pierre
d1a6ef9cd9 * Restrict use of postw32 external utility to
win32/wdosx target systems.

git-svn-id: trunk@17929 -
2011-07-04 07:36:47 +00:00
pierre
c611c91cef Provide _tls_index in script
git-svn-id: trunk@17901 -
2011-07-01 14:27:33 +00:00
pierre
3cc2b5e97b + Added default dynamic linker for mips CPU
git-svn-id: trunk@17889 -
2011-07-01 07:37:05 +00:00
pierre
0227fbad7d * Fix some internal linker script lines
git-svn-id: trunk@17881 -
2011-06-30 13:02:31 +00:00
pierre
446c128e71 * Double LONG (-1) and LONG (0) for x86_64 linker script
git-svn-id: trunk@17862 -
2011-06-28 20:41:05 +00:00
Legolas
2503ac1d97 * Updated nds to devkitARM r33
git-svn-id: trunk@17843 -
2011-06-27 12:22:46 +00:00
pierre
239944f8d0 + Use DLL name in assembler labels used to import DLL functions/variables
in Windows, Emx and OS2 targets.
    This fixes test failures: test/library/tlib1b.pp and lib2b.pp

    link unit TLinker.AddImportSymbol: Added symmangledname parameter.
    ogbase unit TImportSymbol.Create: Add AMangledName parameter.
    fmodule unit TModule.AddExternalImport: Add symmangledname parameter.
    fppu unit: Also put mangled name string for imported symbol.
    ppu unit: Increase PPUVersion
    utils/ppudump.pp: Adapt to PPU change above.
    systems/T_OS units: Use ImportSymbol.MangledName property to create
    import libraries or .idata sections.

git-svn-id: trunk@17804 -
2011-06-23 11:38:57 +00:00
pierre
1a9f4ba314 * Improve ogbase linker script support, add warnings for unknown entries
git-svn-id: trunk@17784 -
2011-06-21 16:49:50 +00:00
pierre
e4bb241409 * Silence warning in MakeSharedLibrary
git-svn-id: trunk@17750 -
2011-06-14 12:37:27 +00:00
Jonas Maebe
78c3e6b359 * always use crtbeginS.o/crtendS.o when generating PIC code, not just when
generating libraries for x86_64 (at least all Linux systems I checked
    have the S-variants of those files) (mantis #19501)

git-svn-id: trunk@17713 -
2011-06-10 14:17:20 +00:00
joost
45bc3fcae0 * Enabled safecall on x86_64-linux
git-svn-id: trunk@17629 -
2011-06-02 10:43:18 +00:00
Jonas Maebe
1b5fed238a * don't quote the Darwin syslibroot path in link.res, it's not reinterpreted
by the shell since it's cat'ed into the command line

git-svn-id: trunk@17422 -
2011-05-09 21:26:36 +00:00
Jonas Maebe
9cd6a7ad85 * correctly handle -XR (sysroot) paths with spaces under Darwin
git-svn-id: trunk@17421 -
2011-05-09 20:14:17 +00:00
paul
d21bbc4548 compiler: reduce amount of hints and warnings
git-svn-id: trunk@17350 -
2011-04-20 02:58:52 +00:00
florian
7f0d245ac2 * reintegrate avr branch into trunk, work on avr is less invasive than I thought so it can be continued in trunk
git-svn-id: trunk@17348 -
2011-04-19 20:17:52 +00:00
florian
fb84cb865b * rebase to trunk@17295
git-svn-id: branches/avr@17296 -
2011-04-10 19:20:48 +00:00
florian
ebe8078263 * compilation fixed
git-svn-id: branches/avr@17293 -
2011-04-10 18:43:44 +00:00
florian
610fa89484 + basic avr linker script
git-svn-id: branches/avr@17292 -
2011-04-10 18:43:04 +00:00
florian
3ce9ff93f1 + patch by Jeppe Johansen to support automatic interrupt table generation by using the interrupt directive with an offset. Not activated yet because it requires to change also the startup code of the different mcus.
git-svn-id: trunk@17279 -
2011-04-10 15:59:06 +00:00
armin
672d76e636 added a segment table containing segments for symbols defined by linker script (needed for relocs)
git-svn-id: trunk@17268 -
2011-04-07 19:38:25 +00:00
armin
7eace122dc internal linker support for creating novell netware loadable modules
git-svn-id: trunk@17192 -
2011-03-27 14:47:25 +00:00
Legolas
5fc349eda7 * Fixed stacksize for Wii
git-svn-id: trunk@17035 -
2011-02-27 19:27:12 +00:00
Jonas Maebe
601b90d74c * don't specify a custom pagezero size on Mac OS X when compiling with -gv
(Valgrind support), because Valgrind cannot deal with that

git-svn-id: trunk@16916 -
2011-02-14 20:31:30 +00:00
Legolas
527dd56b28 + Initial Wii support
git-svn-id: trunk@16888 -
2011-02-07 16:56:45 +00:00
armin
fc34ef31c7 FindUtil was called in SetDefaultInfo and in MakeExecutable.
git-svn-id: trunk@16885 -
2011-02-06 16:25:18 +00:00
florian
0be59445f8 + basic i386-embedded implementation for multiboot by Jeppe Johansen, resolves #15676
git-svn-id: trunk@16801 -
2011-01-23 11:18:50 +00:00
Jonas Maebe
1f61b5b30c * reverted the rtl patches from r14184, because they cause an endless
loop when attempting to terminate a process via the RTL compiled into
    a Linux shared library  (mantis #17383)
  * call FPC_LIB_EXIT (the internal/generic RTL finalisation routine) instead
    of FPC_SHARED_LIB_EXIT (the Linux-specific "process exit" code for shared
    libraries) as "fini" routine (fixes #14958 again after reverting r14184)

git-svn-id: trunk@16418 -
2010-11-24 15:33:29 +00:00
Jonas Maebe
1271c221f3 - reverted change accidentally committed as part of r16050 that could break
internal resources on 32 bit Darwin platforms with small programs

git-svn-id: trunk@16417 -
2010-11-24 11:03:11 +00:00
pierre
ec99b1ba40 * Add tf_dwarf_only_local_labels for win64 as suggested by Willibald Krenn
git-svn-id: trunk@16151 -
2010-10-13 08:52:35 +00:00
mazen
b127fc154a * Fixed spell error revealed by lintian.
git-svn-id: trunk@16094 -
2010-10-06 20:33:57 +00:00
Jonas Maebe
8b0301409a + i386/iphonesim target for the new iPhoneSimulator in Xcode 3.2.4 and
later: the same as i386/darwin, except
      a) uses the non-fragile Objective-C ABI/runtime
      b) does not require stubs for direct calls/jumps (not required for
         i386/darwin under 10.6 and later either, but still generated
         there for backwards compatibility)
      c) only the same packages are enabled as for ARM/Darwin
      d) MacOSAll is compiled specifically for the iPhoneSimulator SDK
    This target also defines the symbol "darwin" apart from the target
    name "iphonesim" for source code compatibility reasons.

git-svn-id: trunk@16065 -
2010-09-29 21:56:47 +00:00
pierre
7c04d8d13b From patch submitted by Willibald Krenn in Bug Report 17500.
* assemble.pas (TInternalAssembler.WriteStab): Use RELOC_ABSOLUTE32 for
   32-bit stab entry.
 * ogcoff.pas: Add check for correct generated reloc section size.
 * systems/t_win.pas: Use 0x400000 image base for x86_64 programs using
   stabs debug information format.

git-svn-id: trunk@16056 -
2010-09-28 10:06:54 +00:00
Jonas Maebe
f13f6627c4 * moved use_fixed_stack from cgutils to a method in paramgr so it can
be used outside the code generator
  * renamed tabstractprocdef.requiredargarea into callerargareasize,
    and also added calleeargareasize field; added init_paraloc_info(side)
    method to init the parameter locations and init those size fields and
    replaced all "if not procdef.has_paraloc_info then ..." blocks with
    procdef.init_paraloc_info(callersize)"
  * moved detection of stack tainting parameters from psub to
    symdef/tabstractprocdef
  + added tcallparanode.contains_stack_tainting_call(), which detects
    whether a parameter contains a call that makes use of stack paramters
  * record for each parameter whether or not any following parameter
    contains a call with stack parameters; if not, in case the current
    parameter itself is a stack parameter immediately place it in its
    final location also for use_fixed_stack platforms rather than
    first putting it in a temporary location (part of mantis #17442)
  * on use_fixed_stack platforms, always first evaluate parameters
    containing a stack tainting call, since those force any preceding
    stack parameters of the current call to be stored in a temp location
    and copied to the final location afterwards

git-svn-id: trunk@16050 -
2010-09-26 21:24:14 +00:00
pierre
cd0329a15e * fix target options for GNU ld
git-svn-id: trunk@15938 -
2010-09-02 06:59:01 +00:00
joost
65ab1e820b * Safecall on linux/i386 now behaves like cdecl plus hidden exception support.
* Adapted tests because safecall on linux/i386 now does not include high() 
   support anymore

git-svn-id: trunk@15913 -
2010-08-27 19:07:22 +00:00
pierre
d27278faac * Add external linker possibility for windows x86_64 compiler
git-svn-id: trunk@15761 -
2010-08-10 11:28:31 +00:00
Jonas Maebe
ab2b596575 * ld uses arm_wince_pe rather than arm-wince-pe (mantis #15666)
git-svn-id: trunk@15707 -
2010-08-04 19:01:46 +00:00
Jonas Maebe
356026f849 * use new_section() instead of tai_section.create() everywhere
- sort of reverted r14134, which is no longer required after the above
    change (new_section() inserts the alignment itself)
  * made the tai_section.create() constructor private so it cannot be
    called directly anymore

git-svn-id: trunk@15482 -
2010-06-26 10:50:14 +00:00
Jonas Maebe
48d7c69aab * set maxCrecordalign to 16 for all x86_64 platforms that follow the
official ABI (records containing a C long double require 16 byte
    alignment)

git-svn-id: trunk@15367 -
2010-06-03 20:02:06 +00:00
Jonas Maebe
61df8f05a0 * fixed max length of gcsectionsstr (mantis #15984)
git-svn-id: trunk@15014 -
2010-03-14 11:07:08 +00:00
Jonas Maebe
2e544bd8de * smartlink dynamic libraries under Mac OS X (mantis #15984)
git-svn-id: trunk@15011 -
2010-03-13 23:37:20 +00:00
Legolas
bc1bcf343e * Updated NDS and GBA to devkitARM r28
* Updated libnds to 1.4.1
 * Fixed NDS rtl according with last string handling changes
 * Fixed nds audio examples

git-svn-id: trunk@14967 -
2010-03-02 21:56:41 +00:00
Jonas Maebe
879e487ee8 * changed linker target name for WinCE from arm-pe into arm-wince-pe
(mantis #15666)

git-svn-id: trunk@14872 -
2010-02-06 20:22:15 +00:00
Jonas Maebe
b6e4896805 * small typo corrections by Adriaan Van Os (mantis #15652)
git-svn-id: trunk@14844 -
2010-02-02 10:41:38 +00:00
pierre
fbba2e89f8 * correct problem for -init -fini for scripts
git-svn-id: trunk@14811 -
2010-01-27 12:19:46 +00:00
florian
3747454aeb * patch by Olivier Coursiere to enable winlike resources on haiku, resolves #15539
git-svn-id: trunk@14716 -
2010-01-17 15:10:47 +00:00
Jonas Maebe
b4058a57ad * maxcrecordalign for darwin/ppc64 is 4 instead of 8 (at least for the types
that we support), fixes webtbs/tw15061a.pp on darwin/ppc64
  * webtbs/tw15061a.pp is only for darwin/ppc and darwin/ppc64

git-svn-id: trunk@14582 -
2010-01-09 11:22:33 +00:00
florian
c1f3d8dcaa * unified names of system_*/systems_* sets
git-svn-id: trunk@14566 -
2010-01-07 18:16:20 +00:00
florian
34227e811d + patch by Sven Barth to add native NT rtl support to the compiler, resolves #14886
git-svn-id: trunk@14565 -
2010-01-07 17:42:11 +00:00
pierre
f7b75f4ecb * add tf_needs_symbol_type for x86_64 solaris
git-svn-id: trunk@14387 -
2009-12-10 12:46:19 +00:00
florian
ee504ce31f * fixes fullcycle
git-svn-id: trunk@14373 -
2009-12-08 20:12:05 +00:00
pierre
98470e953d * fix native linker end group delimiter
git-svn-id: trunk@14356 -
2009-12-07 22:27:59 +00:00
Jonas Maebe
b4c8c73e70 * changed tf_use_function_relative_addresses into an assembler flag (with
the opposite meaning, af_stabs_use_function_absolute_addresses), because it
    is different on Darwin for the internal and external assembler)

git-svn-id: trunk@14342 -
2009-12-06 13:21:28 +00:00
florian
9e59c6dec7 * more mipsel code
git-svn-id: trunk@14340 -
2009-12-06 12:12:15 +00:00
Jonas Maebe
d19eaab7c6 * don't specify ARM architecture subtype to linker, because then it will
refuse linking in compiled resources (because those have a generic
    cpu subtype)

git-svn-id: trunk@14330 -
2009-12-04 20:29:05 +00:00
Jonas Maebe
877c024d4e * added tf_requires_proper_alignment for Darwin/ARM, fixes webtbs/tw7391.pp
with VFP

git-svn-id: trunk@14329 -
2009-12-04 19:56:00 +00:00
Jonas Maebe
d1538ab023 o added ARM VPFv2/VFPv3 support:
+ RTL support:
      o VFP exceptions are disabled by default on Darwin,
        because they cause kernel panics on iPhoneOS 2.2.1 at least
      o all denormals are truncated to 0 on Darwin, because disabling
        that also causes kernel panics on iPhoneOS 2.2.1 (probably
        because otherwise denormals can also cause exceptions)
    * set softfloat rounding mode correctly for non-wince/darwin/vfp
      targets
    + compiler support: only half the number of single precision
      registers is available due to limitations of the register
      allocator
    + added a number of comments about why the stackframe on ARM is
      set up the way it is by the compiler
    + added regtype and subregtype info to regsets, because they're
      also used for VFP registers (+ support in assembler reader)
    + various generic support routines for dealing with floating point
      values located in integer registers that have to be transferred to
      mm registers (needed for VFP)
    * renamed use_sse() to use_vectorfpu() and also use it for
      ARM/vfp support
    o only superficially tested for Linux (compiler compiled with -Cpvfpv6
      -Cfvfpv2 works on a Cortex-A8, no testsuite run performed -- at least
      the fpu exception handler still needs to be implemented), Darwin has
      been tested more thoroughly
  + added ARMv6 cpu type and made it default for Darwin/ARM
  + ARMv6+ implementations of atomic operations using ldrex/strex
  * don't use r9 on Darwin/ARM, as it's reserved under certain
    circumstances (don't know yet which ones)
  * changed C-test object files for ARM/Darwin to ARMv6 versions
  * check in assembler reader that regsets are not empty, because
    instructions with a regset operand have undefined behaviour in that
    case
  * fixed resultdef of tarmtypeconvnode.first_int_to_real in case of
    int64->single type conversion
  * fixed constant pool locations in case 64 bit constants are generated,
    and/or when vfp instructions with limited reach are present

  WARNING: when using VFP on an ARMv6 or later cpu, you *must* compile all
    code with -Cparmv6 (or higher), or you will get crashes. The reason is
    that storing/restoring multiple VFP registers must happen using
    different instructions on pre/post-ARMv6.

git-svn-id: trunk@14317 -
2009-12-03 22:46:30 +00:00
pierre
3fce09ae26 * modify native likner args for library creation
git-svn-id: trunk@14294 -
2009-12-01 13:52:46 +00:00
pierre
a823e6834d * remove path for sparc
git-svn-id: trunk@14288 -
2009-11-29 20:15:00 +00:00
florian
be8470125f * solaris x86-64 libraries require pic
git-svn-id: trunk@14286 -
2009-11-28 18:27:58 +00:00
pierre
b0a77480cf rlinkpath and initfini fixes
git-svn-id: trunk@14285 -
2009-11-28 07:08:53 +00:00
pierre
100e7c4d76 fix shared lib native linknig
git-svn-id: trunk@14283 -
2009-11-27 23:16:06 +00:00
pierre
6bead44bdf * fix solaris ld version mapfile (option -M)
git-svn-id: trunk@14282 -
2009-11-27 22:38:19 +00:00
pierre
2354c0d43a * avoid trailing spaces in solaris ld call
git-svn-id: trunk@14281 -
2009-11-27 21:23:25 +00:00
florian
28ac4a8dda * several mips/mipsel related stuff fixed
* regenerated linux makefile to support mipsel

git-svn-id: trunk@14278 -
2009-11-27 15:10:56 +00:00
pierre
b52df81a2c + commit Jonas' changes for init/fini for libraires
git-svn-id: trunk@14275 -
2009-11-26 16:53:11 +00:00
pierre
679309704a * fix compilation error
git-svn-id: trunk@14273 -
2009-11-25 16:58:25 +00:00
pierre
f5938d771f * Implement use of solaris linker for libraries
git-svn-id: trunk@14272 -
2009-11-25 16:07:06 +00:00
pierre
ca11bcd6cb + Use of native Solaris linker
git-svn-id: trunk@14270 -
2009-11-24 22:49:56 +00:00
florian
44c6ff898b * mipsel compiler builds
git-svn-id: trunk@14249 -
2009-11-21 22:17:34 +00:00
pierre
30161fdc04 * Use as_ggas for x86_64 solaris
git-svn-id: trunk@14240 -
2009-11-21 16:26:25 +00:00
florian
f54365db94 * adapted more fpc-mips stuff to trunk
git-svn-id: trunk@14230 -
2009-11-20 21:13:53 +00:00
pierre
db8f8e2637 + Register x86_64 Solaris
git-svn-id: trunk@14223 -
2009-11-20 11:05:55 +00:00
pierre
791c165af9 * Use ELF assembler for i386/Solaris target
git-svn-id: trunk@14208 -
2009-11-18 10:50:11 +00:00
pierre
fb8d60a03e * use same alignment for i386 solaris as for i386 linux
git-svn-id: trunk@14174 -
2009-11-14 16:27:20 +00:00
Jonas Maebe
edacea82be * changed assembler directives for darwin lazy/non-lazy symbol pointers
and init/fini routines into their section equivalents (based on patch
    by Dmitry Boyarintsev, mantis #15037)

git-svn-id: trunk@14128 -
2009-11-09 22:20:01 +00:00
pierre
a0159a9740 * Adapt script to DJGPP 2.04
git-svn-id: trunk@14073 -
2009-11-06 00:13:42 +00:00
florian
515774b864 * merged armthum branch
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
U    rtl/arm/setjump.inc
A    rtl/arm/thumb2.inc
U    rtl/arm/divide.inc
A    rtl/embedded/arm/stm32f103.pp
U    rtl/inc/system.inc
U    compiler/alpha/cgcpu.pas
U    compiler/sparc/cgcpu.pas
U    compiler/i386/cgcpu.pas
U    compiler/ncgld.pas
U    compiler/powerpc/cgcpu.pas
U    compiler/avr/cgcpu.pas
U    compiler/aggas.pas
U    compiler/powerpc64/cgcpu.pas
U    compiler/x86_64/cgcpu.pas
U    compiler/cgobj.pas
U    compiler/psystem.pas
U    compiler/aasmtai.pas
U    compiler/m68k/cgcpu.pas
U    compiler/ncgutil.pas
U    compiler/rautils.pas
U    compiler/arm/raarmgas.pas
U    compiler/arm/armatts.inc
U    compiler/arm/cgcpu.pas
U    compiler/arm/armins.dat
U    compiler/arm/rgcpu.pas
U    compiler/arm/cpubase.pas
U    compiler/arm/agarmgas.pas
U    compiler/arm/cpuinfo.pas
U    compiler/arm/armop.inc
U    compiler/arm/narmadd.pas
U    compiler/arm/aoptcpu.pas
U    compiler/arm/armatt.inc
U    compiler/arm/aasmcpu.pas
U    compiler/systems/t_embed.pas
U    compiler/psub.pas
U    compiler/options.pas

git-svn-id: trunk@13801 -
2009-10-04 09:03:44 +00:00
florian
cfe0702494 * set localalignmax properly for arm-oabi, fixes arm-oabi-linux building
git-svn-id: trunk@13799 -
2009-10-03 21:58:46 +00:00
Jonas Maebe
92ff07deaf * several fixes by Pierre Pede (parts of his patch to mantis #12492)
o fixed gprof under linux/i386
    o fixed pic-compilation of the linux/i386 rtl
    o initialisation of linux shared libraries is now possible with pic-code

git-svn-id: trunk@13703 -
2009-09-12 21:57:41 +00:00
Legolas
00a3dae729 * Enabled -Xm switch for NDS and GBA and switched from abi_default to abi_eabi
* Fixed NDS libfat linking

git-svn-id: trunk@13664 -
2009-09-06 18:47:22 +00:00
Jonas Maebe
9da0729d7c * fixed copy/paste error in r13645: fallback to /usr/lib/dylib1.o rather
than /usr/lib/bundle1.o when dylib1.o is not found

git-svn-id: trunk@13658 -
2009-09-06 09:38:19 +00:00
Jonas Maebe
8eb3a34633 * increased length of GCSectionsStr so it can contain the full new
smart linking string for Darwin
  * removed another -no_dead_strip_inits_and_terms that was hardcoded in all
    situations

git-svn-id: trunk@13657 -
2009-09-06 09:35:03 +00:00
Jonas Maebe
1503890756 * don't always pass -no_dead_strip_inits_and_terms, because it automatically
turns on dead code stripping (smart linking). Do specify it when smart
    linking is enabled though.

git-svn-id: trunk@13653 -
2009-09-05 20:19:12 +00:00
Jonas Maebe
6d0eda6e4a * used ld directly rather than libtool to link dynamic libraries, because
libtool from Xcode 3.2 (Mac OS X 10.6) does not support all new linker
    options (in particular -no_order_inits and -no_order_data, both of
    which must be specified when compiling dynamic libraries with FPC and
    Xcode 3.2)

git-svn-id: trunk@13645 -
2009-09-05 10:30:11 +00:00
Jonas Maebe
ec8364904c * set the size of the (invalid) page at address zero to 64kb for 32 bit
Darwin platforms, so that no data can be placed below that address.
    This fixes the strange Windows-compatible resource API, which
    assumes that addresses <64kb do not exist.

git-svn-id: trunk@13600 -
2009-08-26 21:18:53 +00:00
Jonas Maebe
84cefb5eba * fixed dynamic linking of programs that only link with libc after r13584
git-svn-id: trunk@13587 -
2009-08-23 16:05:59 +00:00
Jonas Maebe
9a84dee059 * fixed static linking under Linux for ppc64; test still crashes under
linux/i386 and linux/x86_64 (but at least it links now, mantis #14265)

git-svn-id: trunk@13584 -
2009-08-23 11:53:00 +00:00
Jonas Maebe
5eb7a398e0 * add SIZEOF_HEADERS to the start address of the text section for ARMEL
(fix by thexception, mantis #14100)
  * changed hardcoded "+0x100" for the default linker script also into
    "+ SIZEOF_HEADERS"

git-svn-id: trunk@13418 -
2009-07-20 09:20:02 +00:00
florian
86aad85b78 + section smartlink bss for embedded targets
git-svn-id: trunk@13341 -
2009-06-27 15:21:01 +00:00
florian
a70d36e9c7 + set stack through linker script
* reduced size of fiq and irq stack
* fixed data coping and bss zero'ing loop

git-svn-id: trunk@13301 -
2009-06-20 07:33:25 +00:00
florian
a4eb523d0e * fixed memory sizes
* fixed objdump parameters

git-svn-id: trunk@13299 -
2009-06-19 15:20:38 +00:00
florian
7a65b5c7a0 + added some AT91SAM7 controllers
* improved linker script for arm-embedded

git-svn-id: trunk@13292 -
2009-06-18 21:55:12 +00:00
Jonas Maebe
0daaaf5d3b * fixed compilation after r13217 (some 2.2.x-isms)
git-svn-id: trunk@13220 -
2009-06-01 08:08:16 +00:00
Legolas
d2dabe9a33 * updated nds/gba linker scripts and reverted some changes for 2.2.4a release
- Removed unused/outdated stuff from libndsfpc
+ Added new examples for libndsfpc
+ Added working (I hope so...) makefile.fpc for all libndsfpc/libgbafpc examples

git-svn-id: trunk@13217 -
2009-05-31 12:15:24 +00:00
yury
9a0808d0fb * Set default image base for win64 dlls to $110000000.
git-svn-id: trunk@13160 -
2009-05-17 12:47:26 +00:00
Jonas Maebe
4106ce540f * fixed compilation with -Cr after r13147
* changed type of minstacksize, maxstacksize and imagebase from aword
    (= size of integer registers of the target platform) into puint
    (= size of address space of target platform)

git-svn-id: trunk@13155 -
2009-05-17 10:07:54 +00:00
Jonas Maebe
47c28c2db3 * pass -no_dead_strip_inits_and_terms to the linker, since we use these for
dynamic library initialization (this automatically enables dead code
    stripping/smart linking in all cases though, independent of -XX/CX;
    on the other hand, there is no real reason not to use it anymore on
    Mac OS X, since support was introduced in Xcode 1.5 for
    Mac OS X 10.3.9 and that's also the earliest version we support
    for running FPC on)

git-svn-id: trunk@13151 -
2009-05-16 10:42:23 +00:00
yury
78b2618db6 * Fixed setting of image base using {$IMAGEBASE X} directive.
* Cleanup of relative code.

git-svn-id: trunk@13147 -
2009-05-15 23:12:02 +00:00
yury
187a145358 * Fixed build for ARM targets.
git-svn-id: trunk@13142 -
2009-05-14 08:47:18 +00:00
yury
f726e1691b * Fixed warnings and notes.
git-svn-id: trunk@13139 -
2009-05-13 11:26:01 +00:00
yury
e23a304254 * Set default images base to $100000000 for win64 executables as done by MS linkers. It helps to detect portability errors early.
git-svn-id: trunk@13138 -
2009-05-13 10:56:33 +00:00
Jonas Maebe
c9af7d6476 * added tf_dwarf_only_local_labels for Windows (should make DWARF usable
on Windows, although there are still some warnings)

git-svn-id: trunk@12909 -
2009-03-17 17:07:17 +00:00
florian
6e8a6790d1 + FPC_ARMEB and CPUARMEB similiar to FPC_ARMEL and CPUARMEL
git-svn-id: trunk@12907 -
2009-03-17 13:43:24 +00:00
Jonas Maebe
bfd753b7c9 - removed tf_dwarf_relative_addresses again, it causes differences
compared to the gcc-generated code (and removing it does not cause
    other differences). Partial revert of r12592.

git-svn-id: trunk@12904 -
2009-03-16 17:20:04 +00:00
Tomas Hajny
54f3d28ce8 * prefix for import libraries now configurable rather than hardcoded, plus fixed issue with name of OS/2 import libraries
git-svn-id: trunk@12727 -
2009-02-09 00:01:15 +00:00
Jonas Maebe
7d459cf12a * the compiler now explicitly keeps track of the minimally guaranteed
alignment for each memory reference (mantis #12137, and
    test/packages/fcl-registry/tregistry1.pp on sparc). This also
    enables better code generation for packed records in many cases.
  o several changes were made to the compiler to minimise the chances
    of accidentally forgetting to set the alignment of memory references
    in the future:
    - reference_reset*() now has an extra alignment parameter
    - location_reset() can now only be used for non LOC_(C)REFERENCE,
      use location_reset_ref() for those (split the tloc enum so the
      compiler can catch errors using range checking)

git-svn-id: trunk@12719 -
2009-02-08 13:00:24 +00:00
florian
acb06dac1b + Wp<Controllertype> support for arm and avr
git-svn-id: trunk@12664 -
2009-02-02 20:16:25 +00:00
florian
812d159f34 * fixed linker map
git-svn-id: trunk@12618 -
2009-01-26 17:25:16 +00:00
florian
e86a03553e * compilation fixed
git-svn-id: trunk@12613 -
2009-01-26 14:28:07 +00:00
florian
2a29180517 + first linker script for arm-embedded
git-svn-id: trunk@12596 -
2009-01-25 21:48:38 +00:00
Jonas Maebe
0768f82770 * set tf_dwarf_relative_addresses for win32
* switch to external assembler when using dwarf debug info for win32,
    because the internal assembler doesn't work with
    tf_dwarf_relative_addresses
   (mantis #12872)

git-svn-id: trunk@12592 -
2009-01-25 13:24:02 +00:00
Legolas
8506d8fdf1 * Changes to compiler and rtl to make it compatible with devkitARM r24
* First attempt to implement a sort of generic "gate" for adding different file access methods
* Optimized heap and stack handling

git-svn-id: trunk@12562 -
2009-01-18 16:05:44 +00:00
Jonas Maebe
75cbf8cacd * changed default stack sizes that were still 256 KiB into 8 MiB
git-svn-id: trunk@12524 -
2009-01-08 17:13:49 +00:00
Károly Balogh
446e2161ce + Made a single Amiga/MorphOS-specific PathConv import to cfileutl.pas, instead of importing it every single place it is needed.
+ Forced PathConv argument to ShortString. Made a note about implementing AnsiString-aware PathConv later.
+ Made code to use the unified PathConv import (named Unix2AmigaPath(), which explains its functionality better).
+ The above changes fixed various compiler crashes in TAsmScriptAmiga, caused by invoking PathConv with AnsiString arguments, while it only supports ShortString

git-svn-id: trunk@12485 -
2009-01-03 14:34:59 +00:00
florian
24fe46b3a3 + missing includes of fpcdefs.inc added
git-svn-id: trunk@11916 -
2008-10-18 14:07:42 +00:00
Károly Balogh
7ce0dd43ab + re-enable smartlinking for MorphOS
git-svn-id: trunk@11868 -
2008-10-07 20:04:37 +00:00
Jonas Maebe
253ae0c33e * changed abi for darwin/arm from eabi to default, as it appears to be
more closely related to the old abi
  * make sure softfloat is still default for darwin/arm after this change

git-svn-id: trunk@11861 -
2008-10-04 14:06:09 +00:00
Jonas Maebe
d4c2f52090 * disabled pic default for arm/darwin (pic isn't supported yet for arm)
git-svn-id: trunk@11852 -
2008-10-02 21:32:53 +00:00
Jonas Maebe
afa14de20d + some generic changes preparing for darwin/arm support
git-svn-id: trunk@11849 -
2008-10-02 15:10:13 +00:00
florian
9fb21f5c9b * target flags for x86_64-freebsd fixed
* use external assembler on x86_64-freebsd for now because dwarf doesn't work with the internal one

git-svn-id: trunk@11769 -
2008-09-13 15:50:32 +00:00
florian
3417a6e790 * line breaks fixed
git-svn-id: trunk@11764 -
2008-09-13 14:51:48 +00:00
Tomas Hajny
b7339852e1 * reverted previous changes, proper fix still to be found :-(
git-svn-id: trunk@11626 -
2008-08-21 23:58:07 +00:00
Tomas Hajny
ca513b520f * another attempt to fix casing for generated OS/2 import libraries
git-svn-id: trunk@11625 -
2008-08-21 22:39:04 +00:00
Tomas Hajny
512ffe26f5 * use modulename rather than realmodulename for import libraries to avoid packaging issues in case of different casing - 'unit X' in x.pas
git-svn-id: trunk@11623 -
2008-08-21 21:10:06 +00:00
florian
8f95bb12ac * fixed shared linker name for i386
* restored old shared linker search order as good as possible

git-svn-id: trunk@11558 -
2008-08-12 16:45:07 +00:00
yury
72aa4f8cdd * Fixed warnings about uninitialized record fields.
git-svn-id: trunk@11447 -
2008-07-23 11:44:24 +00:00
yury
491f0fa1d8 * Replaced all user defined warnings by TODO comments to reduce compiler noise.
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
yury
fd0ed50331 * Removed/commented more unused variables.
* Fixed some uninitialized variable warnings.

git-svn-id: trunk@11442 -
2008-07-23 10:48:53 +00:00
yury
5548824859 * Removed/ifdefed/commented unused local variables.
git-svn-id: trunk@11438 -
2008-07-23 09:22:47 +00:00
yury
efb280e0e9 * Use system_wince in all places.
git-svn-id: trunk@11429 -
2008-07-20 22:39:19 +00:00
giulio
f8790b4e14 Re-enabled smartlinking on go32v2 after r8715 (solves bug #11501)
git-svn-id: trunk@11248 -
2008-06-20 11:20:37 +00:00
florian
fbece263a3 + define CPUARMEL on armel-linux
git-svn-id: trunk@11212 -
2008-06-08 07:42:34 +00:00
giulio
13f39b9e21 Updated go32v2 linker script:
* dwarf debug sections must be placed at address 0
* added names of sections that are commonly found in gcc-compiled libraries (fixes linking to certain libraries)

git-svn-id: trunk@11168 -
2008-06-02 07:29:14 +00:00
florian
fe92758e53 * use ld-linux.so.3 in armel mode
git-svn-id: trunk@11150 -
2008-06-01 10:25:04 +00:00
florian
bcbc221191 * more reasonable defaults when no dyn. linker is found, resolves #10431
git-svn-id: trunk@11020 -
2008-05-20 21:06:12 +00:00
florian
35c0f78642 + Haiku support by Olivier Coursière based on old BeOS support
git-svn-id: trunk@11014 -
2008-05-19 17:33:35 +00:00
florian
4ad8ccf05c * experimentally enabled smartlink sections on sparc linux
git-svn-id: trunk@11002 -
2008-05-18 12:49:00 +00:00
Jonas Maebe
7d1a8f3de2 * always pass (g)crt1.o/bundle1.o as first argument to the linker
for darwin (see #11270)

git-svn-id: trunk@10996 -
2008-05-18 09:49:44 +00:00
Legolas
3a21b6e5a6 * Fixed nds rtl
* Changes for gba:
  * Random number generator is now embedded in the rtl
  * Improved heap 
  * Updated the linker script
  - Removed the outdated gbaunits library and
  + replaced by libgbafpc package

git-svn-id: trunk@10986 -
2008-05-17 18:57:14 +00:00
Jonas Maebe
52f81c97cf * call gstrip (GNU) instead of strip (Sun)
git-svn-id: trunk@10981 -
2008-05-17 10:57:44 +00:00
Legolas
f2437bb479 * Updated nds linker script for new binutils
* Quick'n'dirt random number generator for nds

git-svn-id: trunk@10887 -
2008-05-05 17:50:13 +00:00
Tomas Hajny
554b45d18e + probability of issues with long pathnames not fitting DOS command line length limits decreased by patch by Giulio Bernardi
git-svn-id: trunk@10799 -
2008-04-26 05:09:56 +00:00
Jonas Maebe
99e1e85447 * fixed execution of finalization section of smart linked shared
libraries on linux (mantis #6822)
  * fixed execution of library finalization sections on darwin
    (previously only the finalization section of the library
     compilation unit itself was executed, now those of the units
     used by the library are also executed)

git-svn-id: trunk@10554 -
2008-03-24 22:19:21 +00:00
Jonas Maebe
150eda304b * factored unix exports handling from t_bsd and t_linux into expunix unit
(todo: at least solaris, maybe others)
  * changed the "exports" section handling:
    a) make everything private which is not exported (implemented for
       darwin and linux)
    b) for the exported symbols:
     - functions/procedures
      1) if no name or index is provided, and if the procedure has aliases
         defined via the public/export directives, then export the default
         mangled name and all defined aliases
      2) otherwise if no name is specified (but there is an index) then
        i) if the procedure is defined as cdecl/cppdecl/mwpascal, use the
           appropriately mangled version of the function name
       ii) otherwise export the name without any mangling(e.g. "exports
           proc1" -> proc1 is the exported name)
     - variables
      1) if no name is provided and the variable was specified as cvar,
         use the mangled name
      2) otherwise if no name is provided, export the name without any
         mangling
  -> initialization/finalization of shared libraries under Linux works
     again (mantis #7838)
  -> sharing symbols between shared library and main program works
     under Linux (mantis #9089)

git-svn-id: trunk@10551 -
2008-03-24 16:55:05 +00:00
micha
1130fb3e95 * revert accidental change to arm
git-svn-id: trunk@10545 -
2008-03-23 23:44:21 +00:00
micha
40211152d4 * make sure tobjects are pointer-size aligned in case of VMT usage; fixes tw1365 on armeb-linux
git-svn-id: trunk@10544 -
2008-03-23 23:42:53 +00:00
Jonas Maebe
3eec0569be * fixed shared library initialisation for FPC-compiled libraries
when linked to FPC-compiled programs under linux/i386 which
    do not use libc + test (mantis #8730). Programs which do use
    libc and other linux targets have to be fixed in a similar
    way until we properly fix everything by not exporting
    any symbols at all from shared libraries by default (and
    only those appearing in the "exports" section).

    Finalisation does not work yet either for FPC-compiled
    programs on linux/anything.

git-svn-id: trunk@10495 -
2008-03-15 23:28:09 +00:00
michael
174de3eab1 Merged revisions 9693-10480 via svnmerge from
svn+ssh://svn.freepascal.org/FPC/svn/fpc/branches/resources

........
  r9694 | michael | 2008-01-09 21:31:18 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * Initial check-in
........
  r9695 | michael | 2008-01-09 21:35:58 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * New version from Giulio Bernardi
........
  r9697 | michael | 2008-01-09 21:41:54 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * Patch from Giulio Bernardi with resource support
........
  r9698 | michael | 2008-01-09 21:46:33 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * Patch from Giulio Bernardi to add more resource testing
........
  r9699 | michael | 2008-01-09 21:57:26 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * New tool from Giulio Bernardi
........
  r9700 | michael | 2008-01-09 21:58:23 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * New tool from Giulio Bernardi
........
  r9701 | michael | 2008-01-09 22:01:54 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * Added fcl-res
........
  r9702 | michael | 2008-01-09 22:01:58 +0100 (Wed, 09 Jan 2008) | 1 line
  
  * Added fcl-res
........
  r9703 | michael | 2008-01-10 08:54:26 +0100 (Thu, 10 Jan 2008) | 1 line
  
  * Fixed double code
........
  r9704 | jonas | 2008-01-10 10:59:20 +0100 (Thu, 10 Jan 2008) | 2 lines
  
    - removed duplicate code
........
  r9705 | jonas | 2008-01-10 11:25:21 +0100 (Thu, 10 Jan 2008) | 2 lines
  
    + added missing fcl-res dependencies
........
  r9706 | jonas | 2008-01-10 11:58:30 +0100 (Thu, 10 Jan 2008) | 2 lines
  
    + dependencies for fpintres and fpextres
........
  r9707 | yury | 2008-01-10 12:47:51 +0100 (Thu, 10 Jan 2008) | 3 lines
  
  * Fixed compilation of resource, which is included in a unit located in different folder than main source.
  * .res files must be copied to units output folder, otherwise .res files will not be found when only compiled units path is available and compiler does not know anything about sources folder.
  * Improved resource related error messages.
........
  r9708 | michael | 2008-01-10 12:52:13 +0100 (Thu, 10 Jan 2008) | 1 line
  
  * Removed double source after end.
........
  r9709 | michael | 2008-01-10 12:52:48 +0100 (Thu, 10 Jan 2008) | 1 line
  
  * No longer needed
........
  r9710 | tom_at_work | 2008-01-10 22:09:08 +0100 (Thu, 10 Jan 2008) | 1 line
  
  * properly align FPC_RESLOCATION so that linking does not fail on some architectures (e.g. ppc64)
........
  r9711 | tom_at_work | 2008-01-10 23:53:12 +0100 (Thu, 10 Jan 2008) | 1 line
  
  * fix splitting of 64 bit load/stores from/to unaligned memory locations into multiple load/stores, which in some cases generated wrong code
........
  r9712 | michael | 2008-01-11 11:00:08 +0100 (Fri, 11 Jan 2008) | 1 line
  
  * Fixed bug in BSS section on 64-bit platforms
........
  r9720 | giulio | 2008-01-12 10:02:04 +0100 (Sat, 12 Jan 2008) | 1 line
  
  Updated fcl-res documentation: occurrences of reslib changed to fcl-res.
........
  r9740 | giulio | 2008-01-13 19:36:44 +0100 (Sun, 13 Jan 2008) | 3 lines
  
   - Don't try to compile resources on systems with a non windows-like resource support.
   - Don't add the .or file to the list of object files if resource compiling failed.
........
  r10201 | giulio | 2008-02-04 11:35:44 +0100 (Mon, 04 Feb 2008) | 5 lines
  
  * resource compiling supported on OS/2 via wrc
  * CompileResourceFiles and CollectResourceFiles don't do target-specific checks anymore
  * refactored a bit
........
  r10389 | giulio | 2008-02-25 21:32:52 +0100 (Mon, 25 Feb 2008) | 2 lines
  
  Deleted test file which was committed by mistake
........
  r10472 | giulio | 2008-03-10 12:22:18 +0100 (Mon, 10 Mar 2008) | 2 lines
  
  changed define FPC_HAS_RESOURCES to FPC_HAS_WINLIKERESOURCES
........

git-svn-id: trunk@10481 -
2008-03-12 21:33:48 +00:00
florian
efe31d965c * made default arm-linux compiler little endian again
git-svn-id: trunk@10440 -
2008-03-04 10:19:53 +00:00
micha
83b7f81f81 + add no-fpu support to compiler/rtl for powerpc-linux (-Cfnone)
git-svn-id: trunk@10422 -
2008-03-02 12:59:02 +00:00
florian
e5a960d860 * set default reserved stack size on win32/win64 to 16MB
git-svn-id: trunk@10330 -
2008-02-15 19:06:23 +00:00
florian
c05d4912f4 + basic system unit for avr-embedded
* fixed several compiler stuff to be able to start system unit compilation on avr

git-svn-id: trunk@10318 -
2008-02-13 20:35:16 +00:00
peter
de918497ef * support -Xg under linux
git-svn-id: trunk@9811 -
2008-01-20 12:12:15 +00:00
Jonas Maebe
5fbc947ae8 + -Xg support for darwin with dwarf
git-svn-id: trunk@9798 -
2008-01-19 20:54:36 +00:00
Jonas Maebe
56c18c5521 * fix from r9332 for shared libraries
git-svn-id: trunk@9797 -
2008-01-19 20:44:43 +00:00
peter
793fd8fc09 * Add -Xg to help pages
* -Xg now produces a .dbg file with debuginfo
    that can be used by gdb. The main executable gets
    a debuglink section that references the .dbg file.

git-svn-id: trunk@9778 -
2008-01-17 01:20:37 +00:00
Legolas
9dc6b3992f * Some cleaning on nds linker; new extension for intermediate files
git-svn-id: trunk@9672 -
2008-01-07 19:31:32 +00:00
Legolas
27eb735d24 * Resized stack value for NDS
* Changes to prt0:
  + Added argv support 
  * New function calls

git-svn-id: trunk@9424 -
2007-12-10 17:06:14 +00:00
marco
1a34960b53 * asmscript stuff under if ldnoresponsfile. Fixes FreeBSD breakage
git-svn-id: trunk@9332 -
2007-11-25 18:08:08 +00:00
Jonas Maebe
0c06fddb8f * fixed compilation
git-svn-id: trunk@9328 -
2007-11-25 10:20:54 +00:00
sekelsenmat
8476d0af2c Adds symbian arm target.
git-svn-id: trunk@9327 -
2007-11-24 22:04:59 +00:00
Jonas Maebe
0ac6e82c1f * fixed handling of directories with spaces for LdSupportsNoResponseFile-
targets (a.o. darwin) in case no ppas.sh is generated (need to generate
    a temporary script in that case as well to use the IFS trick)
  * fixed exit code checking of ld when using IFS trick (have to check it
    before restoring IFS, otherwise we check the "error result" of this
    restoration, which will always be 0)

git-svn-id: trunk@9325 -
2007-11-24 18:06:01 +00:00
Jonas Maebe
d8d393e802 - no longer pass "-read_only_relocs suppress" to the darwin linker when
compiling shared libraries as we no longer generate relocations in
    read-only sections

git-svn-id: trunk@9323 -
2007-11-24 16:43:47 +00:00
Jonas Maebe
157fc2a3e9 * use -x instead of -s for stripping executables on darwin (-s worked fine on 10.0,
was broken on 10.1, fixed in 10.2 and worked fine till 10.4, and has been
    deprecated/removed in 10.5; conversely, -x has worked all the time, although it
    results in slightly bigger binaries on platforms that also support -s)

git-svn-id: trunk@9204 -
2007-11-11 19:43:41 +00:00
Jonas Maebe
032352d98b + darwin/x86_64 support
git-svn-id: trunk@9180 -
2007-11-10 18:33:09 +00:00
florian
8075f99ce9 * define for armel fixed
git-svn-id: trunk@9164 -
2007-11-08 21:03:46 +00:00
florian
8a2ab85bc2 + armel support with FPC_ARMEL define
+ armel linker script

git-svn-id: trunk@9156 -
2007-11-07 20:45:27 +00:00
yury
13d948c07b * Fixed: import Address Table should contain the same data as Import Lookup Table.
* Perform import by name with index as hint, if both import name and import index are specified.
* Fixed import by ordinal when external linker is used.
* Fixed some warnings and notes.

git-svn-id: trunk@9083 -
2007-11-02 23:07:15 +00:00
florian
d9e0f078e1 * continued to play around with package support
git-svn-id: trunk@9075 -
2007-11-02 22:26:43 +00:00
florian
01fd678211 + basic parsing of package files
+ basic implementation of creation of packages

git-svn-id: trunk@9054 -
2007-11-01 23:20:28 +00:00
Károly Balogh
8562910185 + quick hack to have linker support for amiga/m68k (it produces some kind of binary at least)
git-svn-id: trunk@9024 -
2007-11-01 00:22:47 +00:00
florian
90af7ebf72 * use only windows exceptions for stack checking on win32/win64, resolves #9166
git-svn-id: trunk@9020 -
2007-10-31 23:19:48 +00:00
florian
7f4c387841 o new BeOS patch by Olivier Coursiere:
* correctly define the stack size for BeOS,
  + implement a minimum nl_langinfo function to correctly initialize WideString support
  + add fgl unit in the BeOS RTL makefile
  * SysOSAlloc now return nil when the system can not allocate the asked memory,
  * HAS_SYSOSFREE is no more defined with an empty implementation under BeOS. This was preventing FPC to reuse memory.
  + there is now a basic implementation of CheckPointer under BeOS.

git-svn-id: trunk@8994 -
2007-10-29 19:00:32 +00:00
florian
3a630340be * fixed m68k compilation and put it in fullcycle
git-svn-id: trunk@8953 -
2007-10-27 11:24:50 +00:00
Jonas Maebe
920a626c17 * mark darwin as case sensitive, because the dircache isn't always used
anymore (the dircache masks the effects of case-sensitive file
    systems on targets marked as case-aware)

git-svn-id: trunk@8946 -
2007-10-26 13:01:01 +00:00
Jonas Maebe
1121002c7c * generate PIC by default for darwin/ppc64
git-svn-id: trunk@8873 -
2007-10-21 10:36:05 +00:00
Jonas Maebe
ff3b455a59 * make PIC generation default on Darwin (ppc and i386; ppc64 will be
done in next commit to ease merging)

git-svn-id: trunk@8872 -
2007-10-21 10:34:01 +00:00
Jonas Maebe
3155b650a1 * pass "-syslibroot sysrootpath" to the darwin linker if -XRsysrootpath
is used (mantis #9953)

git-svn-id: trunk@8833 -
2007-10-17 19:25:06 +00:00
florian
f7b0abffec o BeOS patch by Olivier Coursiere:
* reenable creating shared object using the libc based rtl. I have also added gc-sections support.

git-svn-id: trunk@8806 -
2007-10-14 18:37:00 +00:00
micha
89b5825029 * only use ld -T in case of cross-link (-XR), because not all platforms have complete link script yet
git-svn-id: trunk@8718 -
2007-10-01 21:10:51 +00:00
peter
9f0ca44c94 * new tf_smartlink_library flag
* use create_smartlink[_sections|_library] to check what to 
    do for smartlinking

git-svn-id: trunk@8715 -
2007-10-01 16:55:08 +00:00
micha
c3e587355d * fix default dynamic linker location for 64 bit targets in linux
git-svn-id: trunk@8707 -
2007-09-30 21:20:04 +00:00
Tomas Hajny
cd82fd376f * workaround for yet another #%$#@#^ EMX LD.EXE bug (link.res path must not be quoted)
git-svn-id: trunk@8706 -
2007-09-30 21:11:10 +00:00
florian
655ac519d4 * fixed compilation for x86-64
git-svn-id: trunk@8698 -
2007-09-30 15:30:00 +00:00
micha
0625040eba + add -XR switch for target root file system with libs (also used for C lib type detection)
git-svn-id: trunk@8695 -
2007-09-30 15:00:54 +00:00
peter
b5fb7120b8 * fixed length calculation of leb128 constants
git-svn-id: trunk@8666 -
2007-09-27 22:40:38 +00:00
Jonas Maebe
3266f4e483 + Compiler support for pic on darwin/i386. The i386 rtl still needs
to be made pic-safe (mainly accesses to the global default8087cw)
  * At the same time also made the non-pic code abi-compliant (access
    external data via indirect symbol pointers etc)

    Darwin/i386 also puts the got into a virtual register (like
    Darwin/ppc), a.o. because the register allocator fails to colour
    a routine in aasmcpu.pas if we take away ebx from it.

git-svn-id: trunk@8657 -
2007-09-26 21:42:27 +00:00
tom_at_work
c6d42528a2 * linker script: keep got and toc sections together; allows use of -Cg (PIC) in large programs (e.g. compiler) on powerpc64/linux
git-svn-id: trunk@8591 -
2007-09-21 00:05:51 +00:00