[haiku-commits] haiku: hrev53553 - in src/system/libroot: posix os/arch/x86_64 os/arch/x86 os/arch/sparc os/arch/riscv64

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 19 Oct 2019 13:03:09 -0400 (EDT)

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() {}


Other related posts:

  • » [haiku-commits] haiku: hrev53553 - in src/system/libroot: posix os/arch/x86_64 os/arch/x86 os/arch/sparc os/arch/riscv64 - waddlesplash