浏览代码

+ x86_64-linux: build ABI tag separately, the purpose it twofold: 1) it is the only part of startup that cannot be yet handled directly by compiler, 2) it provides a single point to modify whenever necessary.

git-svn-id: trunk@29558 -
sergei 10 年之前
父节点
当前提交
e2eb6dffbb
共有 4 个文件被更改,包括 38 次插入2 次删除
  1. 1 0
      .gitattributes
  2. 5 2
      rtl/linux/Makefile
  3. 3 0
      rtl/linux/Makefile.fpc
  4. 29 0
      rtl/linux/x86_64/abitag.as

+ 1 - 0
.gitattributes

@@ -8602,6 +8602,7 @@ rtl/linux/unxconst.inc svneol=native#text/plain
 rtl/linux/unxfunc.inc svneol=native#text/plain
 rtl/linux/unxsysc.inc svneol=native#text/plain
 rtl/linux/unxsysch.inc svneol=native#text/plain
+rtl/linux/x86_64/abitag.as svneol=native#text/plain
 rtl/linux/x86_64/bsyscall.inc svneol=native#text/plain
 rtl/linux/x86_64/cprt0.as svneol=native#text/plain
 rtl/linux/x86_64/dllprt0.as svneol=native#text/plain

+ 5 - 2
rtl/linux/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2015-01-05 rev 29399]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
@@ -349,6 +349,7 @@ endif
 ifeq ($(ARCH),x86_64)
 CPU_UNITS=x86 ports cpu
 SYSINIT_UNITS=si_prc si_c si_g si_dll
+override LOADERS+=abitag
 endif
 ifeq ($(ARCH),mipsel)
 override FPCOPT+=-Ur
@@ -2974,7 +2975,7 @@ ifdef CREATESHARED
 override FPCOPT+=-Cg
 endif
 ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifeq ($(CPU_TARGET),x86_64)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
 override FPCOPT+=-Cg
 endif
 endif
@@ -3448,6 +3449,8 @@ ifeq ($(ARCH),arm)
 endif
 prt0$(OEXT) : $(ARCH)/prt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(ARCH)/prt0.as
+abitag$(OEXT) : $(ARCH)/abitag.as
+	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)abitag$(OEXT) $(ARCH)/abitag.as
 dllprt0$(OEXT) : $(ARCH)/dllprt0.as
 ifndef ARMTHUMB
 	$(AS) $(ASTARGET) $(ASSHAREDOPT) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(ARCH)/dllprt0.as

+ 3 - 0
rtl/linux/Makefile.fpc

@@ -77,6 +77,7 @@ endif
 ifeq ($(ARCH),x86_64)
 CPU_UNITS=x86 ports cpu
 SYSINIT_UNITS=si_prc si_c si_g si_dll
+override LOADERS+=abitag
 endif
 
 # mipsel reuses mips files by including so some file names exist
@@ -163,6 +164,8 @@ endif
 prt0$(OEXT) : $(ARCH)/prt0.as
         $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(ARCH)/prt0.as
 
+abitag$(OEXT) : $(ARCH)/abitag.as
+        $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)abitag$(OEXT) $(ARCH)/abitag.as
 
 # ASSHAREDOPT adds -KPIC mandatoy for mips/mipsel objects in shared libs
 #

+ 29 - 0
rtl/linux/x86_64/abitag.as

@@ -0,0 +1,29 @@
+#
+#   This file is part of the Free Pascal run time library.
+#   Copyright (c) 2002 by Florian Klaempfl
+#   members of the Free Pascal development team.
+#
+#   See the file COPYING.FPC, included in this distribution,
+#   for details about the copyright.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY;without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+#**********************************************************************
+
+.file "abitag.as"
+
+        .section ".note.ABI-tag", "a"
+        .align 4
+        .long 1f - 0f
+        .long 3f - 2f
+        .long  1
+0:      .asciz "GNU"
+1:      .align 4
+2:      .long 0
+        .long 2,4,0
+3:      .align 4
+
+	.section .note.GNU-stack,"",@progbits
+