At 5:14 PM -0600 2/15/05, John E. Malmberg wrote:
On Tue, 15 Feb 2005, Craig Berry wrote:
The global PL_osname is set in S_init_predump_symbols in perl.c, which is called from S_parse_body when a Perl script is compiled. If you put in your own value in start-up code, I'm pretty sure it will get overwritten later. You could stick some code in S_init_predump_symbols to check for a logical name and reset accordingly. That might be a little dangerous since we don't really know what side effects there might be to dynamically changing the OS name.
Apparently the OS name is dynamically set now by a perl script, config.p*, and I can not find a pre-compiled version of it. So what I think I might try is modifying that script to change the OS type and see what happens.
That's not dynamic in the sense of being set at run time. Config is hard-wired to return the same value that's in config.h:
$ perl -"V:osname" osname='VMS';
config.h has the C macro OSNAME, which is in turn used by S_init_predump_symbols as I mentioned above. Config the Perl module and config.h the C header both get their values from config.sh, which is generated at configuration time by configure.com.
I did a search of the source code before I posted, while the osname macro is defined in config.h, I can not find anything in the perl .C files that reference any of the osname macros in any of the .H files, or any macros that would hide such references.
I will have to look at the S_init_predump_symbols to see if that gives me any more clues.
Thanks, -John Personal Opinion Only