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.