+ 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 -
This commit is contained in:
sergei 2015-01-26 17:15:48 +00:00
parent bb8de483f2
commit e2eb6dffbb
4 changed files with 38 additions and 2 deletions

1
.gitattributes vendored
View File

@ -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

View File

@ -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

View File

@ -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
#

View File

@ -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