m***@megous.com
2018-11-21 14:51:50 UTC
From: Ondrej Jirman <***@megous.com>
__libc_start_main function is not using the last three arguments.
GCC in LTO mode complains about mismatch.
---
crt/crt1.c | 6 +++---
crt/rcrt1.c | 7 ++++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/crt/crt1.c b/crt/crt1.c
index 7b12665f..81ecf118 100644
--- a/crt/crt1.c
+++ b/crt/crt1.c
@@ -8,12 +8,12 @@
int main();
weak void _init();
weak void _fini();
-_Noreturn int __libc_start_main(int (*)(), int, char **,
- void (*)(), void(*)(), void(*)());
+_Noreturn
+int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv);
void _start_c(long *p)
{
int argc = p[0];
char **argv = (void *)(p+1);
- __libc_start_main(main, argc, argv, _init, _fini, 0);
+ __libc_start_main(main, argc, argv);
}
diff --git a/crt/rcrt1.c b/crt/rcrt1.c
index 7bb3322f..52928b3e 100644
--- a/crt/rcrt1.c
+++ b/crt/rcrt1.c
@@ -5,10 +5,11 @@
int main();
weak void _init();
weak void _fini();
-_Noreturn int __libc_start_main(int (*)(), int, char **,
- void (*)(), void(*)(), void(*)());
+
+_Noreturn
+int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv);
hidden _Noreturn void __dls2(unsigned char *base, size_t *sp)
{
- __libc_start_main(main, *sp, (void *)(sp+1), _init, _fini, 0);
+ __libc_start_main(main, *sp, (void *)(sp+1));
}
__libc_start_main function is not using the last three arguments.
GCC in LTO mode complains about mismatch.
---
crt/crt1.c | 6 +++---
crt/rcrt1.c | 7 ++++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/crt/crt1.c b/crt/crt1.c
index 7b12665f..81ecf118 100644
--- a/crt/crt1.c
+++ b/crt/crt1.c
@@ -8,12 +8,12 @@
int main();
weak void _init();
weak void _fini();
-_Noreturn int __libc_start_main(int (*)(), int, char **,
- void (*)(), void(*)(), void(*)());
+_Noreturn
+int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv);
void _start_c(long *p)
{
int argc = p[0];
char **argv = (void *)(p+1);
- __libc_start_main(main, argc, argv, _init, _fini, 0);
+ __libc_start_main(main, argc, argv);
}
diff --git a/crt/rcrt1.c b/crt/rcrt1.c
index 7bb3322f..52928b3e 100644
--- a/crt/rcrt1.c
+++ b/crt/rcrt1.c
@@ -5,10 +5,11 @@
int main();
weak void _init();
weak void _fini();
-_Noreturn int __libc_start_main(int (*)(), int, char **,
- void (*)(), void(*)(), void(*)());
+
+_Noreturn
+int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv);
hidden _Noreturn void __dls2(unsigned char *base, size_t *sp)
{
- __libc_start_main(main, *sp, (void *)(sp+1), _init, _fini, 0);
+ __libc_start_main(main, *sp, (void *)(sp+1));
}
--
2.19.1
2.19.1