For x86_64 this includes defining a new linker emulation, "elf_x86_64_haiku"
(to match the existing "elf_i386_haiku") and updating gcc accordingly.
Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>
Update LINK_SPEC (for arm, i386, x86_64 and ppc) with more compact but
functionally equivalent sequences.
Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>
* CC1_SPEC: Remove non-existent "no-fpic" command-line option; add
"fno-PIC" and "fno-PIE" as options that disable the generation of
position-independent code; use "-fPIC" by default.
* LINK_SPEC: Pass "-shared" to the linker only if it was passed to gcc; output
position-independent executables by default; when linking executables, allow
undefined symbols in shared libraries and export all symbols (to match the
behaviour of "-shared").
Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>
Works around "relocation truncated to fit: R_PPC_GOT16 against symbol" issue
mentioned in #10240. PIC uses a larger GOT which doesn't overflow, unlike pic.
* Adjust the libgcc spec to actually link against libgcc explicitly
(it is no longer included in libroot.so on anything except x86_gcc2).
* Apply --as-needed when linking against libgcc_s.so
* Drop search paths that no longer exist (/boot/common/...).
* The glue code files crtbegin.o and crtend.o don't cleanup globals
properly, only the variants with the S suffix do. As executables are
shared on Haiku, we use crtbeginS.o and crtendS.o for those, too.
This fixes crashes on shutdown of Haiku servers that load add-ons (e.g.
Print Server and Media Add-On Server).
* The configure script for libstdc++ contained a couple of duplicate
'haiku*' case entries, where the first would shadow the second.
* Correct several incorrect libtool definitions and paths.
* Gcc will now build libgcc.a, libgcc_eh.a and libgcc_s.so.
* Activate thread support for libgcc.
* Let libgcc use ELF dwarf2 unwinding on Haiku.
* Activate ELF symbol versioning on Haiku.
* Activate use of __cxa_atexit
* Drop fragments of Haiku support for mipsel
* copied the generic config and added os_defines to enable time support
without link tests when cross compiling.
* os_defines definitions are disabled for _KERNEL_MODE and _LOADER_MODE.
* Drop /boot/common header paths
I don't think pre-pm haiku will build anyway
without using an older buildtools.
* Add secondary arch os header directories.
Anything secondary arch that provides os
headers will break without the proper search
paths in gcc.
* Fixes secondary packages that depend on the
OpenGL kit
Due to the use of STARTFILE_PREFIX_SPEC the path containing the
libraries gcc provides (libstdc++ and friends) was missing. So
revert to the previously used STANDARD_STARTFILE_PREFIX_{1,2},
MD_STARTFILE_PREFIX method.
* Rename to --with-hybrid-secondary and require as parameter the name of
the secondary packaging architecture. The value is used for
constructing the respective default header and library search paths.
* Add /boot/system/develop/headers/<arch> to header search paths.
* The build host's math library is needed, not the host's. Makes a
difference when build host != host, e.g. when cross-compiling a native
Haiku compiler on Linux.
* Rename the variable math_library -> build_math_library for clarity.
This is already done on x86 using the --enable-frame-pointer option
to GCC's configure script, but that option only works for 32-bit x86.
Added an option to haiku64.h that forces it off by default for 64-bit.