From b1c5d8c6dc8b08e6963897eadf70d8bcbfa8fa7b Mon Sep 17 00:00:00 2001 From: simonmar Date: Wed, 29 Jan 2003 09:54:33 +0000 Subject: [PATCH] [project @ 2003-01-29 09:54:31 by simonmar] - re-instate setProgArgv, it is used in System.Environment (bah, could have sworn I grepped for it and found nothing...) - Remove init_stack symbol from the Linker's symbol table; this is now static. --- ghc/includes/RtsAPI.h | 3 ++- ghc/rts/Linker.c | 4 ++-- ghc/rts/RtsStartup.c | 18 +++++++++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ghc/includes/RtsAPI.h b/ghc/includes/RtsAPI.h index c677390..a6726b4 100644 --- a/ghc/includes/RtsAPI.h +++ b/ghc/includes/RtsAPI.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.h,v 1.32 2003/01/28 16:30:07 simonmar Exp $ + * $Id: RtsAPI.h,v 1.33 2003/01/29 09:54:31 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -36,6 +36,7 @@ extern void startupHaskell ( int argc, char *argv[], extern void shutdownHaskell ( void ); extern void shutdownHaskellAndExit ( int exitCode ); extern void getProgArgv ( int *argc, char **argv[] ); +extern void setProgArgv ( int argc, char *argv[] ); /* ---------------------------------------------------------------------------- diff --git a/ghc/rts/Linker.c b/ghc/rts/Linker.c index e63ac40..47c04e9 100644 --- a/ghc/rts/Linker.c +++ b/ghc/rts/Linker.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Linker.c,v 1.111 2003/01/28 17:05:32 simonmar Exp $ + * $Id: Linker.c,v 1.112 2003/01/29 09:54:32 simonmar Exp $ * * (c) The GHC Team, 2000, 2001 * @@ -295,7 +295,6 @@ typedef struct _RtsSymbolVal { Maybe_ForeignObj \ Maybe_Stable_Names \ Sym(StgReturn) \ - Sym(init_stack) \ SymX(stg_enter_info) \ SymX(stg_enter_ret) \ SymX(stg_gc_void_info) \ @@ -444,6 +443,7 @@ typedef struct _RtsSymbolVal { SymX(rts_mkWord64) \ SymX(rts_mkWord8) \ SymX(run_queue_hd) \ + SymX(setProgArgv) \ SymX(startupHaskell) \ SymX(shutdownHaskell) \ SymX(shutdownHaskellAndExit) \ diff --git a/ghc/rts/RtsStartup.c b/ghc/rts/RtsStartup.c index def63a5..6826f5c 100644 --- a/ghc/rts/RtsStartup.c +++ b/ghc/rts/RtsStartup.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: RtsStartup.c,v 1.68 2003/01/28 16:30:06 simonmar Exp $ + * $Id: RtsStartup.c,v 1.69 2003/01/29 09:54:33 simonmar Exp $ * * (c) The GHC Team, 1998-2002 * @@ -177,9 +177,9 @@ startupHaskell(int argc, char *argv[], void (*init_root)(void)) /* ----------------------------------------------------------------------------- - Getting the program's arguments. + Getting/Setting the program's arguments. - This is used by System.Environment.getArgs. + These are used by System.Environment. -------------------------------------------------------------------------- */ void @@ -189,6 +189,18 @@ getProgArgv(int *argc, char **argv[]) *argv = prog_argv; } +void +setProgArgv(int argc, char *argv[]) +{ + /* Usually this is done by startupHaskell, so we don't need to call this. + However, sometimes Hugs wants to change the arguments which Haskell + getArgs >>= ... will be fed. So you can do that by calling here + _after_ calling startupHaskell. + */ + prog_argc = argc; + prog_argv = argv; +} + /* ----------------------------------------------------------------------------- Per-module initialisation -- 1.7.10.4