Author: wmb Date: Wed Aug 11 10:51:38 2010 New Revision: 1935 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1935
Log: ARM - more cross-compile tweaks.
Modified: cpu/arm/Linux/armforth.static cpu/x86/Linux/armforth forth/wrapper/wrapper.c
Modified: cpu/arm/Linux/armforth.static ============================================================================== Binary file (source and/or target). No diff available.
Modified: cpu/x86/Linux/armforth ============================================================================== --- cpu/x86/Linux/armforth Wed Aug 11 10:50:37 2010 (r1934) +++ cpu/x86/Linux/armforth Wed Aug 11 10:51:38 2010 (r1935) @@ -1,2 +1,11 @@ #!/bin/sh -qemu-arm ${BP}/cpu/arm/Linux/armforth.static $* + +# The "-0 $0" below causes the wrapper to skip arguments +# before the -0, so the program name appears to be the +# name of this script ($0). That makes the logger put the +# this script name in the "command: " line, instead of +# putting cpu/arm/Linux/armforth.static, which is not +# directly executable in the cross environment, there. +# That makes fast-rebuilds from the .log file work right. + +qemu-arm ${BP}/cpu/arm/Linux/armforth.static -0 $0 $*
Modified: forth/wrapper/wrapper.c ============================================================================== --- forth/wrapper/wrapper.c Wed Aug 11 10:50:37 2010 (r1934) +++ forth/wrapper/wrapper.c Wed Aug 11 10:51:38 2010 (r1935) @@ -815,6 +815,20 @@ argc = ccommand(&argv); #endif
+ /* + * This is a special accomodation for running the wrapper under an emulator + * like QEMU. You can make a shell script containing a line like: + * qemu-arm wrapper_name -0 script_name ... + * The logger will then log the name of script instead of the actual wrapper. + * An alternate would be to use Linux's binfmt_misc facility to bind the + * emulator to the wrapper binary, but the problem with that is that it + * requires root to register the binding every time you start the computer. + */ + if (argc > 1 && (0 == strcmp(argv[1], "-0"))) { + argv += 2; + argc -= 2; + } + progname = argv[0];
log_command_line(progname, dictfile, f, argc, argv);