Deleted Added
full compact
142c142,148
< cat >>e${EMULATION_NAME}.c <<EOF
---
> case ${target} in
> *-*-freebsd*)
> cat >>e${EMULATION_NAME}.c <<EOF
> /*
> * Read the system search path the FreeBSD way rather than like Linux.
> */
> #include <elf.h>
143a150,204
> static boolean gld${EMULATION_NAME}_check_ld_elf_hints
> PARAMS ((const char *, int));
>
> static boolean
> gld${EMULATION_NAME}_check_ld_elf_hints (name, force)
> const char *name;
> int force;
> {
> static boolean initialized;
> static char *ld_elf_hints;
>
> if (! initialized)
> {
> FILE *f;
>
> f = fopen (_PATH_ELF_HINTS, FOPEN_RB);
> if (f != NULL)
> {
> struct elfhints_hdr hdr;
>
> if (fread(&hdr, 1, sizeof(hdr), f) == sizeof(hdr) &&
> hdr.magic == ELFHINTS_MAGIC &&
> hdr.version == 1)
> {
> if (fseek(f, hdr.strtab + hdr.dirlist, SEEK_SET) != -1)
> {
> char *b;
>
> b = (char *) xmalloc (hdr.dirlistlen + 1);
> if (fread(b, 1, hdr.dirlistlen + 1, f) !=
> hdr.dirlistlen + 1)
> {
> free(b);
> }
> else
> {
> ld_elf_hints = b;
> }
> }
> }
> fclose (f);
> }
>
> initialized = true;
> }
>
> if (ld_elf_hints == NULL)
> return false;
>
> return gld${EMULATION_NAME}_search_needed (ld_elf_hints, name, force);
> }
> EOF
> ;;
> *)
> cat >>e${EMULATION_NAME}.c <<EOF
224d284
<
225a286
> esac
338c399,407
< cat >>e${EMULATION_NAME}.c <<EOF
---
> case ${target} in
> *-*-freebsd*)
> cat >>e${EMULATION_NAME}.c <<EOF
> if (gld${EMULATION_NAME}_check_ld_elf_hints (l->name, force))
> break;
> EOF
> ;;
> *)
> cat >>e${EMULATION_NAME}.c <<EOF
341a411,412
> ;;
> esac