Browse Source

fixup from Bernd Schmidt to properly document DL_ADDR_TO_FUNC_PTR

Mike Frysinger 18 years ago
parent
commit
442bfab4b4
1 changed files with 9 additions and 3 deletions
  1. 9 3
      ldso/include/dl-defs.h

+ 9 - 3
ldso/include/dl-defs.h

@@ -140,13 +140,19 @@ typedef struct {
 	 && (!(TFROM) || (TFROM)->loadaddr < (TPNT)->loadaddr))
 #endif
 
+/* Use this macro to convert a pointer to a function's entry point to
+ * a pointer to function.  The pointer is assumed to have already been
+ * relocated.  LOADADDR is passed because it may contain additional
+ * information needed to compute the pointer to function.
+ */
+#ifndef DL_ADDR_TO_FUNC_PTR
+# define DL_ADDR_TO_FUNC_PTR(ADDR, LOADADDR) ((void(*)(void))(ADDR))
+#endif
+
 /* On some platforms, computing a pointer to function is more
    expensive than calling a function at a given address, so this
    alternative is provided.  The function signature must be given
    within parentheses, as in a type cast.  */
-#ifndef DL_ADDR_TO_FUNC_PTR
-# define DL_ADDR_TO_FUNC_PTR(ADDR, LOADADDR) (ADDR)
-#endif
 #ifndef DL_CALL_FUNC_AT_ADDR
 # define DL_CALL_FUNC_AT_ADDR(ADDR, LOADADDR, SIGNATURE, ...) \
   ((*SIGNATURE DL_ADDR_TO_FUNC_PTR ((ADDR), (LOADADDR)))(__VA_ARGS__))