hrev53553 adds 1 changeset to branch 'master'
old head: 09fafe4c9543c690bc0cdb0ec9ca6eeb449e981d
new head: 016cc668030a6d08daf8792e14de8512fdf0e5b8
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=016cc668030a+%5E09fafe4c9543
----------------------------------------------------------------------------
016cc668030a: Remove arch_get_caller
Use the gcc builtin instead, which generates more efficient code (it
saves a function call) and means less platform specific code to write
for us.
Change-Id: I1d55b5703027b2ea4ecde2438ea306bd4850eb32
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1859
Reviewed-by: waddlesplash <waddlesplash@xxxxxxxxx>
[ Jaroslaw Pelczar <jarek@xxxxxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev53553
Commit: 016cc668030a6d08daf8792e14de8512fdf0e5b8
URL: https://git.haiku-os.org/haiku/commit/?id=016cc668030a
Author: Jaroslaw Pelczar <jarek@xxxxxxxxxxxx>
Date: Tue Sep 3 18:16:48 2019 UTC
Committer: waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Sat Oct 19 17:03:05 2019 UTC
----------------------------------------------------------------------------
11 files changed, 3 insertions(+), 56 deletions(-)
headers/private/libroot/libroot_private.h | 1 -
src/system/libroot/os/arch/arm/stack_frame.c | 7 -------
src/system/libroot/os/arch/m68k/stack_frame.c | 7 -------
src/system/libroot/os/arch/ppc/stack_frame.c | 7 -------
src/system/libroot/os/arch/riscv64/stack_frame.c | 8 --------
src/system/libroot/os/arch/sparc/stack_frame.c | 8 --------
src/system/libroot/os/arch/x86/get_stack_frame.S | 7 -------
src/system/libroot/os/arch/x86_64/get_stack_frame.S | 7 -------
src/system/libroot/posix/dlfcn.c | 5 +++--
src/system/libroot/stubbed/libroot_stubs.c | 1 -
src/system/libroot/stubbed/libroot_stubs_legacy.c | 1 -
----------------------------------------------------------------------------
diff --git a/headers/private/libroot/libroot_private.h
b/headers/private/libroot/libroot_private.h
index a54e7d2b30..20bc2ade99 100644
--- a/headers/private/libroot/libroot_private.h
+++ b/headers/private/libroot/libroot_private.h
@@ -50,7 +50,6 @@ bigtime_t __arch_get_system_time_offset(struct real_time_data
*data);
bigtime_t __get_system_time_offset();
void __init_pwd_backend(void);
void __reinit_pwd_backend_after_fork(void);
-void* __arch_get_caller(void);
int32 __arch_get_stack_trace(addr_t* returnAddresses, int32 maxCount,
int32 skipFrames, addr_t stackBase, addr_t stackEnd);
diff --git a/src/system/libroot/os/arch/arm/stack_frame.c
b/src/system/libroot/os/arch/arm/stack_frame.c
index 30223cbcea..5975ff8732 100644
--- a/src/system/libroot/os/arch/arm/stack_frame.c
+++ b/src/system/libroot/os/arch/arm/stack_frame.c
@@ -18,10 +18,3 @@ get_stack_frame(void)
return NULL;
}
-
-void*
-__arch_get_caller(void)
-{
- // TODO: Implement!
- return NULL;
-}
diff --git a/src/system/libroot/os/arch/m68k/stack_frame.c
b/src/system/libroot/os/arch/m68k/stack_frame.c
index c08447a411..f063449176 100644
--- a/src/system/libroot/os/arch/m68k/stack_frame.c
+++ b/src/system/libroot/os/arch/m68k/stack_frame.c
@@ -15,10 +15,3 @@ get_stack_frame(void)
return NULL;
}
-
-void*
-__arch_get_caller(void)
-{
- // TODO: Implement!
- return NULL;
-}
diff --git a/src/system/libroot/os/arch/ppc/stack_frame.c
b/src/system/libroot/os/arch/ppc/stack_frame.c
index c08447a411..f063449176 100644
--- a/src/system/libroot/os/arch/ppc/stack_frame.c
+++ b/src/system/libroot/os/arch/ppc/stack_frame.c
@@ -15,10 +15,3 @@ get_stack_frame(void)
return NULL;
}
-
-void*
-__arch_get_caller(void)
-{
- // TODO: Implement!
- return NULL;
-}
diff --git a/src/system/libroot/os/arch/riscv64/stack_frame.c
b/src/system/libroot/os/arch/riscv64/stack_frame.c
index d5db3c3f4d..f063449176 100644
--- a/src/system/libroot/os/arch/riscv64/stack_frame.c
+++ b/src/system/libroot/os/arch/riscv64/stack_frame.c
@@ -15,11 +15,3 @@ get_stack_frame(void)
return NULL;
}
-
-void*
-__arch_get_caller(void)
-{
- // TODO: Implement!
- return NULL;
-}
-
diff --git a/src/system/libroot/os/arch/sparc/stack_frame.c
b/src/system/libroot/os/arch/sparc/stack_frame.c
index d5db3c3f4d..f063449176 100644
--- a/src/system/libroot/os/arch/sparc/stack_frame.c
+++ b/src/system/libroot/os/arch/sparc/stack_frame.c
@@ -15,11 +15,3 @@ get_stack_frame(void)
return NULL;
}
-
-void*
-__arch_get_caller(void)
-{
- // TODO: Implement!
- return NULL;
-}
-
diff --git a/src/system/libroot/os/arch/x86/get_stack_frame.S
b/src/system/libroot/os/arch/x86/get_stack_frame.S
index 86e370cf78..3319e7b29b 100644
--- a/src/system/libroot/os/arch/x86/get_stack_frame.S
+++ b/src/system/libroot/os/arch/x86/get_stack_frame.S
@@ -12,10 +12,3 @@ FUNCTION(get_stack_frame):
ret
FUNCTION_END(get_stack_frame)
-
-/* void* __arch_get_caller(void); */
-FUNCTION(__arch_get_caller):
- mov 4(%ebp), %eax
- ret
-FUNCTION_END(__arch_get_caller)
-
diff --git a/src/system/libroot/os/arch/x86_64/get_stack_frame.S
b/src/system/libroot/os/arch/x86_64/get_stack_frame.S
index 0eaee36523..f017215a4d 100644
--- a/src/system/libroot/os/arch/x86_64/get_stack_frame.S
+++ b/src/system/libroot/os/arch/x86_64/get_stack_frame.S
@@ -13,10 +13,3 @@ FUNCTION(get_stack_frame):
ret
FUNCTION_END(get_stack_frame)
-
-/* void* __arch_get_caller(void); */
-FUNCTION(__arch_get_caller):
- movq 8(%rbp), %rax
- ret
-FUNCTION_END(__arch_get_caller)
-
diff --git a/src/system/libroot/posix/dlfcn.c b/src/system/libroot/posix/dlfcn.c
index 84d58aedef..6ba7855c06 100644
--- a/src/system/libroot/posix/dlfcn.c
+++ b/src/system/libroot/posix/dlfcn.c
@@ -40,8 +40,9 @@ dlsym(void *handle, char const *name)
status_t status;
void* caller = NULL;
- if (handle == RTLD_NEXT)
- caller = __arch_get_caller();
+ if (handle == RTLD_NEXT) {
+ caller = __builtin_return_address(0);
+ }
status = __gRuntimeLoader->get_library_symbol(handle, caller, name,
&location);
diff --git a/src/system/libroot/stubbed/libroot_stubs.c
b/src/system/libroot/stubbed/libroot_stubs.c
index 85f19d499a..f65dfa9e00 100644
--- a/src/system/libroot/stubbed/libroot_stubs.c
+++ b/src/system/libroot/stubbed/libroot_stubs.c
@@ -608,7 +608,6 @@ void __acosl() {}
void __acr() {}
void __add() {}
void __allocate_pthread() {}
-void __arch_get_caller() {}
void __arch_get_stack_trace() {}
void __arch_get_system_time_offset() {}
void __arch_init_time() {}
diff --git a/src/system/libroot/stubbed/libroot_stubs_legacy.c
b/src/system/libroot/stubbed/libroot_stubs_legacy.c
index 52c3b4500d..fc050f3d18 100644
--- a/src/system/libroot/stubbed/libroot_stubs_legacy.c
+++ b/src/system/libroot/stubbed/libroot_stubs_legacy.c
@@ -418,7 +418,6 @@ void __acoshl() {}
void __acosl() {}
void
__adjust_heap__H3ZPQ217EnvironmentFilter5EntryZlZQ217EnvironmentFilter5Entry_X01X11X11X21_v()
{}
void __allocate_pthread() {}
-void __arch_get_caller() {}
void __arch_get_stack_trace() {}
void __arch_get_system_time_offset() {}
void __arch_init_time() {}