Add ld makefile dependencies
[binutils-gdb.git] / ld / ldelf.c
index bfa0d54753ad8a7de02b4bae999119588ef982c6..23a014d963b5224dc64f3abb9db89d6dd24148f3 100644 (file)
@@ -1,5 +1,5 @@
 /* ELF emulation code for targets using elf.em.
-   Copyright (C) 1991-2022 Free Software Foundation, Inc.
+   Copyright (C) 1991-2023 Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils.
 
@@ -524,10 +524,13 @@ ldelf_search_needed (const char *path, struct dt_needed *n, int force,
                      else
                        {
                          char * current_dir = getpwd ();
-
-                         freeme = xmalloc (strlen (replacement)
-                                           + strlen (current_dir) + 2);
-                         sprintf (freeme, "%s/%s", current_dir, replacement);
+                         size_t cdir_len = strlen (current_dir);
+                         size_t rep_len = strlen (replacement);
+                         freeme = xmalloc (cdir_len + rep_len + 2);
+                         memcpy (freeme, current_dir, cdir_len);
+                         freeme[cdir_len] = '/';
+                         memcpy (freeme + cdir_len + 1,
+                                 replacement, rep_len + 1);
                        }
 
                      replacement = freeme;
@@ -1215,7 +1218,8 @@ ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
 {
   struct elf_link_hash_table *htab = elf_hash_table (&link_info);
 
-  if (!is_elf_hash_table (&htab->root))
+  if (!link_info.lto_plugin_active
+      || !is_elf_hash_table (&htab->root))
     return;
 
   htab->handling_dt_needed = true;