From ef8f08ca13f6c111cc549a3e13be5c5e2d95ca82 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 29 Jan 2020 10:25:58 +1030 Subject: [PATCH] PR25477, ld 2.34 tries to load ${prefix}/etc/ld.so.conf PR 25477 * ldelf.c (ldelf_check_ld_so_conf): Add prefix parameter and correct concat. (ldelf_after_open): Add prefix parameter. * ldelf.h (ldelf_after_open): Update prototype. * emultempl/elf.em (gld${EMULATION_NAME}_after_open): Pass $prefix to ldelf_after_open. * Makefile.am: Correct z80 dependencies. * Makefile.in: Regenerate. --- ld/ChangeLog | 12 ++++++++++++ ld/Makefile.am | 2 +- ld/Makefile.in | 2 +- ld/emultempl/elf.em | 2 +- ld/ldelf.c | 8 ++++---- ld/ldelf.h | 2 +- 6 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 7a1dc98bca1..850f1db8036 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,15 @@ +2020-01-29 Alan Modra + + PR 25477 + * ldelf.c (ldelf_check_ld_so_conf): Add prefix parameter and + correct concat. + (ldelf_after_open): Add prefix parameter. + * ldelf.h (ldelf_after_open): Update prototype. + * emultempl/elf.em (gld${EMULATION_NAME}_after_open): Pass $prefix + to ldelf_after_open. + * Makefile.am: Correct z80 dependencies. + * Makefile.in: Regenerate. + 2020-01-28 Alan Modra * ldexp.c (fold_name): Don't print bfd_link_hash_lookup failed diff --git a/ld/Makefile.am b/ld/Makefile.am index 2ed13eba87c..4a9b8404b7b 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -775,6 +775,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xc16xs.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xstormy16.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xtensa.Pc@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32z80.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_be.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_fbsd.Pc@am__quote@ @@ -873,7 +874,6 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez80.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez8001.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez8002.Pc@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez80elf32.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elf.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elf32.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elfb.Pc@am__quote@ diff --git a/ld/Makefile.in b/ld/Makefile.in index f6358456435..46d9b140779 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -2379,6 +2379,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xc16xs.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xstormy16.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xtensa.Pc@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32z80.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_be.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_fbsd.Pc@am__quote@ @@ -2477,7 +2478,6 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez80.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez8001.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez8002.Pc@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez80elf32.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elf.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elf32.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elfb.Pc@am__quote@ diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em index 9c32397c8d3..42c552b36ed 100644 --- a/ld/emultempl/elf.em +++ b/ld/emultempl/elf.em @@ -125,7 +125,7 @@ static void gld${EMULATION_NAME}_after_open (void) { ldelf_after_open ($IS_LIBPATH, $IS_NATIVE, - $IS_LINUX_TARGET, $IS_FREEBSD_TARGET, $ELFSIZE); + $IS_LINUX_TARGET, $IS_FREEBSD_TARGET, $ELFSIZE, "$prefix"); } EOF diff --git a/ld/ldelf.c b/ld/ldelf.c index 6c20fbeff51..2e27cf48a81 100644 --- a/ld/ldelf.c +++ b/ld/ldelf.c @@ -894,7 +894,7 @@ ldelf_parse_ld_so_conf (struct ldelf_ld_so_conf *info, const char *filename) static bfd_boolean ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force, - int elfsize) + int elfsize, const char *prefix) { static bfd_boolean initialized; static const char *ld_so_conf; @@ -907,7 +907,7 @@ ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force, info.path = NULL; info.len = info.alloc = 0; - tmppath = concat (ld_sysroot, "${prefix}/etc/ld.so.conf", + tmppath = concat (ld_sysroot, prefix, "/etc/ld.so.conf", (const char *) NULL); if (!ldelf_parse_ld_so_conf (&info, tmppath)) { @@ -986,7 +986,7 @@ ldelf_check_needed (lang_input_statement_type *s) void ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, - int elfsize) + int elfsize, const char *prefix) { struct bfd_link_needed_list *needed, *l; struct elf_link_hash_table *htab; @@ -1260,7 +1260,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, break; if (is_linux - && ldelf_check_ld_so_conf (l, force, elfsize)) + && ldelf_check_ld_so_conf (l, force, elfsize, prefix)) break; } diff --git a/ld/ldelf.h b/ld/ldelf.h index baf5183e012..492649b2934 100644 --- a/ld/ldelf.h +++ b/ld/ldelf.h @@ -22,7 +22,7 @@ extern const char *ldelf_emit_note_gnu_build_id; extern void ldelf_after_parse (void); extern bfd_boolean ldelf_load_symbols (lang_input_statement_type *); -extern void ldelf_after_open (int, int, int, int, int); +extern void ldelf_after_open (int, int, int, int, int, const char *); extern bfd_boolean ldelf_setup_build_id (bfd *); extern void ldelf_append_to_separated_string (char **, char *); extern void ldelf_before_allocation (char *, char *, const char *); -- 2.30.2