about summary refs log tree commit diff
path: root/sysdeps/nacl
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2015-08-25 13:37:07 -0700
committerRoland McGrath <roland@hack.frob.com>2015-08-25 13:37:07 -0700
commitf97194930886838796546646e26a49bb5899075b (patch)
tree795c9e0482b2c49c229748327b21bf71fd01b0a0 /sysdeps/nacl
parentd8725b1fba769a89ce2c902a2091d01faa946b66 (diff)
downloadglibc-f97194930886838796546646e26a49bb5899075b.tar.gz
glibc-f97194930886838796546646e26a49bb5899075b.tar.xz
glibc-f97194930886838796546646e26a49bb5899075b.zip
NaCl: Call __nacl_main in preference to main.
Diffstat (limited to 'sysdeps/nacl')
-rw-r--r--sysdeps/nacl/start.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sysdeps/nacl/start.c b/sysdeps/nacl/start.c
index a4b6dd33d4..8e8bc1a05e 100644
--- a/sysdeps/nacl/start.c
+++ b/sysdeps/nacl/start.c
@@ -44,6 +44,10 @@
 /* The application defines this, of course.  */
 extern int main (int argc, char **argv, char **envp);
 
+/* But maybe it defines this too, in which case it takes precedence.  */
+extern int __nacl_main (int argc, char **argv, char **envp)
+  __attribute__ ((weak));
+
 /* These are defined in libc.  */
 extern int __libc_csu_init (int argc, char **argv, char **envp);
 extern void __libc_csu_fini (void);
@@ -59,7 +63,7 @@ _start (uint32_t info[])
 {
   /* The generic code actually assumes that envp follows argv.  */
 
-  __libc_start_main (&main,
+  __libc_start_main (&__nacl_main ?: &main,
 		     nacl_startup_argc (info),
 		     nacl_startup_argv (info),
 		     nacl_startup_auxv (info),