1#!/bin/bash -x
2
3cd examples/omnetpp/cpu2006-redhat-ia32
4
5# Contains the optimization flags.
6flags=''
7
8# The index of the parameter.
9i=1
10
11# Indicate whether it is parsing the gcc param.
12in_gcc_param=false
13
14for parameter in "$@"
15  do
16    #  The last parameter is the file name.
17    if [ "$i" == "$#" ]; then
18      file=$parameter
19      break
20    fi
21
22    # The param is not a flag, it combines with the flag that comes right after.
23    # For example, --param max-inline-insns-single
24    if [ "$parameter" == "-param" ]; then
25      in_gcc_param=true
26      flags+=-$parameter' '
27      let i++
28      continue
29    fi
30
31    # In in_gcc_param section, this flag follows the key word '--param'.
32    if [ $in_gcc_param == true ]; then
33      flags+=$parameter' '
34      let i++
35      in_gcc_param=false
36      continue
37    fi
38
39    # Normal flags.
40    flags+=-$parameter' '
41    let i++
42  done
43
44# Change the configuration file.
45content=$(sed s/amd64-m64-gcc41-kk/test$file/ config/linux64-amd64-pgi.cfg)
46echo "$content" | sed s/-O2/-O1\ "$flags"/ >config/linux64-amd64-pgi$file.cfg
47. ./shrc
48/usr/bin/time -o temp$file runspec --config linux64-amd64-pgi$file -D --action=build  471.omnetpp
49
50state=$?
51
52outfile="./benchspec/CPU2006/471.omnetpp/run/build_base_test$file.0000/omnetpp"
53
54if [ $state -eq 0 ];then
55  user_time=$(cat build_timer$file | grep "user" | cut -d "u" -f 1)
56  output_file="$file"
57
58  checksum=$(readelf -x .text $outfile | md5sum | cut -d " " -f 1)
59  file_size=$(ls -l $outfile | cut -d " " -f 5)
60  text_section=$(readelf -SW $outfile | grep ".text")
61  size_hex=$(echo $text_section | sed "s/\s\{1,\}/\ /g" | cut -d ' ' -f 6)
62  size=$(echo $size_hex | ( echo "ibase=16" ; tr '[:lower:]' '[:upper:]') | bc)
63
64  echo $checksum $user_time $output_file $file_size $size
65else
66  echo "error" "error" "error" "error" "error"
67fi
68
69return $state