| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- Use the platform specific ELF branding expected under FreeBSD.
- This is similar to what the vendor ld(1) does on this platform.
- Index: bfd/elf.c
- --- bfd/elf.c.orig 2002-07-30 20:19:42.000000000 +0200
- +++ bfd/elf.c 2002-08-22 17:41:47.000000000 +0200
- @@ -4235,6 +4235,12 @@
- else
- i_ehdrp->e_type = ET_REL;
-
- + /* OpenPKG platform branding BEGIN */
- +#if defined(OPENPKG_OS_FREEBSD)
- + i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
- +#endif
- + /* OpenPKG platform branding END */
- +
- switch (bfd_get_arch (abfd))
- {
- case bfd_arch_unknown:
- -----------------------------------------------------------------------------
- Fix the linker under Solaris/SPARC.
- Index: bfd/elf64-sparc.c
- --- bfd/elf64-sparc.c.orig 2003-06-20 09:42:19.000000000 +0200
- +++ bfd/elf64-sparc.c 2003-06-20 09:42:40.000000000 +0200
- @@ -2684,7 +2684,7 @@
- overflows. We don't, but this breaks stabs debugging
- info, whose relocations are only 32-bits wide. Ignore
- overflows for discarded entries. */
- - if (r_type == R_SPARC_32
- + if ((r_type == R_SPARC_32 || r_type == R_SPARC_DISP32)
- && _bfd_elf_section_offset (output_bfd, info, input_section,
- rel->r_offset) == (bfd_vma) -1)
- break;
- -----------------------------------------------------------------------------
- Support FreeBSD 4.10 by fixing platform detection.
- Index: bfd/configure
- --- bfd/configure.orig 2003-06-12 16:25:46.000000000 +0200
- +++ bfd/configure 2004-04-30 22:01:31.000000000 +0200
- @@ -5133,6 +5133,10 @@
- i[3456]86-*-bsdi)
- COREFILE=
- ;;
- + i[3456]86-*-freebsd4.1[0-9]*)
- + COREFILE=''
- + TRAD_HEADER='"hosts/i386bsd.h"'
- + ;;
- i[3456]86-*-bsd* | i[34567]86-*-freebsd[123] | i[34567]86-*-freebsd[123]\.* | i[34567]86-*-freebsd4\.[01234]* | i[34567]86-*-freebsd*aout*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/i386bsd.h"'
- -----------------------------------------------------------------------------
- Accept (and ignore) --as-needed/--no-as-needed options from GNU binutils
- 2.15 in our GNU binutils 2.14 to resolve a chicken and egg problem under
- platforms (like Fedora Core 2) which already run GNU binutils 2.15: the
- vendor cc(1) knows that it has ld(1) from GNU binutils 2.15 and hence
- always uses the --as-needed option when calling ld(1). Unfortunately,
- between having built "binutils" and "gcc" packages, this will break
- OpenPKG because the vendor cc(1) would run the OpenPKG ld(1) with an
- option is (still) does not understand. The only workaround is to let our
- ld(1) accept and ignore this option. Once our cc(1) from "gcc" package
- is installed, the problem is gone, because our "gcc" package correctly
- detects that our ld(1) still does ot understand --as-needed.
- Index: ld/lexsup.c
- --- ld/lexsup.c.orig 2003-03-31 20:12:52.000000000 +0200
- +++ ld/lexsup.c 2004-05-05 16:52:46.000000000 +0200
- @@ -112,7 +112,9 @@
- #define OPTION_SPLIT_BY_RELOC (OPTION_WARN_SECTION_ALIGN + 1)
- #define OPTION_SPLIT_BY_FILE (OPTION_SPLIT_BY_RELOC + 1)
- #define OPTION_WHOLE_ARCHIVE (OPTION_SPLIT_BY_FILE + 1)
- -#define OPTION_WRAP (OPTION_WHOLE_ARCHIVE + 1)
- +#define OPTION_AS_NEEDED (OPTION_WHOLE_ARCHIVE + 1)
- +#define OPTION_NO_AS_NEEDED (OPTION_AS_NEEDED + 1)
- +#define OPTION_WRAP (OPTION_NO_AS_NEEDED + 1)
- #define OPTION_FORCE_EXE_SUFFIX (OPTION_WRAP + 1)
- #define OPTION_GC_SECTIONS (OPTION_FORCE_EXE_SUFFIX + 1)
- #define OPTION_NO_GC_SECTIONS (OPTION_GC_SECTIONS + 1)
- @@ -423,6 +425,10 @@
- TWO_DASHES },
- { {"whole-archive", no_argument, NULL, OPTION_WHOLE_ARCHIVE},
- '\0', NULL, N_("Include all objects from following archives"), TWO_DASHES },
- + { {"as-needed", no_argument, NULL, OPTION_AS_NEEDED},
- + '\0', NULL, N_("Only set DT_NEEDED for following dynamic libs if used"), TWO_DASHES },
- + { {"no-as-needed", no_argument, NULL, OPTION_NO_AS_NEEDED},
- + '\0', NULL, N_("Always set DT_NEEDED for following dynamic libs"), TWO_DASHES },
- { {"wrap", required_argument, NULL, OPTION_WRAP},
- '\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES },
- { {"mpc860c0", optional_argument, NULL, OPTION_MPC860C0},
- @@ -823,6 +829,10 @@
- case OPTION_NO_WHOLE_ARCHIVE:
- whole_archive = FALSE;
- break;
- + case OPTION_AS_NEEDED:
- + case OPTION_NO_AS_NEEDED:
- + einfo("%P: warning: options --as-needed and --no-as-needed still not supported\n");
- + break;
- case 'O':
- /* FIXME "-O<non-digits> <value>" used to set the address of
- section <non-digits>. Was this for compatibility with
|