git: gcc44, crtstuff: Provide -fPIE support

看板DFBSD_commit作者時間14年前 (2011/05/17 07:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit e101389cdfc0ee127faf5259925a47b42b692580 Author: John Marino <draco@marino.st> Date: Sat Apr 9 15:14:25 2011 +0200 gcc44, crtstuff: Provide -fPIE support Properly support Position Independent Executables (PIE) generation by linking PIE binaries with specially-built Scrt1.o instead of crt1.o. The latter is built without the -fPIC flag. For the i386 version, gcc-2 code was first purged, and then the new assembly was placed in a separate file. All data extracted by the assembler stub as explicit parameters. The hidden _start1 symbol is used as an interface between the assembly and C code. The CFLAGS -fkeep-inline-functions was removed as it was legacy FreeBSD code that has been long since removed. The CFLAGS -elf was removed as all DragonFly targets are elf. The LDFLAGS -elf was removed because it was getting interpreted as "-entry=lf" by ld. LDFLAGS weren't even used before this commit so it's always been completely extraneous. For x86_64, the no-omit-frame-pointer flag was added during the build of crt1.o. For the builtin gcc function __builtin_frame_address to work, all call frames need to save the frame pointer. In particular, this is important for the upper frame that should terminate the chain. Summary of changes: contrib/gcc-4.4/gcc/config/dragonfly.h | 15 ++- lib/csu/i386/Makefile.csu | 31 +++++-- lib/csu/i386/crt1.c | 147 -------------------------------- lib/csu/i386/crt1_c.c | 96 +++++++++++++++++++++ lib/csu/i386/crt1_s.S | 49 +++++++++++ lib/csu/x86_64/Makefile.csu | 6 +- 6 files changed, 182 insertions(+), 162 deletions(-) delete mode 100644 lib/csu/i386/crt1.c create mode 100644 lib/csu/i386/crt1_c.c create mode 100644 lib/csu/i386/crt1_s.S http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/e101389cdfc0ee127faf5259925a47b42b692580 -- DragonFly BSD source repository
文章代碼(AID): #1DqRG89Z (DFBSD_commit)