[v1,3/3] CHIP: language additions

Message ID 20230314220114.1117782-4-binutils@emagii.com
State Accepted
Headers
Series [v1,1/3] CHIP: ldlex.l |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Ulf Samuelsson March 14, 2023, 10:01 p.m. UTC
  From: Ulf Samuelsson <ulf@emagii.com>

Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
---
 ld/ldfile.c | 29 ++++++++++++++++++++++++++++-
 ld/ldfile.h |  2 ++
 2 files changed, 30 insertions(+), 1 deletion(-)
  

Patch

diff --git a/ld/ldfile.c b/ld/ldfile.c
index b8fd4e5d8e0..9e9099dafae 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -710,7 +710,6 @@  ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
       einfo (_("%F%P: cannot open linker script file %s: %E\n"), name);
       return;
     }
-
   track_dependency_files (name);
 
   lex_push_file (ldlex_input_stack, name, sysrooted);
@@ -729,6 +728,34 @@  ldfile_open_command_file (const char *name)
   ldfile_open_command_file_1 (name, script_nonT);
 }
 
+void
+ldfile_open_chip_file (const char *name)
+{
+  char *fullname;
+  char *proj   = getenv("PROJ_DIR");
+  if (proj != NULL)
+    {
+      ldfile_add_library_path(proj, false);
+    }
+  char *user   = getenv("LD_USER_DIR");
+  if (user != NULL)
+    {
+      fullname = concat(user, slash, name , (const char *) NULL);
+      ldfile_add_library_path(fullname, false);
+      free(fullname);
+    }
+  char *vendor = getenv("LD_VENDOR_DIR");
+  if (vendor != NULL)
+    {
+      fullname = concat(vendor, slash, name , (const char *) NULL);
+      ldfile_add_library_path(fullname, false);
+      free(fullname);
+    }
+  fullname = concat(name, ".inc", (const char *) NULL);
+  ldfile_open_command_file_1 (fullname, script_nonT);
+  free(fullname);
+}
+
 void
 ldfile_open_script_file (const char *name)
 {
diff --git a/ld/ldfile.h b/ld/ldfile.h
index defb550f76b..3b43e549928 100644
--- a/ld/ldfile.h
+++ b/ld/ldfile.h
@@ -46,6 +46,8 @@  extern void ldfile_add_library_path
   (const char *, bool cmdline);
 extern void ldfile_open_command_file
   (const char *name);
+extern void ldfile_open_chip_file
+  (const char *name);
 extern void ldfile_open_script_file
   (const char *name);
 extern void ldfile_open_default_command_file