[01/15] arc: libgloss: Use long calls attribute for exit_halt

Message ID 20240521095658.10311-2-kolerov93@gmail.com
State New
Headers
Series A series of fixes for ARC and libgloss update |

Commit Message

Yuriy Kolerov May 21, 2024, 9:56 a.m. UTC
  From: Claudiu Zissulescu <claziss@gmail.com>

According to GCC documentation for ARC, a function marked with
the long_call attribute is always called using register-indirect
jump-and-link instructions, thereby enabling the called function
to be placed anywhere within the 32-bit address space.

exit_halt function is provided by crt0.S and it's used
in nsim-syscalls.c. Thus, we want to ensure that a linkage
issue will not arise.

Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
---
 libgloss/arc/nsim-syscalls.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Patch

diff --git a/libgloss/arc/nsim-syscalls.c b/libgloss/arc/nsim-syscalls.c
index 7dd0af10f..d299f8cdc 100644
--- a/libgloss/arc/nsim-syscalls.c
+++ b/libgloss/arc/nsim-syscalls.c
@@ -1,5 +1,5 @@ 
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -100,7 +100,7 @@  _open (const char * pathname, int flags, int mode)
 }
 
 /* Should be provided by crt0.S.  */
-extern void __attribute__((noreturn)) _exit_halt ();
+extern void __attribute__((noreturn, long_call)) _exit_halt ();
 
 void
 __attribute__((noreturn))