Restore ENTRY_POINT definition on hppa, ia64 (bug 28749)

Message ID 87zgo79b0l.fsf@oldenburg.str.redhat.com
State New
Headers show
Series
  • Restore ENTRY_POINT definition on hppa, ia64 (bug 28749)
Related show

Commit Message

Sunil K Pandey via Libc-alpha Jan. 7, 2022, 8:59 a.m.
ENTRY_POINT is still needed for elf/rtld.c.  Fixes commit 4fb4e7e821e3
("csu: Always use __executable_start in gmon-start.c").

---
 sysdeps/hppa/entry.h | 8 ++++++++
 sysdeps/ia64/entry.h | 8 ++++++++
 2 files changed, 16 insertions(+)

Comments

Sunil K Pandey via Libc-alpha Jan. 7, 2022, 1:43 p.m. | #1
On 07/01/2022 05:59, Florian Weimer via Libc-alpha wrote:
> ENTRY_POINT is still needed for elf/rtld.c.  Fixes commit 4fb4e7e821e3

> ("csu: Always use __executable_start in gmon-start.c").


LGTM, thanks.

> 

> ---

>  sysdeps/hppa/entry.h | 8 ++++++++

>  sysdeps/ia64/entry.h | 8 ++++++++

>  2 files changed, 16 insertions(+)

> 

> diff --git a/sysdeps/hppa/entry.h b/sysdeps/hppa/entry.h

> new file mode 100644

> index 0000000000..f88bb5689d

> --- /dev/null

> +++ b/sysdeps/hppa/entry.h

> @@ -0,0 +1,8 @@

> +extern void _start (void);

> +

> +/* Lives in libgcc.so and canonicalizes function pointers for comparison.  */

> +extern unsigned int __canonicalize_funcptr_for_compare (unsigned int fptr);

> +

> +/* The function's entry point is stored in the first word of the

> +   function descriptor (plabel) of _start().  */

> +#define ENTRY_POINT __canonicalize_funcptr_for_compare((unsigned int)_start)

> diff --git a/sysdeps/ia64/entry.h b/sysdeps/ia64/entry.h

> new file mode 100644

> index 0000000000..9ae8b8615c

> --- /dev/null

> +++ b/sysdeps/ia64/entry.h

> @@ -0,0 +1,8 @@

> +#include <link.h>

> +#include <dl-fptr.h>

> +

> +extern void _start (void);

> +

> +/* The function's entry point is stored in the first word of the

> +   function descriptor (plabel) of _start().  */

> +#define ENTRY_POINT ELF_PTR_TO_FDESC (_start)->ip

>

Patch

diff --git a/sysdeps/hppa/entry.h b/sysdeps/hppa/entry.h
new file mode 100644
index 0000000000..f88bb5689d
--- /dev/null
+++ b/sysdeps/hppa/entry.h
@@ -0,0 +1,8 @@ 
+extern void _start (void);
+
+/* Lives in libgcc.so and canonicalizes function pointers for comparison.  */
+extern unsigned int __canonicalize_funcptr_for_compare (unsigned int fptr);
+
+/* The function's entry point is stored in the first word of the
+   function descriptor (plabel) of _start().  */
+#define ENTRY_POINT __canonicalize_funcptr_for_compare((unsigned int)_start)
diff --git a/sysdeps/ia64/entry.h b/sysdeps/ia64/entry.h
new file mode 100644
index 0000000000..9ae8b8615c
--- /dev/null
+++ b/sysdeps/ia64/entry.h
@@ -0,0 +1,8 @@ 
+#include <link.h>
+#include <dl-fptr.h>
+
+extern void _start (void);
+
+/* The function's entry point is stored in the first word of the
+   function descriptor (plabel) of _start().  */
+#define ENTRY_POINT ELF_PTR_TO_FDESC (_start)->ip