Commit Graph

1349 Commits

Author SHA1 Message Date
Jonas Maebe
44bd889b9b * regenerated Makefiles with AIX support
git-svn-id: trunk@20812 -
2012-04-11 18:03:57 +00:00
pierre
2c4d8cc9d9 Add x86_64-openbsd target in Makefiles
git-svn-id: trunk@20723 -
2012-04-06 16:49:08 +00:00
florian
6278c2473e * version updated
git-svn-id: trunk@20397 -
2012-02-22 17:47:54 +00:00
florian
16e79969aa * started to fix simple mips syscalls
* corrected SA_* values

git-svn-id: trunk@20326 -
2012-02-12 18:20:43 +00:00
florian
c19b0ac189 * Fppwrite fixed after yesterday's mess
git-svn-id: trunk@20282 -
2012-02-08 21:29:54 +00:00
florian
d8c377bfed * completed termios constants for mips, some need to be checked on a real mips-linux system, see custom warning
git-svn-id: trunk@20281 -
2012-02-08 21:29:10 +00:00
florian
f927198c2a + gas for mips is by default little endian, so pass the endianess
git-svn-id: trunk@20280 -
2012-02-08 21:28:22 +00:00
pierre
f3b921d281 Fix missing close brace introduced in commit 20277
git-svn-id: trunk@20278 -
2012-02-08 08:28:27 +00:00
florian
806ae36100 * some mips rtl compilation issues fixed
git-svn-id: trunk@20277 -
2012-02-07 22:07:13 +00:00
marco
c44ce80585 * harmless deprecated warning, just in case.
I get warnings while compiling. Is oldfpccall still live?

git-svn-id: trunk@20274 -
2012-02-07 10:55:11 +00:00
florian
a2009af76e * updated MIPS code so the compiler gets through the system unit
git-svn-id: trunk@20259 -
2012-02-05 08:14:46 +00:00
pierre
30d9afe879 Add mipsel file including mips counterparts
git-svn-id: trunk@20256 -
2012-02-04 22:29:04 +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
florian
5a64b05cb4 * put generic mips code into mips dir
git-svn-id: trunk@20254 -
2012-02-04 20:14:41 +00:00
florian
2c76472bd5 * start to fix mips(el) startup code
git-svn-id: trunk@20253 -
2012-02-04 20:11:51 +00:00
florian
76d29ff172 * some Makefiles regenerated to support mips-linux
git-svn-id: trunk@20244 -
2012-02-04 09:50:03 +00:00
marco
60c1b263d6 * add public alias to getrlimit
git-svn-id: trunk@19878 -
2011-12-21 14:05:52 +00:00
florian
c7f846ebd5 + added missing syscalls so sparc-linux rtl compiles again
git-svn-id: trunk@19790 -
2011-12-09 20:35:11 +00:00
michael
0bdccfa2b0 * Added clock_getres, clock_gettime, clock_settime calls
git-svn-id: trunk@19789 -
2011-12-09 16:30:23 +00:00
michael
2d7dbacee0 * Added inotify calls
git-svn-id: trunk@19788 -
2011-12-09 16:05:35 +00:00
florian
9426cac1b0 * rebuilt Makefiles
git-svn-id: trunk@19748 -
2011-12-04 15:34:01 +00:00
Jonas Maebe
715c819ff7 - removed "packed" from record types that should/need not be packed
git-svn-id: trunk@19613 -
2011-11-08 23:13:16 +00:00
florian
d6e429e871 * .lpi version update
git-svn-id: trunk@19557 -
2011-10-30 14:24:03 +00:00
paul
1ccf16358c rtl: init widestring and unitcodestring managers before initialization of Standard IO files (stdin,stdout,stderr)
git-svn-id: trunk@19542 -
2011-10-25 02:29:29 +00:00
paul
3e29f0b179 rtl: make cwstring.pp dependent of dynlibs, load iconvctl dynamically
git-svn-id: trunk@19538 -
2011-10-25 01:25:23 +00:00
paul
9d509e5897 rtl: try to fix linux makefile
git-svn-id: trunk@19186 -
2011-09-23 00:55:53 +00:00
paul
f8e82b9d4e rtl: try to fix linux makefile
git-svn-id: trunk@19185 -
2011-09-23 00:42:51 +00:00
paul
67ae360a2b rtl: enable character.pas building for win64 and linux
git-svn-id: trunk@19184 -
2011-09-23 00:37:00 +00:00
marco
07fabab526 * fpgetsid, Mantis #20329
git-svn-id: trunk@19178 -
2011-09-22 13:21:38 +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
pierre
4b743a7a61 * IsLibrary is a byte-sized boolean, thus use stb instruction to set value
git-svn-id: trunk@19022 -
2011-09-07 21:57:37 +00:00
pierre
958425157f * Try to implement dllprt0 for linux powerpc processor
git-svn-id: trunk@19009 -
2011-09-07 12:53:50 +00:00
florian
b17a9385e5 * use generic first_int_to_real 64 bit values on sparc
* compile part of softfpu into the system unit as consequence of using the generic first_int_to_real

git-svn-id: trunk@18961 -
2011-09-03 19:58:32 +00:00
pierre
f0aa48b083 * Remove use of direct U_UNIT_NAME or TC_UNIT_NAME
symbols in assembler sources.
  Added to corresponding system variables or typed constants a
  public name 'operatingsystem_XXX' alias and used that alias in assembler
  source.

git-svn-id: trunk@18943 -
2011-09-02 12:51:48 +00:00
pierre
1c2a5f9819 + Update all Makefile's modified by
change in utils/fpcm/fpcmake.ini in prevous commit.

  Adapt also other files to that change:

  * compiler/globals.pas: Replace $FPCTARGET by os_string if
  tf_use_8_3 flag is set for target_info also.

  * tests/Makefile.fpc: Modify TEST_TARGETSUFFIX in the same way
  as TARGETSUFFIX was modified in previous commit.

  * tests/utils/dotest.pp:
    + New variable UseOSOnly, set to true if only target OS name
    should be used for subdirectories.

git-svn-id: trunk@18228 -
2011-08-16 20:10:19 +00:00
florian
b5ebe6307f * fix got loading si_c32, resolves #19520 (still uses the call/pop approach because it is faster on modern CPUs)
git-svn-id: trunk@18224 -
2011-08-16 18:45:39 +00:00
marco
39d7bb511d * Regenned all makefiles before 2.6.x branching.
git-svn-id: trunk@18073 -
2011-08-03 13:41:52 +00:00
marco
2c00a2a0b3 * fixed FPC_USE_LIBC building for Linux and exception handling (mantis #13450)
- fixed a platform modifier in ipc.pp
   - fixed different layout sigaction record in libc. (field order)
   - fixed many bad use_libc fixes in linux. Most of these were only checked
      for compilation, not linking. (e.g. futex doesn't link)

git-svn-id: trunk@18042 -
2011-07-31 23:36:17 +00:00
marco
f411f08629 * declared external fpc_geteipasebx , with local suffix to avoid clashes.
Still not the whole potatoe though.
 

git-svn-id: trunk@17682 -
2011-06-07 15:12:31 +00:00
marco
cdb4975530 * killed fpc_geteipbasebx in the startup code, mantis #19504
git-svn-id: trunk@17680 -
2011-06-06 20:26:22 +00:00
marco
f34ffd02c9 * fix for 19114. Deal with empty arguments more graciously by quoting them.
git-svn-id: trunk@17272 -
2011-04-08 14:41:36 +00:00
florian
00768bea47 * fix compilation of dllprt0.as for older arm assemblers without push support
git-svn-id: trunk@17254 -
2011-04-05 19:42:36 +00:00
tom_at_work
b0bd6a13ec Fixed argc/argv/envp for arm/linux shared libraries. They are by default in registers a1/a2/a3 as per ABI: the first arguments when calling a method (in this case the FPC_SHARED_LIB_START) are passed via registers, not on the stack.
git-svn-id: trunk@17033 -
2011-02-27 17:22:29 +00:00
ivost
d4cde5eaa2 * added syscall_nr_futex = 142 for sparc architecture
git-svn-id: trunk@16994 -
2011-02-24 10:51:54 +00:00
tom_at_work
a8bf34d3fc Correctly return to caller in ARM/Linux shared library startup code instead of fall-through to system exit.
git-svn-id: trunk@16982 -
2011-02-23 09:41:19 +00:00
tom_at_work
56d30e7da0 Set up environment variables and call Pascal initialization in arm/linux shared library initialization
git-svn-id: trunk@16981 -
2011-02-22 22:32:44 +00:00
Jonas Maebe
0da9d36116 * fixed internal assembler for x86-64 so that it correctly handles
relocations for addr_pic_no_got references (do not go via the GOT)
  * fixed code generator so that it generates addr_pic_no_got references
    also for platforms that use the internal assembler (this will break linking
    of some tests that check static data > 2GB on Linux/x86-64, but they were
    already broken before as well because we don't use the "huge" x86-64
    execution model)
  * fixed x86-64 Linux syscall code to not expect GOT-based relocations for
    the system unit's errno variable (it's an implementation-only variable)

git-svn-id: trunk@16717 -
2011-01-06 09:28:25 +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
0cb2fa1baf + semtimedop() for Linux, marked as "platform" (last part of patch from
mantis #14075)

git-svn-id: trunk@16339 -
2010-11-13 18:37:43 +00:00
Jonas Maebe
36aa39cc38 o fixed several Linux ipc bugs, based on patch by Ruben Chaer/
Pablo Alfaro (mantis #14075, also fixes #13363):
    * ipc msgtyp is clong, not cint
    * TIPC_Perm and TSEMid_ds are different on 64 bit systems
    * fixed passing semun arguments (have to be passed by value, not reference)
    * fixed the order of parameters to msg* syscalls, and don't use
      TIPC_Kludge for msgrcv syscall (only for ipccall.inc variants)
    * use new operation variants on 64 bit platforms in ipccall.inc
  * introduced use kernel_mode/uid/gid_t types for use by the Linux ipc
    records
  * fixed type of TSEMid_ds.sem_base for Darwin
  * added {$packrecords c} to ipc unit, and {$packrecords 4} around
    certain structs for Darwin as in the C headers
  * fixed passing semun argument to semctl for libc platforms (by
    value, not reference)

git-svn-id: trunk@16336 -
2010-11-13 16:58:23 +00:00