Release note: sf bug 107: invalid XML output when a zip file is missing
# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).# All rights reserved.# This component and the accompanying materials are made available# under the terms of "Eclipse Public License v1.0"# which accompanies this distribution, and is available# at the URL "http://www.eclipse.org/legal/epl-v10.html".## Initial Contributors:# Nokia Corporation - initial contribution.## Contributors:## Description:# Small Perl script for converting GCC inline X86 assembly instructions # into a format acceptable to the MSVC compiler.# # # Read the input .cia file open (INPUT_FILE,"$ARGV[0]") or die "Couldn't open input file $!"; my @lines = <INPUT_FILE>; close INPUT_FILE; # Open the output file (somewhere under \epoc32\build) open (OUTPUT_FILE,">$ARGV[1]") or die "Couldn't open output file $!"; # Iterate each line of the input .cia foreach my $line (@lines) { # Filter GCC inline assembly lines $line=~s/\/\*(.*?)\*\///g; my $output_line=$line; if ($line=~m/^\s*asm\("(.*?)"(.*)\)(.*)/) { # The above regexp seperates the asm declaration into the instruction part, and # optionally a C expression as an operand my $instr=$1; my $c_arg=$2; my $eol=$3; # If a C operand is used, strip the weird GCC-specific syntax from it and paste # it into the '%0' or '%a0' operand in the assembly instruction if ($c_arg =~m/^\s*:\s*:\s*"i"\s*(.*)/) { $c_arg = $1; $output_line=$instr; # Use of _FOFF has to be converted to MSVC syntax if ($c_arg =~m/^_FOFF\((.*)\s*,\s*(.*)\)/) { my $classname=$1; my $member=$2; $output_line=~s/\+%0]/]$classname.$member/; $output_line=~s/\%0/$classname.$member/; } else { $c_arg=~s/&//; # strip the '&' used for address-of global code/data $output_line=~s/%0/$c_arg/; $output_line=~s/%a0/$c_arg/; } } else { $output_line="$instr$c_arg"; } # Prefix the MSVC __asm keyword $output_line = "__asm $output_line $eol\n"; } print OUTPUT_FILE "$output_line"; } close OUTPUT_FILE;