diff --git a/.gitignore b/.gitignore index b851a23f1d..a19560973b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ cscope.out .*.swp .*.swo m5out -/src/doxygen +/src/doxygen/html /ext/dramsim2/DRAMSim2 /ext/mcpat/regression/*/*.out /util/m5/*.o diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 6f80906b21..1ea05f4045 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,11 +1,95 @@ # Version 20.0.0.0 -* Compiling and running gem5 with Python 3 is now fully supported. -* Compiling and running gem5 with GCC 8 and 9 is now supported. -* Scons-based tests have been migrated to the testlib framework. Please consult TESTING.md for more information on how these may be run. -* Support for the ALPHA ISA has been dropped. +Welcome to our first "official" gem5 release! +gem5 v19.0.0.0 was a "test" release, but this one has release notes, so it must be official! + +Thank you to everyone that made this release possible! +This has been a very productive release with over [70 issues closed](https://gem5.atlassian.net/), over 500 commits, and 31 unique contributors. +Below are some of the highlights, though I'm sure I've missed some important changes. + +## New features + +* [gem5-resources repository](https://gem5.googlesource.com/public/gem5-resources/) + * This new repository will store all of the *sources* (e.g., code) used to create testing and research resources. This includes disk images, testing binaries, kernel binaries, etc. + * Binaries created with the sources are hosted on dist.gem5.org. + * Details on the new page for resources: . * Memory SimObjects can now be initialized using an image file using the image_file parameter. -* The m5 utility has been revamped with a new build system based on scons, tests, and updated and more consistent feature support. +* **[USER-FACING CHANGE]** The m5 utility has been revamped with a new build system based on scons, tests, and updated and more consistent feature support. + * To build, now use `scons build//out/m5`, not `make`. + * [Documentation](http://www.gem5.org/documentation/general_docs/m5ops/) coming soon. * Robust support for marshalling data from a function call inside the simulation to a function within gem5 using a predefined set of rules. -* Workload configuration pulled out into its own object, simplifying the System object and making workload configuration more modular and flexible. + * Developers can specify an ABI for guest<->simulator calls and then "just call functions". + * Unifies pseudo-inst, syscall, and other support. + * Code within gem5 has been updated. However, users which added new pseudo-ops may have to update their code. +* **[PYTHON API CHANGE]** Workload configuration pulled out into its own object, simplifying the System object and making workload configuration more modular and flexible. + * All full system config/run scripts must be updated (e.g., anything that used the `LinuxX86System` or similar SimObject). + * Many of the parameters of `System` are now parameters of the `Workload` (see `src/sim/Workload.py`). + * For instance, many parameters of `LinuxX86System` are now part of `X86FsLinux` which is now the `workload` parameter of the `System` SimObject. + * See https://gem5-review.googlesource.com/c/public/gem5/+/24283/ and https://gem5-review.googlesource.com/c/public/gem5/+/26466 for more details. * Sv39 paging has been added to the RISC-V ISA, bringing gem5 close to running Linux on RISC-V. + * (Some) Baremetal OSes are now supported. +* Improvements to DRAM model: + * Added support for verifying available command bandwidth. + * Added support for multi-cycle commands. + * Added new timing parameters. + * Added ability to interleave bursts. + * Added LPDDR5 configurations. +* **[Developer change]** We are beginning to document gem5 APIs. + * Currently, only SimObjects and the APIs they depend on have been documented. + * We are using doxygen to mark "stable APIs" and will use manual code review to make sure the APIs stay stable. + * More information will be coming during gem5-20.1 development. + +## Removed features + +* Support for the ALPHA ISA has been dropped. + * All ALPHA ISA code has been removed + * Old "rcS" scripts for ALPHA have been removed + +## New supported platforms + +* Compiling and running gem5 with Python 3 is now fully supported. + * Lots of code changes required for this. + * There may still be some python code that's not up to date. Please open a [Jira ticket](https://gem5.atlassian.net/) if you find any code that doesn't work with python3. +* gem5 now supports Ubuntu 20.04. +* Compiling gem5 with GCC 8 and 9 is now supported. +* Compiling with clang up to version 9 is now supported. + +## Testing improvements + +* Scons-based tests have been migrated to the testlib framework. + * Tests can now be run with `tests/main.py`, except for the unittests. + * Please consult TESTING.md for more information on how these may be run. +* We are continuing to work on CI tests. Most of the plumbing is there for Google Cloud Build integration. See [the Jira issue](https://gem5.atlassian.net/browse/GEM5-237) for details. + +## Other API changes + +* **[API CHANGE]** Ruby's prefetcher renamed to RubyPrefetcher. + * Any SLICC protocols with prefetchers need to be updated. + * Some config scripts for Ruby protocols with prefetchers may need to be updated. +* **[API CHANGE]** SE mode improvements. + * Better support for the mmap and related syscalls. + * A new virtual memory area API for tracking SE mode allocations. + * When implementing syscalls, the way that guest memory is allocated changes. All code in gem5 is updated, but if there are any external syscalls, they may need be updated. +* **[COMMAND LINE CHANGE]** The `--disk-image` argument to `fs.py` is now optional. + * However, the disk image names *are no longer implied*. + * The script still implicitly searches `M5_PATH`, but the name of the disk image must be specified. +* **[API CHANGE]** SLICC `queueMemory` is now `enqueue`. + * All protocol configs must be updated with another message buffer in the memory controllers (directories). + * All protocol SLICC files must replace `queueMemoryRead` and `queueMemoryWrite` with `enqueue` to another "special" message buffer named `memQueue`. + * This allows finite buffering between the cache controllers and DRAMCtrl. +* **[API CHANGE]** Added Prefetcher namespace + * All prefetchers' names have changed from `*Prefetcher` to `Prefetcher::*` + * If you have any prefetchers that are not in the gem5 mainline, your code will likely need to be updated. + +## Other changes + +* Implemented ARMv8.3-CompNum, SIMD complex number extension. +* Support for Arm Trusted Firmware + u-boot with the new VExpress_GEM5_Foundation platform +* Removed author list from source files. + * This was originally so future people would know who to contact. + * However, it was difficult to maintain and quickly out of date. + * Copyright is unchanged. +* Improvements to gem5's power model. +* MESI_Three_Level Ruby protocol bugfixes. +* Ruby functional reads now work in more cases. +* Indirect branch stats work correctly now. diff --git a/SConstruct b/SConstruct index ba4affaf7a..370cd60241 100755 --- a/SConstruct +++ b/SConstruct @@ -97,7 +97,7 @@ import SCons import SCons.Node import SCons.Node.FS -from m5.util import compareVersions, readCommand +from m5.util import compareVersions, readCommand, readCommandWithReturn help_texts = { "options" : "", @@ -277,7 +277,7 @@ global_vars.AddVariables( ('CCFLAGS_EXTRA', 'Extra C and C++ compiler flags', ''), ('LDFLAGS_EXTRA', 'Extra linker flags', ''), ('PYTHON_CONFIG', 'Python config binary to use', - [ 'python2.7-config', 'python-config' ]), + [ 'python2.7-config', 'python-config', 'python3-config' ]), ('PROTOC', 'protoc tool', environ.get('PROTOC', 'protoc')), ('BATCH', 'Use batch pool for build and tests', False), ('BATCH_CMD', 'Batch pool submission command name', 'qdo'), @@ -404,22 +404,27 @@ if main['GCC']: main['GCC_VERSION'] = gcc_version - if compareVersions(gcc_version, '4.9') >= 0 and \ - compareVersions(gcc_version, '8.1') < 0: + if compareVersions(gcc_version, '4.9') >= 0: # Incremental linking with LTO is currently broken in gcc versions - # 4.9 to 8.1. + # 4.9 and above. A version where everything works completely hasn't + # yet been identified. # # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67548 - # + main['BROKEN_INCREMENTAL_LTO'] = True + if compareVersions(gcc_version, '6.0') >= 0: # gcc versions 6.0 and greater accept an -flinker-output flag which # selects what type of output the linker should generate. This is # necessary for incremental lto to work, but is also broken in - # versions of gcc up to 8.1. + # current versions of gcc. It may not be necessary in future + # versions. We add it here since it might be, and as a reminder that + # it exists. It's excluded if lto is being forced. # # https://gcc.gnu.org/gcc-6/changes.html # https://gcc.gnu.org/ml/gcc-patches/2015-11/msg03161.html # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866 - main['BROKEN_INCREMENTAL_LTO'] = True + if not GetOption('force_lto'): + main.Append(PSHLINKFLAGS='-flinker-output=rel') + main.Append(PLINKFLAGS='-flinker-output=rel') disable_lto = GetOption('no_lto') if not disable_lto and main.get('BROKEN_INCREMENTAL_LTO', False) and \ @@ -471,6 +476,11 @@ elif main['CLANG']: # interchangeably. '-Wno-mismatched-tags', ]) + if compareVersions(clang_version, "10.0") >= 0: + main.Append(CCFLAGS=['-Wno-c99-designator']) + + if compareVersions(clang_version, "8.0") >= 0: + main.Append(CCFLAGS=['-Wno-defaulted-function-deleted']) main.Append(TCMALLOC_CCFLAGS=['-fno-builtin']) @@ -683,8 +693,21 @@ if main['USE_PYTHON']: # Read the linker flags and split them into libraries and other link # flags. The libraries are added later through the call the CheckLib. - py_ld_flags = readCommand([python_config, '--ldflags'], - exception='').split() + # Note: starting in Python 3.8 the --embed flag is required to get the + # -lpython3.8 linker flag + retcode, cmd_stdout = readCommandWithReturn( + [python_config, '--ldflags', '--embed'], exception='') + if retcode != 0: + # If --embed isn't detected then we're running python <3.8 + retcode, cmd_stdout = readCommandWithReturn( + [python_config, '--ldflags'], exception='') + + # Checking retcode again + if retcode != 0: + error("Failing on python-config --ldflags command") + + py_ld_flags = cmd_stdout.split() + py_libs = [] for lib in py_ld_flags: if not lib.startswith('-l'): diff --git a/build_opts/ARM_MESI_Three_Level b/build_opts/ARM_MESI_Three_Level index 1836fb095b..29a429ce68 100644 --- a/build_opts/ARM_MESI_Three_Level +++ b/build_opts/ARM_MESI_Three_Level @@ -2,5 +2,5 @@ # All rights reserved. TARGET_ISA = 'arm' -CPU_MODELS = 'TimingSimpleCPU, O3CPU' +CPU_MODELS = 'TimingSimpleCPU,O3CPU' PROTOCOL = 'MESI_Three_Level' diff --git a/build_opts/ARM_MOESI_hammer b/build_opts/ARM_MOESI_hammer index 2eddc5b05d..2ba8ce835b 100644 --- a/build_opts/ARM_MOESI_hammer +++ b/build_opts/ARM_MOESI_hammer @@ -2,5 +2,5 @@ # All rights reserved. TARGET_ISA = 'arm' -CPU_MODELS = 'TimingSimpleCPU, O3CPU' +CPU_MODELS = 'TimingSimpleCPU,O3CPU' PROTOCOL = 'MOESI_hammer' diff --git a/build_opts/GCN3_X86 b/build_opts/GCN3_X86 deleted file mode 100644 index 21e3cf0e45..0000000000 --- a/build_opts/GCN3_X86 +++ /dev/null @@ -1,5 +0,0 @@ -PROTOCOL = 'GPU_VIPER' -TARGET_ISA = 'x86' -TARGET_GPU_ISA = 'gcn3' -BUILD_GPU = True -CPU_MODELS = 'AtomicSimpleCPU,O3CPU,TimingSimpleCPU' diff --git a/build_opts/Garnet_standalone b/build_opts/Garnet_standalone index df97b5b313..f749d54ca2 100644 --- a/build_opts/Garnet_standalone +++ b/build_opts/Garnet_standalone @@ -1,3 +1,3 @@ -TARGET_ISA = 'alpha' -CPU_MODELS = 'AtomicSimpleCPU,TimingSimpleCPU,O3CPU,MinorCPU' +TARGET_ISA = 'null' +CPU_MODELS = '' PROTOCOL = 'Garnet_standalone' diff --git a/configs/boot/ammp.rcS b/configs/boot/ammp.rcS deleted file mode 100644 index 485244c3c7..0000000000 --- a/configs/boot/ammp.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/ammp00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -./ammp < input/mdred.in -/sbin/m5 exit diff --git a/configs/boot/ammp.symbol b/configs/boot/ammp.symbol deleted file mode 100644 index 93ef405556..0000000000 --- a/configs/boot/ammp.symbol +++ /dev/null @@ -1,257 +0,0 @@ -000000012001da40 T AMMPmonitor -000000012001dfc0 T AMMPmonitor_mute -0000000120034338 D _DYNAMIC -00000001200346c8 D _GLOBAL_OFFSET_TABLE_ -0000000120034d60 G _IO_stdin_used -0000000120034500 T _PROCEDURE_LINKAGE_TABLE_ -00000001200344e0 d __CTOR_END__ -00000001200344d8 d __CTOR_LIST__ -00000001200344f0 d __DTOR_END__ -00000001200344e8 d __DTOR_LIST__ -0000000120034334 r __FRAME_END__ -00000001200344f8 d __JCR_END__ -00000001200344f8 d __JCR_LIST__ -0000000120034da0 A __bss_start -00000001200328c8 D __data_start -0000000120020c40 t __do_global_ctors_aux -0000000120001090 t __do_global_dtors_aux -0000000120034d68 G __dso_handle -00000001200328c8 A __fini_array_end -00000001200328c8 A __fini_array_start -00000001200328c8 A __init_array_end -00000001200328c8 A __init_array_start -0000000120020ba0 T __libc_csu_fini -0000000120020af0 T __libc_csu_init -0000000120001050 W __start -0000000120034da0 A _edata -0000000120035418 A _end -0000000120020ca0 T _fini -0000000120000fe8 T _init -0000000120001050 T _start -000000012000d220 T a_angle -000000012000b3d0 T a_bond -000000012000e1b0 T a_c_angle -0000000120009cd0 T a_d_zero -0000000120009c90 T a_f_zero -0000000120009f70 T a_ftodx -000000012000a000 T a_ftogx -000000012000a090 T a_ftovx -0000000120009d20 T a_g_zero -0000000120010950 T a_hybrid -000000012000a7c0 T a_inactive_f_zero -0000000120009e50 T a_inc_d -0000000120009dc0 T a_inc_f -0000000120009ee0 T a_inc_v -000000012000a370 T a_l2_d -000000012000a220 T a_l2_f -000000012000a290 T a_l2_g -000000012000a300 T a_l2_v -0000000120008bf0 T a_m_serial -000000012000a1a0 T a_max_d -000000012000a120 T a_max_f -000000012000d570 T a_mmangle -000000012000b620 T a_mmbond -0000000120009c30 T a_next -0000000120005350 T a_noel -0000000120004700 T a_nonbon -0000000120009bc0 T a_number -00000001200096b0 T a_pr_beta -000000012000a660 T a_readvelocity -0000000120020750 T a_restrain -000000012001eda0 T a_tether -000000012001a2e0 T a_torsion -0000000120009d70 T a_v_zero -0000000120003c90 T aaerror -0000000120009a60 T activate -000000012001fef0 T alltether -0000000120004370 T analyze -000000012000c0d0 T angle -0000000120034df8 S angle_first -0000000120034e00 S angle_last -0000000120034dd0 s ap.2 -0000000120034de0 s ap.4 -0000000120008970 T atom -0000000120034dc8 s atomNUMBER -0000000120034dcc s atomUPDATE -000000012000a8b0 T bond -0000000120034de8 S bond_first -0000000120034df0 S bond_last -000000012000bf20 T bond_length -000000012001f240 T bstrot -0000000120034ea0 b buff.0 -000000012001ad40 T cngdel -0000000120034da0 s completed.1 -00000001200200c0 T cpyvec -00000001200328c8 W data_start -0000000120034d98 g dielecold.0 -000000012000efe0 T dump_angles -0000000120008d00 T dump_atoms -000000012000be40 T dump_bonds -000000012000a3e0 T dump_excludes -000000012000a6c0 T dump_force -0000000120011a50 T dump_hybrids -0000000120005c20 T dump_noels -0000000120008f40 T dump_pdb -0000000120020a10 T dump_restrains -000000012001ffe0 T dump_tethers -0000000120017b30 T dump_tgroup -000000012001a170 T dump_torsions -000000012001b7a0 T dump_variable -000000012000a590 T dump_velocity -0000000120034d7c g echo.0 -0000000120001760 T eval -000000012000c580 T f_angle -000000012000ac60 T f_bond -0000000120001230 T f_box -000000012000dc50 T f_c_angle -000000012000ea10 T f_ho_angle -000000012000bab0 T f_ho_bond -0000000120011020 T f_ho_hybrid -0000000120005840 T f_ho_noel -000000012001fca0 T f_ho_tether -00000001200102b0 T f_hybrid -000000012000cd10 T f_mmangle -000000012000b0e0 T f_mmbond -0000000120005060 T f_noel -00000001200155d0 T f_nonbon -0000000120020500 T f_restrain -000000012001ebd0 T f_tether -0000000120019850 T f_torsion -000000012000fbd0 T f_trace -0000000120034db8 S first -0000000120035058 B forces -0000000120001130 t frame_dummy -0000000120014b20 T fv_update_nonbon -0000000120034e58 s fx.0 -0000000120034e60 s fy.1 -0000000120034e68 s fz.2 -000000012000ef40 T get_angle -000000012000bda0 T get_bond -000000012000c050 T get_bond_pointer -000000012001b6e0 T get_f_variable -00000001200119b0 T get_hybrid -000000012001b740 T get_i_variable -0000000120005b80 T get_noel -0000000120020970 T get_restrain -000000012001a9f0 T get_torsion -00000001200184a0 T get_torsion_value -000000012001ca50 T getatomdata -000000012000f130 T gsdg -000000012000e5a0 T gsdg_angle -000000012000bfc0 T gsdg_bond -000000012000f810 T gsdg_dgeom -0000000120011790 T gsdg_hybrid -000000012000f6c0 T gsdg_line_search -0000000120005d30 T gsdg_noel -000000012001a850 T gsdg_torsion -0000000120034d84 g highest.0 -0000000120007490 T hpac -000000012000fe30 T hybrid -0000000120034e08 S hybrid_first -0000000120034e10 S hybrid_last -0000000120034e70 S in_mom_list -0000000120009920 T inactivate -00000001200097a0 T inactivate_non_zero -0000000120034d80 g inloop.1 -0000000120034e74 s ip.1 -0000000120034e78 s jp.2 -0000000120034e7c s kp.3 -0000000120034dc0 S last -0000000120034dd8 s lastmatched.3 -000000012001b0d0 T linmin -0000000120003f80 T loadloop -0000000120034e28 s local.3 -0000000120034d88 g lowest.1 -0000000120034e20 s lsize.2 -0000000120001180 T main -0000000120017c10 T match_tgroup -000000012001b450 T match_variable -000000012001b860 T math -000000012001cd40 T math_findlabel -000000012001ccb0 T math_match_atom -0000000120020100 T matmul -0000000120012b90 T mm_fv_update_nonbon -000000012001cef0 T mom -000000012001d3f0 T mom_add -000000012001d900 T mom_jab -00000001200350f8 B mom_list -000000012001d890 T mom_param -000000012001d600 T mom_solve -0000000120004c70 T noel -0000000120034da8 S noel_first -0000000120034db0 S noel_last -0000000120034d78 G nused -0000000120034e18 s oldatomnumber.0 -0000000120034d90 g oldcutoff.4 -0000000120034d70 g p.0 -0000000120006430 T pac -0000000120006dd0 T pacpac -00000001200350a8 B potentials -0000000120007ac0 T ppac -0000000120008180 T ptpac -000000012001e840 T rand3 -000000012001e480 T randf -000000012001e760 T randg -0000000120001550 T read_eval_do -00000001200201c0 T restrain -0000000120034e90 S restrain_first -0000000120034e98 S restrain_last -000000012001b4e0 T set_f_variable -000000012001b5e0 T set_i_variable -0000000120018730 T set_torsion -000000012001e2a0 T significance -0000000120034e1c s since.1 -000000012001aa90 T steep -0000000120018f50 T tailor_exclude -0000000120018d30 T tailor_include -0000000120019110 T tailor_qab -000000012001e940 T tether -0000000120034e80 S tether_first -0000000120034e88 S tether_last -00000001200171f0 T tg_apply -0000000120017490 T tg_d_apply -0000000120016fd0 T tg_do_search -0000000120034e30 S tg_first -0000000120017a20 T tg_gen_con -0000000120016b90 T tg_init -0000000120017700 T tg_nonbon -0000000120016220 T tgroup -0000000120004220 T tisint -0000000120003cd0 T tisvariable -00000001200189e0 T tmap -0000000120017ec0 T tmin -0000000120019190 T torsion -0000000120034e38 S torsion_first -0000000120034e40 S torsion_last -0000000120006840 T tpac -0000000120016800 T tsearch -0000000120017c80 T tset -0000000120018200 T tset_bond_build -0000000120012100 T u_f_nonbon -0000000120011b60 T u_v_nonbon -0000000120012770 T uselist -000000012000c310 T v_angle -000000012000aac0 T v_bond -0000000120001540 T v_box -000000012000d930 T v_c_angle -000000012000e750 T v_ho_angle -000000012000b8a0 T v_ho_bond -0000000120010ce0 T v_ho_hybrid -00000001200055e0 T v_ho_noel -000000012001faf0 T v_ho_tether -000000012000fff0 T v_hybrid -0000000120005dc0 T v_maxwell -000000012000ca20 T v_mmangle -000000012000aef0 T v_mmbond -0000000120004e60 T v_noel -0000000120015a80 T v_nonbon -0000000120005fd0 T v_rescale -0000000120020360 T v_restrain -000000012001eab0 T v_tether -00000001200193e0 T v_torsion -000000012000f990 T v_trace -000000012001c6f0 T validatom -0000000120034e48 S variableFIRST -0000000120034e50 S variableLAST -00000001200061a0 T verlet -0000000120015ec0 T zone_nonbon diff --git a/configs/boot/art.rcS b/configs/boot/art.rcS deleted file mode 100644 index caca5889e3..0000000000 --- a/configs/boot/art.rcS +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -#/benchmarks/spec/art00/art -scanfile c756hel.in -trainfile1 a10.img -stride 2 -startx 134 -starty 220 -endx 184 -endy 240 -objects 3 -cd /benchmarks/spec/art00/ -/sbin/m5 resetstats -/benchmarks/spec/art00/art -scanfile c756hel.in -trainfile1 a10.img -stride 5 -startx 134 -starty 220 -endx 184 -endy 240 -objects 1 -/sbin/m5 exit diff --git a/configs/boot/bn-app.rcS b/configs/boot/bn-app.rcS deleted file mode 100644 index 6fe2800f44..0000000000 --- a/configs/boot/bn-app.rcS +++ /dev/null @@ -1,3 +0,0 @@ -cd /benchmarks/bn -./bottleneck-app -m5 exit diff --git a/configs/boot/bonnie.rcS b/configs/boot/bonnie.rcS deleted file mode 100644 index 65b2fd6c9a..0000000000 --- a/configs/boot/bonnie.rcS +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "Mounting empty disk..." -mkdir /tmp-space -/bin/mount /dev/hdb1 /tmp-space -chmod a+rwx /tmp-space -echo "done." - -/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /tmp-space -m5 exit diff --git a/configs/boot/bonnie.symbol b/configs/boot/bonnie.symbol deleted file mode 100644 index 041753eb2c..0000000000 --- a/configs/boot/bonnie.symbol +++ /dev/null @@ -1,309 +0,0 @@ -0000000120025cb0 V DW.ref._ZTISt9bad_alloc -0000000120025c98 V DW.ref.__gxx_personality_v0 -0000000120025018 D _DYNAMIC -00000001200255a0 D _GLOBAL_OFFSET_TABLE_ -0000000120025c80 G _IO_stdin_used -00000001200251e0 T _PROCEDURE_LINKAGE_TABLE_ -000000012000e8a0 T _Unwind_Backtrace -000000012000e860 T _Unwind_DeleteException -000000012000c290 T _Unwind_FindEnclosingFunction -0000000120010df0 T _Unwind_Find_FDE -0000000120010850 t _Unwind_Find_registered_FDE -000000012000e470 T _Unwind_ForcedUnwind -000000012000e340 t _Unwind_ForcedUnwind_Phase2 -000000012000c260 T _Unwind_GetCFA -000000012000c2d0 T _Unwind_GetDataRelBase -000000012000e9d0 T _Unwind_GetGR -000000012000e9f0 T _Unwind_GetIP -000000012000c270 T _Unwind_GetLanguageSpecificData -000000012000c280 T _Unwind_GetRegionStart -000000012000c2e0 T _Unwind_GetTextRelBase -0000000120010ac0 t _Unwind_IteratePhdrCallback -000000012000e160 T _Unwind_RaiseException -000000012000e070 t _Unwind_RaiseException_Phase2 -000000012000e5c0 T _Unwind_Resume -000000012000e710 T _Unwind_Resume_or_Rethrow -000000012000e9e0 T _Unwind_SetGR -000000012000ea00 T _Unwind_SetIP -0000000120003cb0 T _Z10TestDirOpsiiiiR12CGlobalItems -0000000120003220 T _Z11TestFileOpsiR12CGlobalItems -0000000120009250 T _Z11bon_setugidPKcS0_b -00000001200096b4 t _Z12read_sleb128PKhPl -0000000120009678 t _Z12read_uleb128PKhPm -0000000120009a04 t _Z15get_ttype_entryP16lsda_header_infom -0000000120009a84 t _Z16get_adjusted_ptrPKSt9type_infoS1_PPv -000000012000ab40 t _Z16get_globals_dtorPv -000000012000ab9c t _Z16get_globals_initv -00000001200098a8 t _Z17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info -0000000120009b30 t _Z20check_exception_specP16lsda_header_infoPKSt9type_infoPvl -0000000120009be0 t _Z20empty_exception_specP16lsda_header_infol -00000001200095b4 t _Z21base_of_encoded_valuehP15_Unwind_Context -000000012000abe0 t _Z21get_globals_init_oncev -0000000120009548 t _Z21size_of_encoded_valueh -000000012000a3ec t _Z23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception -000000012000970c t _Z28read_encoded_value_with_basehmPKhPm -0000000120004200 T _Z5usagev -0000000120004510 T _Z6seekerP4ForkPvi -0000000120004240 T _Z8io_errorPKcb -000000012000a310 T _ZN10__cxxabiv111__terminateEPFvvE -000000012000a374 T _ZN10__cxxabiv112__unexpectedEPFvvE -000000012000b08c T _ZN10__cxxabiv117__class_type_infoD0Ev -000000012000b058 T _ZN10__cxxabiv117__class_type_infoD1Ev -000000012000b024 T _ZN10__cxxabiv117__class_type_infoD2Ev -0000000120025ca0 G _ZN10__cxxabiv119__terminate_handlerE -000000012000b148 T _ZN10__cxxabiv120__si_class_type_infoD0Ev -000000012000b114 T _ZN10__cxxabiv120__si_class_type_infoD1Ev -000000012000b0e0 T _ZN10__cxxabiv120__si_class_type_infoD2Ev -0000000120025ca8 G _ZN10__cxxabiv120__unexpected_handlerE -000000012000b204 T _ZN10__cxxabiv121__vmi_class_type_infoD0Ev -000000012000b1d0 T _ZN10__cxxabiv121__vmi_class_type_infoD1Ev -000000012000b19c T _ZN10__cxxabiv121__vmi_class_type_infoD2Ev -00000001200024b0 T _ZN12CGlobalItems18decrement_and_waitEi -0000000120002380 T _ZN12CGlobalItemsC1EPb -0000000120002250 T _ZN12CGlobalItemsC2EPb -0000000120008de0 T _ZN4Fork2goEPFvPS_PviES1_i -0000000120009080 T _ZN4Fork4ReadEPvii -0000000120009010 T _ZN4Fork4waitEv -0000000120009160 T _ZN4Fork5WriteEPvii -0000000120008d60 T _ZN4Fork7startitEP11THREAD_DATA -0000000120008d40 T _ZN4ForkC1Ev -0000000120008d20 T _ZN4ForkC2Ev -0000000120004cd0 T _ZN7CFileOp10read_blockEPv -0000000120004f90 T _ZN7CFileOp11write_blockEPv -0000000120004e70 T _ZN7CFileOp15read_block_getcEPc -0000000120005080 T _ZN7CFileOp16write_block_putcEv -0000000120005180 T _ZN7CFileOp4openEPKcbb -0000000120004a40 T _ZN7CFileOp4seekEii -0000000120005770 T _ZN7CFileOp5closeEv -0000000120005910 T _ZN7CFileOp6doseekElb -0000000120005630 T _ZN7CFileOp6m_openEPKcib -0000000120005430 T _ZN7CFileOp6reopenEbb -0000000120004760 T _ZN7CFileOp9seek_testEbR9Semaphore -0000000120005330 T _ZN7CFileOpC1ER8BonTimeriib -0000000120005230 T _ZN7CFileOpC2ER8BonTimeriib -0000000120004400 T _ZN7CFileOpD1Ev -00000001200042f0 T _ZN7CFileOpD2Ev -0000000120007b40 T _ZN8BonTimer10InitializeEv -0000000120007820 T _ZN8BonTimer10cpu_so_farEv -0000000120007c80 T _ZN8BonTimer10print_statE7tests_t -0000000120007f80 T _ZN8BonTimer11PrintHeaderEP8_IO_FILE -00000001200078f0 T _ZN8BonTimer11get_cpu_useEv -0000000120007970 T _ZN8BonTimer11get_delta_tE7tests_t -00000001200077e0 T _ZN8BonTimer11time_so_farEv -0000000120007860 T _ZN8BonTimer12get_cur_timeEv -0000000120007b70 T _ZN8BonTimer14print_cpu_statE7tests_t -0000000120007e40 T _ZN8BonTimer15print_file_statE7tests_t -0000000120007a10 T _ZN8BonTimer16add_delta_reportER8report_s7tests_t -00000001200079c0 T _ZN8BonTimer16get_delta_reportER8report_s -0000000120008030 T _ZN8BonTimer8DoReportEPKciiiiiiP8_IO_FILE -0000000120007790 T _ZN8BonTimer9timestampEv -0000000120007b00 T _ZN8BonTimerC1Ev -0000000120007ac0 T _ZN8BonTimerC2Ev -00000001200061a0 T _ZN9COpenTest10make_namesEb -0000000120005bf0 T _ZN9COpenTest11random_sortEv -0000000120007400 T _ZN9COpenTest11stat_randomER8BonTimer -0000000120006520 T _ZN9COpenTest13create_a_fileEPKcPcii -0000000120006710 T _ZN9COpenTest13create_a_linkEPKcS1_i -0000000120006c50 T _ZN9COpenTest13delete_randomER8BonTimer -00000001200074c0 T _ZN9COpenTest15stat_sequentialER8BonTimer -0000000120006f10 T _ZN9COpenTest17delete_sequentialER8BonTimer -0000000120006830 T _ZN9COpenTest6createEPKcR8BonTimeriiiib -0000000120007280 T _ZN9COpenTest9stat_fileEPKc -0000000120005b50 T _ZN9COpenTestC1EibPb -0000000120005ab0 T _ZN9COpenTestC2EibPb -0000000120005f40 T _ZN9COpenTestD1Ev -0000000120005ce0 T _ZN9COpenTestD2Ev -0000000120008aa0 T _ZN9Semaphore18decrement_and_waitEi -0000000120008920 T _ZN9Semaphore6createEi -0000000120008850 T _ZN9Semaphore9clear_semEv -0000000120008be0 T _ZN9Semaphore9get_mutexEv -0000000120008a10 T _ZN9Semaphore9get_semidEv -0000000120008c80 T _ZN9Semaphore9put_mutexEv -00000001200087d0 T _ZN9SemaphoreC1Eiii -0000000120008750 T _ZN9SemaphoreC2Eiii -000000012000b258 T _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj -000000012000ba74 T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE -000000012000b2b8 T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv -000000012000b4c0 T _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE -000000012000b330 T _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_ -000000012000baa4 T _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -000000012000b510 T _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -000000012000b340 T _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ -000000012000bb38 T _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -000000012000b5c4 T _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -000000012000b394 T _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ -000000012000ab30 T _ZNKSt9exception4whatEv -000000012000b00c T _ZNKSt9type_info10__do_catchEPKS_PPvj -000000012000b01c T _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv -000000012000affc T _ZNKSt9type_info14__is_pointer_pEv -000000012000b004 T _ZNKSt9type_info15__is_function_pEv -000000012000afa8 T _ZNSt10bad_typeidD0Ev -000000012000af74 T _ZNSt10bad_typeidD1Ev -000000012000af40 T _ZNSt10bad_typeidD2Ev -000000012000aadc T _ZNSt13bad_exceptionD0Ev -000000012000aaa8 T _ZNSt13bad_exceptionD1Ev -000000012000aa74 T _ZNSt13bad_exceptionD2Ev -000000012000aeec T _ZNSt8bad_castD0Ev -000000012000aeb8 T _ZNSt8bad_castD1Ev -000000012000ae84 T _ZNSt8bad_castD2Ev -000000012000add4 T _ZNSt9bad_allocD0Ev -000000012000ada0 T _ZNSt9bad_allocD1Ev -000000012000ad6c T _ZNSt9bad_allocD2Ev -000000012000aa40 T _ZNSt9exceptionD0Ev -000000012000aa2c T _ZNSt9exceptionD1Ev -000000012000aa18 T _ZNSt9exceptionD2Ev -000000012000ae50 T _ZNSt9type_infoD0Ev -000000012000ae3c T _ZNSt9type_infoD1Ev -000000012000ae28 T _ZNSt9type_infoD2Ev -000000012000a39c T _ZSt10unexpectedv -000000012000a3bc T _ZSt13set_terminatePFvvE -000000012000a3d4 T _ZSt14set_unexpectedPFvvE -000000012000ad54 T _ZSt15set_new_handlerPFvvE -000000012000a9e4 T _ZSt18uncaught_exceptionv -0000000120025cd0 G _ZSt7nothrow -000000012000a354 T _ZSt9terminatev -00000001200127d8 V _ZTIN10__cxxabiv117__class_type_infoE -00000001200127f0 V _ZTIN10__cxxabiv120__si_class_type_infoE -0000000120012808 V _ZTIN10__cxxabiv121__vmi_class_type_infoE -00000001200127c0 V _ZTISt10bad_typeid -0000000120012578 V _ZTISt13bad_exception -00000001200127a8 V _ZTISt8bad_cast -00000001200125d8 V _ZTISt9bad_alloc -0000000120012568 V _ZTISt9exception -0000000120012798 V _ZTISt9type_info -000000012001286b V _ZTSN10__cxxabiv117__class_type_infoE -0000000120012846 V _ZTSN10__cxxabiv120__si_class_type_infoE -0000000120012820 V _ZTSN10__cxxabiv121__vmi_class_type_infoE -000000012001288d V _ZTSSt10bad_typeid -0000000120012590 V _ZTSSt13bad_exception -000000012001289c V _ZTSSt8bad_cast -00000001200125f0 V _ZTSSt9bad_alloc -00000001200125a2 V _ZTSSt9exception -00000001200128a8 V _ZTSSt9type_info -00000001200126b0 V _ZTVN10__cxxabiv117__class_type_infoE -0000000120012658 V _ZTVN10__cxxabiv120__si_class_type_infoE -0000000120012600 V _ZTVN10__cxxabiv121__vmi_class_type_infoE -0000000120012708 V _ZTVSt10bad_typeid -0000000120012518 V _ZTVSt13bad_exception -0000000120012730 V _ZTVSt8bad_cast -00000001200125b0 V _ZTVSt9bad_alloc -0000000120012540 V _ZTVSt9exception -0000000120012758 V _ZTVSt9type_info -0000000120025cb8 g _ZZ18__gthread_active_pvE20__gthread_active_ptr -0000000120025cc8 g _ZZ18__gthread_active_pvE20__gthread_active_ptr -0000000120025cc4 g _ZZ21get_globals_init_oncevE4once -0000000120009518 T _ZdlPv -000000012000a648 T _Znam -000000012000a580 T _Znwm -00000001200251c0 d __CTOR_END__ -00000001200251b8 d __CTOR_LIST__ -00000001200251d0 d __DTOR_END__ -00000001200251c8 d __DTOR_LIST__ -0000000120024f30 r __FRAME_END__ -00000001200251d8 d __JCR_END__ -00000001200251d8 d __JCR_LIST__ -0000000120025ce8 A __bss_start -000000012000a694 T __cxa_allocate_exception -000000012000a884 T __cxa_begin_catch -000000012000a19c T __cxa_call_unexpected -000000012000a930 T __cxa_end_catch -000000012000a7b4 T __cxa_free_exception -000000012000ac84 T __cxa_get_globals -000000012000ac3c T __cxa_get_globals_fast -000000012000a4f8 T __cxa_rethrow -000000012000a45c T __cxa_throw -0000000120024000 D __data_start -000000012000fa50 T __deregister_frame -000000012000fa20 T __deregister_frame_info -000000012000f8c0 T __deregister_frame_info_bases -0000000120011470 t __do_global_ctors_aux -0000000120002160 t __do_global_dtors_aux -0000000120025c88 G __dso_handle -000000012000bd74 T __dynamic_cast -0000000120024000 A __fini_array_end -0000000120024000 A __fini_array_start -000000012000d250 T __frame_state_for -0000000120025ce0 g __gthread_active_ptr.0 -0000000120025cd8 g __gthread_active_ptr.1 -0000000120009c28 T __gxx_personality_v0 -0000000120024000 A __init_array_end -0000000120024000 A __init_array_start -00000001200113e0 T __libc_csu_fini -0000000120011350 T __libc_csu_init -0000000120025d00 S __new_handler -000000012000f6f0 T __register_frame -000000012000f6b0 T __register_frame_info -000000012000f5f0 T __register_frame_info_bases -000000012000f820 T __register_frame_info_table -000000012000f760 T __register_frame_info_table_bases -000000012000f860 T __register_frame_table -0000000120002120 W __start -0000000120025ce8 A _edata -0000000120035db0 A _end -00000001200114d0 T _fini -00000001200020b0 T _init -0000000120002120 T _start -0000000120010250 t add_fdes -0000000120025cea s already_printed_error -00000001200094b0 T arm -0000000120010a30 t base_from_cb_data -000000012000fab0 t base_from_object -000000012000bf50 t base_of_encoded_value -00000001200094f8 T checkpoint -00000001200100e0 t classify_object_over_fdes -0000000120025ce8 s completed.1 -00000001200024f0 T ctrl_c_handler -0000000120024000 W data_start -0000000120009508 T debugbreak -00000001200094e8 T dump_stats -00000001200094f0 T dumpreset_stats -0000000120035d40 b dwarf_reg_size_table -0000000120025d30 b emergency_buffer -0000000120024008 d emergency_mutex -0000000120025cf0 s emergency_used -000000012000caa0 t execute_cfa_program -000000012000c520 t execute_stack_op -0000000120025ce9 s exitNow -000000012000c2f0 t extract_cie_info -000000012000fd20 t fde_mixed_encoding_compare -000000012000fc60 t fde_single_encoding_compare -00000001200111d0 t fde_split -000000012000fc30 t fde_unencoded_compare -0000000120002200 t frame_dummy -000000012000fe00 t frame_heapsort -000000012000fb40 t get_cie_encoding -0000000120025cf8 s globals_key -0000000120035d30 b globals_static -000000012000ea10 t init_dwarf_reg_size_table -0000000120010e90 t init_object -00000001200094d8 T initparam -00000001200094c0 T ivlb -00000001200094c8 T ivle -00000001200103d0 t linear_search_fdes -00000001200094d0 T m5exit -0000000120002590 T main -0000000120025d10 s marker.1 -0000000120035d88 b object_mutex -0000000120025d08 s once_regsizes.0 -0000000120025c90 g p.0 -00000001200094b8 T quiesce -000000012000c0d0 t read_encoded_value_with_base -000000012000f460 t read_encoded_value_with_base -000000012000c060 t read_sleb128 -000000012000f3f0 t read_sleb128 -000000012000c020 t read_uleb128 -000000012000f3b0 t read_uleb128 -0000000120009500 T readfile -00000001200094e0 T reset_stats -0000000120010560 t search_object -0000000120025d20 s seen_objects -000000012000bed0 t size_of_encoded_value -000000012000f330 t size_of_encoded_value -0000000120009510 T switchcpu -0000000120025d18 s unseen_objects -0000000120025cc0 g use_thread_key -000000012000cf90 t uw_frame_state_for -000000012000d590 t uw_init_context_1 -000000012000d650 t uw_install_context_1 -000000012000d540 t uw_update_context -000000012000d390 t uw_update_context_1 diff --git a/configs/boot/bzip.rcS b/configs/boot/bzip.rcS deleted file mode 100644 index 369659ca00..0000000000 --- a/configs/boot/bzip.rcS +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/bzip200/ -/sbin/m5 resetstats -/benchmarks/spec/bzip200/bzip2 lgred.graphic 1 -/sbin/m5 exit diff --git a/configs/boot/cc1.symbol b/configs/boot/cc1.symbol deleted file mode 100644 index 16c16912bc..0000000000 --- a/configs/boot/cc1.symbol +++ /dev/null @@ -1,3454 +0,0 @@ -00000001201fec60 G DFbignan -00000001201fec68 G DFlittlenan -0000000120006f30 T GNU_xref_begin -0000000120006f70 T GNU_xref_end -00000001201e9b60 d Reg_names -00000001201fec70 G SFbignan -00000001201fec74 G SFlittlenan -00000001201e9ff8 D TFbignan -00000001201ea008 D TFlittlenan -00000001201e82c8 D W_options -00000001201ea018 D XFbignan -00000001201ea024 D XFlittlenan -00000001201fad48 D _DYNAMIC -00000001201fb210 D _GLOBAL_OFFSET_TABLE_ -00000001201febe8 G _IO_stdin_used -00000001201faf10 T _PROCEDURE_LINKAGE_TABLE_ -00000001201faef0 d __CTOR_END__ -00000001201faee8 d __CTOR_LIST__ -00000001201faf00 d __DTOR_END__ -00000001201faef8 d __DTOR_LIST__ -00000001201fad44 r __FRAME_END__ -00000001201faf08 d __JCR_END__ -00000001201faf08 d __JCR_LIST__ -00000001201fecdc A __bss_start -00000001201e6a58 D __data_start -000000012019eb20 t __do_global_ctors_aux -00000001200019e0 t __do_global_dtors_aux -00000001201febf0 G __dso_handle -00000001201e6a58 A __fini_array_end -00000001201e6a58 A __fini_array_start -00000001201e6a58 A __init_array_end -00000001201e6a58 A __init_array_start -000000012019ea80 T __libc_csu_fini -000000012019e9d0 T __libc_csu_init -00000001200019a0 W __start -00000001201fecdc A _edata -00000001202157c8 A _end -000000012019eb80 T _fini -0000000120001938 T _init -00000001200019a0 T _start -00000001202003e8 S abs_optab -00000001200d89c0 t abstract_origin_attribute -000000012016a550 t actual_hazard -000000012016af00 t actual_hazard_this_instance -000000012016fb20 t add_bb_string -00000001201831a0 T add_clobbers -00000001201ff138 s add_cost -0000000120200858 S add_cost -0000000120164b10 t add_dependence -0000000120055d40 T add_double -00000001200b4c60 T add_insn -00000001200b2c40 T add_insn_after -00000001200b2d90 T add_insn_before -000000012002f860 t add_ixpansion -00000001200fed90 t add_label_notes -0000000120197770 T add_operand -0000000120200408 S add_optab -000000012015d210 t add_to_delay_list -00000001201ff5f8 s added_links_insn -00000001201ff4c0 s addr_combined_regs -00000001201ff4b8 s addr_placeholder -00000001201731d0 T address_operand -00000001201720f0 T adj_offsettable_operand -00000001200dfe00 t adjust_copied_decl_tree -000000012016aa30 t adjust_priority -0000000120095b20 T adjust_stack -00000001200291a0 t affix_data_type -00000001201ff588 s after_insn_hard_regs -0000000120062e10 T aggregate_value_p -00000001201fed48 s align.4 -000000012005f550 t all_blocks -000000012006a350 T all_cases_count -00000001201eb418 d all_from_align -00000001201ff3e8 s all_minus_one -0000000120200110 S all_types_permanent -0000000120134ef0 t alloc_qty_for_scratch -0000000120094f90 T allocate_dynamic_stack_space -000000012010fc50 T allocate_for_life_analysis -0000000120154180 t allocate_reload_reg -00000001200422b0 T allocation_temporary_p -00000001201ff808 s allocno_calls_crossed -000000012013a160 t allocno_compare -00000001201ff818 s allocno_live_length -00000001201ff810 s allocno_n_refs -00000001201ff7a0 s allocno_order -00000001201ff798 s allocno_reg -00000001201ff7c0 s allocno_row_words -00000001201ff7a8 s allocno_size -00000001201ff820 s allocnos_live -00000001201fed6c s already.0 -00000001201ff698 s altclass -000000012014b230 t alter_reg -000000012016e1e0 T alter_subreg -0000000120140e20 t alternative_allows_memconst -0000000120190fb0 t alu_unit_blockage -000000012018cc20 T alu_unit_blockage_range -000000012018c790 T alu_unit_ready_cost -00000001202005d8 S and_optab -00000001200387d0 T announce_function -00000001201ff258 s anonymous_types -0000000120095bd0 T anti_adjust_stack -00000001201645f0 T anti_dependence -000000012006f4f0 T any_pending_cleanups -000000012016f6b0 T app_disable -000000012016f690 T app_enable -00000001201ffb1c s app_on -0000000120203548 b apply_args_mode -0000000120203748 b apply_args_reg_offset -0000000120082a30 T apply_args_register_offset -0000000120084640 t apply_args_size -00000001201ff108 s apply_args_value -000000012016fd70 T apply_change_group -0000000120122f00 t apply_distributive_law -0000000120203648 b apply_result_mode -0000000120084920 t apply_result_size -000000012010d890 t approx_final_value -00000001202007d8 S arg_pointer_rtx -00000001202001e8 S arg_pointer_save_area -00000001201e73ff d argnofun.1 -00000001201e73e8 d argstring.0 -0000000120197640 T arith32_operand -00000001201975c0 T arith5_operand -00000001201976b0 T arith64_operand -0000000120197540 T arith_operand -00000001201eb6b8 d arityvec -0000000120043af0 T array_type_nelts -00000001200ba350 t asctoe -00000001200ba340 t asctoe113 -00000001200ba310 t asctoe24 -00000001200ba320 t asctoe53 -00000001200ba330 t asctoe64 -00000001200ba360 t asctoeg -00000001202004f0 S ashl_optab -0000000120200608 S ashr_optab -00000001201fff10 S asm_file_name -000000012016f110 T asm_fprintf -000000012016c9c0 t asm_insn_count -0000000120171ab0 T asm_noperands -0000000120200058 S asm_out_file -00000001200a80b0 T assemble_alias -00000001200a8fb0 T assemble_align -00000001200a8b20 T assemble_asm -00000001200a8a10 T assemble_constant_align -00000001200a8cb0 T assemble_constructor -00000001200a8bd0 T assemble_destructor -00000001200a8dd0 T assemble_end_function -00000001200a9310 T assemble_external -00000001200a9320 T assemble_external_libcall -00000001200a8d40 T assemble_gc_entry -00000001200a9330 T assemble_global -00000001200a4660 T assemble_integer -00000001200a93b0 T assemble_label -00000001200a3d40 T assemble_name -00000001200a4890 T assemble_real -00000001200a2700 T assemble_start_function -00000001200a3e80 T assemble_static_space -00000001200a9060 T assemble_string -00000001200a40f0 T assemble_trampoline_template -00000001200a2be0 T assemble_variable -00000001200a8f30 T assemble_zeros -0000000120059c00 T assign_outer_stack_local -000000012005d300 T assign_parms -0000000120059a60 T assign_stack_local -0000000120059db0 T assign_stack_temp -00000001201e7368 d asso_values.0 -0000000120162c10 t attach_deaths -0000000120169c10 t attach_deaths_insn -0000000120040b10 T attribute_hash_list -0000000120040bc0 T attribute_list_contained -0000000120040b40 T attribute_list_equal -0000000120200b10 b attrtab -00000001201feec8 s attrtab_idx -0000000120200000 S aux_info_file -00000001201fefe0 s aux_info_file_name -000000012010cd40 T back_branch_in_range_p -00000001201ff8a4 s bad_spill_regs -000000012006c730 t balance_case_nodes -00000001201ff218 s base_label_num -00000001201ff520 s basic_block_drops_in -00000001202008c8 S basic_block_end -00000001202008d8 S basic_block_head -0000000120200878 S basic_block_live_at_start -00000001201ff528 s basic_block_loop_depth -0000000120215098 B basic_block_needs -00000001201045b0 t basic_induction_var -00000001201ffa18 s bb_dead_regs -00000001201fecb8 g bb_file_label_num -00000001201fecbc g bb_func_label_num -00000001201ffad0 s bb_head -00000001201ffa20 s bb_live_regs -00000001201fecb0 g bb_tail -00000001201ff968 s bb_ticks -0000000120081f90 T bc_adjust_stack -000000012019c610 T bc_align -000000012019b890 T bc_align_bytecode -000000012019bd00 T bc_align_const -000000012019bfa0 T bc_align_data -00000001200810f0 T bc_allocate_local -0000000120082af0 T bc_allocate_variable_array -000000012019b760 T bc_begin_function -0000000120063420 T bc_build_calldesc -0000000120081320 T bc_canonicalize_array_ref -000000012006ab50 t bc_check_for_full_enumeration_handling -000000012019c5f0 T bc_data -00000001201ffbc8 s bc_data_seg -000000012019b710 T bc_define_pointer -000000012019c760 T bc_emit -000000012019cb00 T bc_emit_bytecode -000000012019b960 T bc_emit_bytecode_const -000000012019ba90 T bc_emit_bytecode_labeldef -000000012019bb10 T bc_emit_bytecode_labelref -000000012019bc00 T bc_emit_code_labelref -000000012019c240 T bc_emit_common -000000012019bdd0 T bc_emit_const -000000012019bf60 T bc_emit_const_labeldef -000000012019bf80 T bc_emit_const_labelref -000000012019bea0 T bc_emit_const_skip -000000012019c070 T bc_emit_data -000000012019c200 T bc_emit_data_labeldef -000000012019c220 T bc_emit_data_labelref -000000012019c140 T bc_emit_data_skip -000000012019ac10 T bc_emit_instruction -000000012019c9b0 T bc_emit_labeldef -000000012019ca00 T bc_emit_labelref -000000012019c890 T bc_emit_skip -000000012019cc40 T bc_emit_trampoline -000000012019a140 T bc_end_function -0000000120081600 T bc_expand_address -000000012019d430 T bc_expand_binary_operation -0000000120081480 T bc_expand_component_address -0000000120081a90 T bc_expand_constructor -000000012019dd40 T bc_expand_conversion -0000000120068a10 t bc_expand_decl -0000000120068ce0 t bc_expand_decl_init -0000000120068110 t bc_expand_end_bindings -000000012006bc60 t bc_expand_end_case -0000000120065b50 t bc_expand_end_cond -000000012006fc40 t bc_expand_end_loop -000000012007b490 T bc_expand_expr -0000000120064180 t bc_expand_fixup -0000000120063670 T bc_expand_function_end -000000012005fcc0 T bc_expand_function_start -000000012006f690 t bc_expand_goto_internal -000000012019df90 T bc_expand_increment -0000000120069450 t bc_expand_start_case -0000000120065ab0 t bc_expand_start_cond -000000012019de90 T bc_expand_truth_conversion -000000012019d900 T bc_expand_unary_operation -0000000120064240 t bc_fixup_gotos -0000000120081910 T bc_gen_constr_label -000000012019ca60 T bc_gen_rtx -000000012019ba30 T bc_get_bytecode_label -000000012019c420 T bc_globalize_label -000000012019d350 T bc_init_mode_to_code_map -000000012006fe00 T bc_init_mode_to_opcode_maps -0000000120199ef0 T bc_initialize -0000000120082b60 T bc_load_bit_field -00000001200811a0 T bc_load_externaddr -0000000120081200 T bc_load_externaddr_id -0000000120081290 T bc_load_localaddr -0000000120080f90 T bc_load_memory -00000001200812d0 T bc_load_parmaddr -00000001200a9d10 t bc_make_decl_rtl -000000012006f5a0 T bc_new_uid -00000001200a9160 T bc_output_constructor -00000001200a9250 T bc_output_data_constructor -000000012019caf0 T bc_print_rtl -00000001200815a0 T bc_push_offset_and_size -000000012006a050 t bc_pushcase -0000000120081870 T bc_runtime_type_code -0000000120081f50 T bc_store_bit_field -0000000120081e50 T bc_store_field -0000000120081040 T bc_store_memory -000000012019c5d0 T bc_text -00000001201ffbc0 s bc_text_seg -00000001201ff0b0 s bc_uid.1 -000000012019ca50 T bc_write_file -000000012019ce50 T bc_xstrdup -000000012020c108 B bcc_gen_fctn -00000001202004d0 S bcmp_libfunc -0000000120200698 S bcopy_libfunc -00000001201eb43c d best_from_align -000000012002b5a0 T binary_op_error -0000000120043510 T binfo_member -000000012016add0 t birthing_insn_p -00000001200d8380 t bit_offset_attribute -000000012018ed90 T bit_unit_ready_cost -000000012010ce50 T biv_total_increment -0000000120132150 t block_alloc -00000001201ffb18 s block_depth -00000001201ff530 s block_live_static -0000000120198b80 t block_move_loop -0000000120191ea0 t block_move_no_loop -00000001201921e0 t block_move_sequence -00000001202002d0 S block_stack -00000001202002ac S block_start_count -00000001201ff0e8 s block_vector -000000012005f520 t blocks_nreverse -00000001201e9f94 d bmask -00000001201ffda0 S boolean_false_node -00000001201ffcc8 S boolean_true_node -00000001201ffe58 S boolean_type_node -0000000120038bb0 T botch -0000000120096150 t break_out_memory_refs -0000000120205fe4 b buffer.0 -0000000120206048 b buffer.1 -00000001202063cc b buffer.10 -0000000120206430 b buffer.11 -0000000120206494 b buffer.12 -00000001201fedf8 s buffer.2 -00000001202060ac b buffer.2 -0000000120206110 b buffer.3 -0000000120206174 b buffer.4 -00000001202061d8 b buffer.5 -000000012020623c b buffer.6 -00000001202062a0 b buffer.7 -0000000120206304 b buffer.8 -0000000120206368 b buffer.9 -00000001201feee0 s buffer_length.2 -000000012003fff0 T build -0000000120040250 T build1 -000000012001adb0 T build_array_ref -00000001200414f0 T build_array_type -000000012001c1a0 T build_binary_op -0000000120044230 T build_block -000000012001fc20 T build_c_cast -0000000120042a00 T build_complex -00000001200415e0 T build_complex_type -000000012001a930 T build_component_ref -00000001200255b0 T build_compound_expr -000000012001f570 T build_conditional_expr -0000000120044170 T build_decl -00000001200442b0 T build_decl_attribute_variant -00000001200437a0 T build_decl_list -0000000120014920 T build_enumerator -000000012001b260 T build_function_call -0000000120044ed0 T build_function_type -0000000120044dd0 T build_index_2_type -0000000120044c40 T build_index_type -000000012001abc0 T build_indirect_ref -00000001200427b0 T build_int_2_wide -0000000120045090 T build_method_type -0000000120020200 T build_modify_expr -00000001200403e0 T build_nt -0000000120006f10 T build_objc_string -0000000120045170 T build_offset_type -00000001200404a0 T build_parse_node -00000001200412a0 T build_pointer_type -00000001200413a0 T build_range_type -0000000120042800 T build_real -000000012003dc50 T build_real_from_int_cst -0000000120044fd0 T build_reference_type -000000012003e0c0 T build_string -0000000120043750 T build_tree_list -0000000120040590 T build_type_attribute_variant -0000000120040810 T build_type_copy -0000000120040740 T build_type_variant -000000012001e500 T build_unary_op -00000001200105e0 T builtin_function -00000001202006f4 S byte_mode -00000001200d81c0 t byte_size_attribute -0000000120200a28 S bytecode -0000000120200510 S bzero_libfunc -0000000120025510 T c_alignof -0000000120019fd0 T c_alignof_expr -000000012002d690 T c_build_type_variant -000000012000c410 T c_decode_option -0000000120024980 T c_expand_asm_operands -000000012002d190 T c_expand_expr_stmt -0000000120024c10 T c_expand_return -0000000120025bf0 T c_expand_start_case -00000001201ffc18 S c_function_chain -00000001201fedc0 s c_function_varargs -0000000120017a00 T c_mark_varargs -0000000120025430 T c_size_in_bytes -0000000120019e30 T c_sizeof -0000000120025350 T c_sizeof_nowarn -0000000120084500 t c_strlen -000000012010d100 t calculate_giv_inc -0000000120197400 T call_address_operand -0000000120200928 S call_fixed_reg_set -0000000120213ab0 B call_fixed_regs -0000000120200910 S call_used_reg_set -0000000120213a70 B call_used_regs -0000000120200978 S caller_save_needed -0000000120084d50 t calls_function_1 -00000001201ff128 s calls_function_save_exprs -000000012012c200 t can_combine_p -000000012009c7e0 T can_compare_p -00000001200a15b0 T can_extend_p -0000000120200800 S can_reach_end -00000001200e6860 T can_reverse_comparison_p -00000001201700e0 T cancel_changes -00000001201ff8c0 s cannot_omit_stores -00000001200e9090 t canon_hash -00000001200ea190 t canon_reg -00000001201648e0 t canon_rtx -000000012006f570 T case_index_expr_type -00000001202002c8 S case_stack -00000001201ff53c s cc0_live -0000000120200718 S cc0_rtx -00000001202007c8 S cc1_rtx -0000000120093200 T ceil_log2 -0000000120043540 T chain_member -00000001200435a0 T chain_member_purpose -0000000120043570 T chain_member_value -00000001200435f0 T chainon -00000001200b22f0 T change_address -0000000120209a58 b change_locs -0000000120044710 T change_main_variant -0000000120209800 b change_objects -0000000120209990 b change_old_codes -0000000120209be8 b change_olds -00000001201ffc30 S char_array_type_node -00000001201ffcb8 S char_type_node -000000012016fc40 T check_asm_operands -000000012002d290 T check_case_value -0000000120105f70 t check_dbra_loop -00000001201040a0 t check_final_value -000000012006a850 T check_for_full_enumeration_handling -000000012002d7a0 t check_format_info -000000012002cce0 T check_function_format -00000001200234d0 t check_init_type_bitfields -0000000120008020 T check_newline -000000012012ff00 T choose_hard_reg_mode -0000000120093540 t choose_multiplier -000000012014e7e0 t choose_reload_regs -0000000120213514 B class_narrowest_mode -00000001200b3080 T classify_insn -0000000120196810 T classify_integer -0000000120200240 S cleanup_label -00000001202002d8 S cleanups_this_call -0000000120200a40 b clear_binding_level -00000001200a9450 T clear_const_double_mem -000000012006e9f0 T clear_last_expr -0000000120042460 T clear_momentary -0000000120017050 T clear_parm_order -0000000120082a90 T clear_pending_stack_adjust -00000001201559d0 t clear_reg_live -0000000120153020 t clear_reload_reg_in_use -0000000120082650 T clear_storage -0000000120200358 S cmp_optab -000000012020c4a8 B code_to_optab -000000012002e9d0 t collect_iterators -0000000120114400 t combinable_i3pat -00000001201ff590 s combine_attempts -00000001201fef14 S combine_dump -00000001201ffef0 S combine_dump_file -00000001201ff598 s combine_extras -0000000120105650 t combine_givs -0000000120113b30 T combine_instructions -00000001201ff5bc s combine_max_regno -00000001201ff594 s combine_merges -00000001200fe3a0 t combine_movables -0000000120015c30 T combine_parm_decls -0000000120133580 t combine_regs -0000000120146c80 t combine_reloads -00000001200294d0 T combine_strings -00000001201ff59c s combine_successes -000000012005a0d0 T combine_temp_slots -00000001201fffd4 S combine_time -0000000120019070 T common_type -00000001200801f0 t compare -00000001200a5200 t compare_constant_1 -0000000120080310 T compare_from_rtx -0000000120152d50 t compare_spill_regs -00000001200e6bb0 T comparison_dominates_p -0000000120173a00 T comparison_operator -0000000120039530 t compile_file -00000001201feeb8 s compiled_from_record.0 -0000000120011560 T complete_array_type -00000001201fece0 s completed.1 -00000001201ffc08 S complex_double_type_node -00000001201ffe70 S complex_float_type_node -00000001201ffc38 S complex_integer_type_node -00000001201ffce8 S complex_long_double_type_node -00000001200196f0 T comptypes -0000000120200288 S cond_stack -00000001201968b0 T condition_value -00000001200e6db0 T condjump_in_parallel_p -00000001200e6cd0 T condjump_p -00000001201ff7b8 s conflicts -00000001201ff3f0 s consec_ints -0000000120105360 t consec_sets_giv -00000001201012d0 t consec_sets_invariant_p -0000000120200708 S const0_rtx -0000000120200780 S const1_rtx -0000000120200750 S const2_rtx -000000012004aac0 t const_binop -00000001201ff170 s const_double_chain -0000000120173400 T const_double_operand -00000001200a4df0 t const_hash -0000000120203b98 b const_hash_table -00000001201733f0 T const_int_operand -0000000120205b20 b const_int_rtx -00000001202006c8 S const_labelno -000000012018ee30 T const_num_delay_slots -00000001201ffe38 S const_ptr_type_node -00000001201ff188 s const_rtx_hash_table -00000001201ff1a8 s const_rtx_sym_hash_table -00000001200a8260 T const_section -00000001201ffe60 S const_string_type_node -0000000120213530 B const_tiny_rtx -00000001202007b8 S const_true_rtx -00000001200d9fa0 t const_value_attribute -000000012002cd30 T constant_expression_warning -00000001201ff438 s constant_pool_entries_cost -0000000120200798 S constm1_rtx -00000001201723a0 T constrain_operands -0000000120152980 t constraint_accepts_reg_p -00000001201feea0 s constructor_asmspec -00000001201fee58 s constructor_bit_index -00000001201fee68 s constructor_constant -00000001201fee98 s constructor_decl -00000001201fee80 s constructor_depth -00000001201fee60 s constructor_elements -00000001201fee70 s constructor_erroneous -00000001201fee28 s constructor_fields -00000001201fee84 s constructor_implicit -00000001201fee90 s constructor_incremental -00000001201fee30 s constructor_index -00000001201fee40 s constructor_max_index -00000001201fee00 S constructor_no_implicit -00000001201fee78 s constructor_pending_elts -00000001201fee38 s constructor_range_end -00000001201feeb0 s constructor_result -00000001201fee6c s constructor_simple -00000001201ffe98 S constructor_stack -00000001201fee74 s constructor_subconstants_deferred -00000001201feea8 s constructor_top_level -00000001201fee20 s constructor_type -00000001201fee48 s constructor_unfilled_fields -00000001201fee50 s constructor_unfilled_index -0000000120043f90 T contains_placeholder_p -00000001200a3c50 t contains_pointers_p -00000001201ff030 s context_display -00000001201ec720 d conversion_info -000000012019e5b0 t conversion_reasonable_p -000000012020ae90 b conversion_recipe -0000000120026880 T convert -000000012002cf90 T convert_and_check -000000012001b520 t convert_arguments -0000000120020650 t convert_for_assignment -0000000120071230 T convert_modes -0000000120070530 T convert_move -0000000120199c60 T convert_to_complex -0000000120199080 T convert_to_integer -00000001200711f0 T convert_to_mode -0000000120199930 T convert_to_pointer -0000000120199ad0 T convert_to_real -00000001200959e0 T copy_addr_to_reg -0000000120095600 T copy_all_regs -00000001201ff300 s copy_asm_constraints_vector -00000001201ff2f8 s copy_asm_operands_vector -00000001200a5dc0 t copy_constant -000000012012f480 t copy_cost -0000000120200834 S copy_cost -00000001200dae60 t copy_decl_list -00000001200dafd0 t copy_decl_rtls -00000001200daf10 t copy_decl_tree -00000001200db590 t copy_for_inline -0000000120017c10 T copy_lang_decl -00000001200426f0 T copy_list -0000000120109ac0 t copy_loop_body -00000001200aab70 T copy_most_rtx -000000012003d5b0 T copy_node -0000000120143780 T copy_replacements -00000001200aa7c0 T copy_rtx -00000001200dda30 T copy_rtx_and_substitute -00000001200b2430 T copy_rtx_if_shared -0000000120094b10 T copy_to_mode_reg -0000000120094a50 T copy_to_reg -0000000120095a90 T copy_to_suggested_reg -0000000120200440 S cos_optab -00000001201ff0d0 s cost_table -00000001201ff688 s costs -00000001201ffaf8 s count_basic_blocks -0000000120038620 T count_error -0000000120101550 t count_loop_regs_set -0000000120100050 t count_nonfixed_reads -0000000120152a80 t count_occurrences -000000012014a920 t count_possible_groups -00000001200f4b50 t count_reg_usage -00000001201ff8b0 s counted_for_groups -00000001201ff8b8 s counted_for_nongroups -0000000120165850 t create_reg_dead_note -00000001201ff310 s cross_jump_death_matters -00000001201fef0c S cse2_dump -00000001201fff38 S cse2_dump_file -00000001201fff90 S cse2_time -00000001200f4080 t cse_basic_block -00000001201ff3fc s cse_basic_block_end -00000001201ff3f8 s cse_basic_block_start -00000001200fc2e0 t cse_check_loop_start -00000001201ff440 s cse_check_loop_start_value -00000001201fef04 S cse_dump -00000001201ffff8 S cse_dump_file -00000001200f3530 T cse_end_of_basic_block -00000001200ed360 t cse_gen_binary -00000001200f6d90 t cse_insn -00000001201ff40c s cse_jumps_altered -00000001200f3a60 T cse_main -00000001202002e4 S cse_not_expected -00000001200f3290 t cse_process_notes -00000001200fb530 t cse_set_around_loop -00000001201fff44 S cse_time -00000001200a83f0 T ctors_section -00000001201fec54 g cur_insn_uid -00000001201fedd0 s current_binding_level -00000001201fed08 s current_declspecs -00000001201ff290 s current_dienum -00000001201fedc8 s current_extern_inline -00000001201fec90 g current_funcdef_number -0000000120200218 S current_function_arg_offset_rtx -0000000120200230 S current_function_args_info -0000000120200214 S current_function_args_size -0000000120200170 S current_function_calls_alloca -0000000120200188 S current_function_calls_longjmp -00000001202001a8 S current_function_calls_setjmp -0000000120200234 S current_function_contains_functions -00000001201ffd80 S current_function_decl -0000000120200168 S current_function_epilogue_delay_list -0000000120200258 S current_function_has_nonlocal_goto -0000000120200270 S current_function_has_nonlocal_label -00000001202001c8 S current_function_internal_arg_pointer -00000001202001f8 S current_function_name -0000000120200160 S current_function_needs_context -0000000120200248 S current_function_outgoing_args_size -00000001201fed98 s current_function_parm_tags -00000001201fed90 s current_function_parms -00000001202001c0 S current_function_pops_args -000000012020015c S current_function_pretend_args_size -00000001201feda0 s current_function_prototype_file -00000001201feda8 s current_function_prototype_line -0000000120200178 S current_function_return_rtx -00000001201ffcb0 S current_function_returns_null -0000000120200280 S current_function_returns_pcc_struct -0000000120200208 S current_function_returns_pointer -000000012020018c S current_function_returns_struct -00000001201ffdc0 S current_function_returns_value -00000001202001f0 S current_function_stdarg -0000000120200210 S current_function_uses_const_pool -00000001202001d0 S current_function_uses_pic_offset_table -000000012020020c S current_function_varargs -00000001201ff980 s current_live_regs -00000001202000a0 S current_obstack -00000001200d74c0 t data_member_location_attribute -00000001200a8580 T data_section -00000001201e6a58 W data_start -00000001201feec0 s data_type -00000001201fef2c S dbr_sched_dump -0000000120200038 S dbr_sched_dump_file -00000001201ffee0 S dbr_sched_time -00000001201593d0 T dbr_schedule -000000012016f6d0 T dbr_sequence_length -0000000120200730 S dconst0 -00000001202007d0 S dconst1 -0000000120200788 S dconst2 -0000000120200700 S dconstm1 -00000001201ffa30 s dead_notes -00000001200b08c0 T dead_or_set_p -00000001200ae500 T dead_or_set_regno_p -00000001201fef3c S debug_info_level -00000001201ffab8 s debug_insn -00000001201feffc S debug_no_type_hash -0000000120042380 T debug_obstack -00000001200bce10 T debug_real -0000000120145250 T debug_reload -00000001200acd80 T debug_rtx -00000001201ff1b8 S debug_rtx_count -00000001200acec0 T debug_rtx_find -00000001200acdd0 T debug_rtx_list -00000001201fec10 G debug_temp_inits -0000000120047750 T debug_tree -0000000120029800 T decl_attributes -0000000120041b90 T decl_function_context -0000000120039220 t decl_name -0000000120200060 S decl_printable_name -0000000120043810 T decl_tree_cons -00000001200453e0 T decl_type_context -000000012002c750 T declare_function_name -000000012006e810 T declare_nonlocal_label -0000000120016590 T declare_parm_level -00000001200a9b50 T declare_weak -00000001201fed10 s declspec_stack -00000001200a9f90 t decode_addr_const -0000000120171c90 T decode_asm_operands -0000000120058ce0 t decode_field_reference -00000001200a1bf0 T decode_reg_name -00000001200aa310 t decode_rtx_const -000000012013d160 t decompose -000000012019e060 t deduce_conversion -000000012001a1d0 T default_conversion -00000001201ffc48 S default_function_type -00000001200388a0 T default_print_error_function -00000001200a94a0 T defer_addressed_constants -00000001201ff180 s defer_addressed_constants_flag -000000012007e5d0 t defer_cleanups_to -00000001201ff178 s deferred_constants -000000012000e1a0 T define_label -0000000120016730 T delete_block -00000001200e4330 t delete_computation -00000001200f4de0 T delete_dead_from_cse -000000012014b150 t delete_dead_insn -00000001200e6f00 T delete_for_peephole -000000012015d2f0 t delete_from_delay_slot -00000001200e4d90 t delete_from_jump_chain -00000001200e4560 T delete_insn -00000001200b4ca0 T delete_insns_since -00000001200e42c0 T delete_jump -00000001200e5260 t delete_labelref_insn -0000000120152360 t delete_output_reload -0000000120021fc0 t digest_init -000000012020350c b direct_load -0000000120203529 b direct_store -00000001201feed8 s directive_buffer.1 -0000000120056e70 t distribute_bit_expr -000000012012ba90 t distribute_links -000000012012ad10 t distribute_notes -000000012004a2b0 T div_and_round_double -0000000120203a3c b div_cost -000000012018ee60 t div_unit_blockage -000000012018ebb0 T div_unit_blockage_range -000000012018b380 T div_unit_ready_cost -0000000120038b90 T do_abort -00000001201ff250 s do_block -00000001200e3700 t do_cross_jump -00000001201ff000 s do_identifier_warnings -000000012007e800 T do_jump -000000012007fc50 t do_jump_by_parts_equality -000000012007fe50 t do_jump_by_parts_equality_rtx -000000012007f710 t do_jump_by_parts_greater -000000012007f9e0 T do_jump_by_parts_greater_rtx -000000012007fff0 t do_jump_for_compare -000000012006c110 t do_jump_if_equal -00000001201ff414 s do_not_record -000000012007e550 T do_pending_stack_adjust -00000001201fec3c G do_preexpand_calls -0000000120080560 t do_store_flag -00000001201ffc00 S doing_objc_thang -00000001201fed68 S dollars_in_ident -00000001201ffd98 S double_ftype_double -00000001201ffe18 S double_ftype_double_double -0000000120200998 S double_reg_address_ok -00000001201ffd78 S double_type_node -000000012006f350 T drop_through_at_end_p -00000001200a8470 T dtors_section -0000000120200018 S dump_base_name -000000012012beb0 T dump_combine_stats -000000012012bf10 T dump_combine_total_stats -0000000120139930 t dump_conflicts -0000000120112190 T dump_flow_info -0000000120139f80 T dump_global_regs -0000000120134e20 T dump_local_alloc -00000001201fff6c S dump_time -00000001200454e0 T dump_tree_statistics -0000000120017c20 t duplicate_decls -00000001200e2ab0 t duplicate_loop_exit_test -00000001200ce060 t dwarf_attr_name -00000001200ce5e0 t dwarf_fund_type_name -00000001201ff2c0 s dwarf_last_decl -00000001200d7200 t dwarf_tag_name -00000001200cd250 T dwarfout_begin_block -00000001200cd480 T dwarfout_begin_function -00000001200cd900 T dwarfout_define -00000001200cd300 T dwarfout_end_block -00000001200cd5c0 T dwarfout_end_epilogue -00000001200cd520 T dwarfout_end_function -00000001200caa30 T dwarfout_file_scope_decl -00000001200cc540 T dwarfout_finish -00000001200cb950 T dwarfout_init -00000001200cd3b0 T dwarfout_label -00000001200cb160 T dwarfout_line -00000001200cd7c0 T dwarfout_resume_previous_source_file -00000001200cd650 T dwarfout_start_new_source_file -00000001200cdbb0 T dwarfout_undef -00000001201ff094 s dynamic_offset -00000001200b8a30 t e113toe -00000001200b8e80 t e24toe -00000001201e9e2c D e32 -00000001200b80a0 t e53toe -00000001200b8570 t e64toe -00000001200b6c40 t eadd -00000001200b6df0 t eadd1 -00000001200b65e0 T earith -000000012013c790 t earlyclobber_operand_p -00000001200b95e0 t ecmp -00000001200b7570 t ediv -00000001200bd6a0 t edivm -00000001200bc0d0 T efixi -00000001200bc140 T efixui -00000001200bb210 t efloor -00000001201e9e08 D ehalf -00000001200bea70 t eifrac -00000001200bb5c0 t eiremain -00000001200b6a30 t eisnan -00000001200b6a10 t eisneg -00000001200bb380 t eldexp -00000001200d84f0 t element_list_attribute -000000012018e7c0 T eligible_for_annul_true -000000012018e1b0 T eligible_for_delay -00000001201ff548 s elim_reg_set -00000001201e8fc8 d elim_regs.0 -00000001201ff834 s eliminable_regset -00000001201ea050 d eliminables.0 -00000001201ea0a0 d eliminables.0 -00000001201ea688 d eliminables.0 -00000001201ea670 d eliminables.2 -0000000120095380 T eliminate_constant_term -000000012014bc10 T eliminate_regs -000000012014cd40 t eliminate_regs_in_insn -00000001201e9e38 D elog2 -00000001200bdd70 t emdnorm -00000001200b5f30 T emit -00000001200a1250 T emit_0_to_1_insn -0000000120194ba0 t emit_add -00000001200b5be0 T emit_barrier -00000001200b3010 T emit_barrier_after -00000001200b5250 T emit_barrier_before -00000001201957a0 T emit_bcnd -0000000120071840 T emit_block_move -0000000120089a50 t emit_call_1 -00000001200b5ab0 T emit_call_insn -00000001200b5190 T emit_call_insn_before -000000012006cac0 t emit_case_nodes -00000001200a1210 T emit_clr_insn -000000012009c090 T emit_cmp_insn -000000012015cec0 t emit_delay_sequence -0000000120200298 S emit_filename -000000012009c830 T emit_float_lib_cmp -00000001200a1290 T emit_indirect_jump -00000001200b5750 T emit_insn -00000001200b2ee0 T emit_insn_after -00000001200b5340 T emit_insn_after_with_line_notes -00000001200b4fc0 T emit_insn_before -00000001200b58a0 T emit_insns -00000001200b5970 T emit_insns_after -00000001200b5900 T emit_insns_before -0000000120105ac0 T emit_iv_add_mult -000000012006e580 T emit_jump -000000012006ca30 t emit_jump_if_reachable -00000001200b59f0 T emit_jump_insn -00000001200b5500 T emit_jump_insn_after -00000001200b50e0 T emit_jump_insn_before -00000001200b5b80 T emit_label -00000001200b55b0 T emit_label_after -0000000120194ef0 t emit_ldst -000000012009be10 T emit_libcall_block -0000000120088070 T emit_library_call -00000001200887a0 T emit_library_call_value -00000001200b5c50 T emit_line_note -00000001200b5690 T emit_line_note_after -00000001200b5ef0 T emit_line_note_force -0000000120200290 S emit_lineno -0000000120071c20 T emit_move_insn -0000000120071e90 T emit_move_insn_1 -0000000120191520 T emit_move_sequence -000000012009ba10 T emit_no_conflict_block -000000012006e460 T emit_nop -00000001200b5db0 T emit_note -00000001200b5610 T emit_note_after -00000001200b52c0 T emit_note_before -0000000120072360 T emit_push_insn -00000001200821d0 T emit_queue -0000000120150350 t emit_reload_insns -0000000120095df0 T emit_stack_restore -0000000120094d40 T emit_stack_save -00000001200922d0 T emit_store_flag -00000001201989a0 T emit_test -000000012019dc30 T emit_typecode_conversion -00000001200a0dc0 T emit_unop_insn -000000012010a770 T emit_unrolled_add -00000001200b6990 t emov -00000001200bd500 t emovi -00000001201e9ef8 d emtens -00000001200b7b30 t emul -00000001200bdb40 t emulm -000000012016b090 T end_final -00000001201fed28 s end_of_file -00000001201ff958 s end_of_function_label -0000000120209514 b end_of_function_needs -00000001200b6430 T end_sequence -0000000120042160 T end_temporary_allocation -00000001200bd410 t endian -00000001200b69e0 t eneg -00000001200b9ff0 t enormlz -00000001201fed70 s enum_next_value -00000001201fed78 s enum_overflow -00000001201e9e14 D eone -00000001201e9e50 D epi -00000001201ff0a8 s epilogue -00000001201ffb94 s epilogue_marked -00000001202005b0 S eqdf2_libfunc -0000000120200458 S eqhf2_libfunc -00000001202006b0 S eqsf2_libfunc -00000001202005e0 S eqtf2_libfunc -0000000120197ba0 T equality_op -00000001200f16c0 t equiv_constant -00000001201ff778 s equiv_mem -00000001201ff780 s equiv_mem_modified -0000000120205f5c b equot -00000001202003f0 S eqxf2_libfunc -00000001200b6750 T ereal_atof -00000001200bd250 T ereal_cmp -00000001200bd340 T ereal_from_double -00000001200bd2f0 T ereal_from_float -00000001200bc1b0 T ereal_from_int -00000001200bc7c0 T ereal_from_uint -00000001200bd2b0 T ereal_isneg -00000001200bcd90 T ereal_ldexp -00000001200bc080 T ereal_negate -00000001200bd200 T ereal_to_decimal -00000001200b6840 T ereal_to_int -00000001201e9fb8 d ermsg -0000000120030560 T error -00000001200301d0 T error_for_asm -0000000120021a20 T error_init -00000001201ffd48 S error_mark_node -000000012002ffa0 T error_with_decl -000000012002fcf0 T error_with_file_and_line -00000001201fef44 S errorcount -00000001200b9cc0 t eshift -00000001201ff240 s esqinited -00000001201e9e44 D esqrt2 -000000012006c220 t estimate_case_costs -00000001200b6a90 t esub -00000001200bd090 T etardouble -00000001200bcf80 T etarldouble -00000001200bd0f0 T etarsingle -00000001200bce70 T etartdouble -00000001201e9e5c d etens -00000001200bf010 t etoasc -00000001200b92e0 t etoe53 -00000001200bba10 T etrunci -00000001200bbd60 T etruncui -00000001201e9e20 D etwo -00000001200b9750 t euifrac -000000012004bf50 t eval_subst -0000000120197a00 T even_relop -00000001201fec98 g everything.1 -00000001201fec9c g everything.2 -00000001201feca0 g everything.5 -0000000120038c80 T exact_log2_wide -00000001200e9450 t exp_equiv_p -000000012009ad30 T expand_abs -00000001200921b0 T expand_and -0000000120068e40 T expand_anon_union_decl -000000012006e940 T expand_asm -0000000120064330 T expand_asm_operands -0000000120072c90 T expand_assignment -00000001200962f0 T expand_binop -0000000120196d00 T expand_block_move -000000012007bde0 t expand_builtin -000000012007d3f0 t expand_builtin_apply -000000012007d180 t expand_builtin_apply_args -000000012007dad0 t expand_builtin_return -0000000120082930 T expand_builtin_return_addr -0000000120085050 T expand_call -00000001200690e0 t expand_cleanups -000000012007e6e0 T expand_cleanups_to -000000012009b0c0 T expand_complex_abs -000000012011e640 t expand_compound_operation -000000012006e5f0 T expand_computed_goto -000000012006eed0 T expand_continue_loop -0000000120093170 T expand_dec -0000000120068320 T expand_decl -000000012006f3f0 T expand_decl_cleanup -0000000120068b10 T expand_decl_init -000000012008eaa0 T expand_divmod -000000012006ed50 T expand_elseif -0000000120067850 T expand_end_bindings -000000012006acc0 T expand_end_case -0000000120069630 T expand_end_case_dummy -00000001200658d0 T expand_end_cond -0000000120065d70 T expand_end_loop -00000001200654b0 T expand_end_stmt_expr -000000012006ef30 T expand_exit_loop -000000012006ef90 T expand_exit_loop_if_false -000000012006f160 T expand_exit_something -0000000120075360 T expand_expr -0000000120064f60 T expand_expr_stmt -000000012011e960 t expand_field_assignment -000000012009ddb0 T expand_fix -0000000120063eb0 t expand_fixup -000000012006e920 T expand_fixups -000000012009cf70 T expand_float -00000001200607d0 T expand_function_end -000000012005ff70 T expand_function_start -00000001200639c0 T expand_goto -0000000120063ce0 t expand_goto_internal -00000001200930e0 T expand_inc -000000012007dce0 t expand_increment -00000001200dbc40 T expand_inline_function -000000012006e6a0 T expand_label -000000012006ee30 T expand_loop_continue_here -0000000120063660 T expand_main_function -000000012008da30 T expand_mult -00000001200933d0 T expand_mult_add -000000012008e3a0 T expand_mult_highpart -0000000120093240 T expand_mult_highpart_adjust -000000012006f1d0 T expand_null_return -00000001201374d0 t expand_preferences -0000000120066330 T expand_return -000000012008ce50 T expand_shift -0000000120067600 T expand_start_bindings -0000000120069210 T expand_start_case -0000000120069500 T expand_start_case_dummy -0000000120065700 T expand_start_cond -000000012006ec10 T expand_start_else -000000012006eb00 T expand_start_elseif -0000000120065b90 T expand_start_loop -000000012006edd0 T expand_start_loop_continue_elsewhere -000000012006ea10 T expand_start_stmt_expr -000000012002f4a0 t expand_stmt_with_iterators_1 -00000001200998a0 T expand_twoval_binop -0000000120099f20 T expand_unop -00000001201fed54 S explicit_flag_signed_bitfields -0000000120095510 T expr_size -00000001202002a8 S expr_stmts_for_value -00000001202000b8 S expression_obstack -00000001202003f8 S extenddftf2_libfunc -0000000120200320 S extenddfxf2_libfunc -000000012012bd50 T extended_count -0000000120200658 S extendsfdf2_libfunc -0000000120200418 S extendsftf2_libfunc -0000000120200488 S extendsfxf2_libfunc -000000012020fce0 B extendtab -00000001201fefc4 S extra_warnings -000000012008b320 T extract_bit_field -000000012008c510 t extract_fixed_bit_field -000000012012c9c0 t extract_left_shift -000000012008cb50 t extract_split_bit_field -0000000120205f50 B ezero -00000001201e7a08 D f_options -00000001201ea030 D factors -00000001201ffba8 s failure_errno.1 -00000001201ff2b8 s fake_containing_scope -0000000120038b70 T fancy_abort -0000000120030830 T fatal -000000012002f9d0 T fatal_insn -0000000120038790 T fatal_insn_not_found -0000000120038740 T fatal_io_error -0000000120200688 S ffs_optab -00000001200d9980 t field_byte_offset -0000000120018f00 t field_decl_cmp -00000001201ff270 s filename_table -000000012015b4b0 t fill_eager_delay_slots -0000000120159ed0 t fill_simple_delay_slots -000000012015e3a0 t fill_slots_from_thread -000000012016ca70 T final -000000012010bd30 T final_biv_value -000000012016f890 T final_end_function -000000012010c1d0 T final_giv_value -000000012016cdb0 T final_scan_insn -00000001202009c0 S final_sequence -000000012016f720 T final_start_function -00000001201ffed8 S final_time -00000001201ff264 s finalizing -00000001201003a0 t find_and_verify_loops -000000012010df00 t find_basic_blocks -00000001200f5950 t find_best_addr -00000001200f67a0 t find_comparison_args -0000000120173f60 t find_constant_term_loc -00000001200e3280 t find_cross_jump -000000012013c220 t find_dummy_reload -000000012015cc40 t find_end_label -0000000120143fa0 T find_equiv_reg -0000000120134400 t find_free_reg -0000000120061c20 T find_function_data -0000000120144fc0 t find_inc_amount -00000001200b03c0 T find_last_value -000000012006f5c0 T find_loop_tree_blocks -0000000120103610 t find_mem_givs -0000000120093b30 T find_next_ref -0000000120137ba0 t find_reg -00000001200ae880 T find_reg_fusage -00000001200b09c0 T find_reg_note -00000001200ae9e0 T find_regno_fusage -00000001200b0a20 T find_regno_note -000000012013d610 T find_reloads -0000000120141490 t find_reloads_address -0000000120142720 t find_reloads_address_1 -0000000120143360 t find_reloads_address_part -0000000120140ed0 t find_reloads_toplev -0000000120145e60 T find_replacement -0000000120173060 T find_single_use -0000000120170dc0 t find_single_use_1 -0000000120107b10 t find_single_use_in_loop -0000000120117900 t find_split_point -000000012010aff0 t find_splittable_givs -000000012010a800 t find_splittable_regs -0000000120164a10 t find_symbolic_term -0000000120111f40 t find_use_as_address -0000000120010df0 T finish_decl -0000000120014560 T finish_enum -0000000120006fb0 T finish_file -0000000120015fe0 T finish_function -0000000120016430 T finish_incomplete_decl -00000001200257e0 T finish_init -0000000120013a60 T finish_struct -0000000120200010 S finput -00000001202006d8 S first_global_object_name -00000001201ff1e8 s first_insn -00000001201ff210 s first_label_num -00000001201ff190 s first_pool -000000012005ed80 T fix_lexical_addr -0000000120130180 T fix_register -00000001202003b0 S fixdfdi_libfunc -0000000120200370 S fixdfsi_libfunc -00000001202002f8 S fixdfti_libfunc -0000000120200920 S fixed_reg_set -0000000120213bec B fixed_regs -0000000120200468 S fixsfdi_libfunc -00000001202005f0 S fixsfsi_libfunc -0000000120200368 S fixsfti_libfunc -000000012020c850 B fixtab -0000000120200400 S fixtfdi_libfunc -00000001202003a0 S fixtfsi_libfunc -00000001202004c0 S fixtfti_libfunc -0000000120211728 B fixtrunctab -00000001202005c8 S fixunsdfdi_libfunc -00000001202004e8 S fixunsdfsi_libfunc -00000001202005a0 S fixunsdfti_libfunc -0000000120200378 S fixunssfdi_libfunc -0000000120200448 S fixunssfsi_libfunc -0000000120200328 S fixunssfti_libfunc -00000001202003c8 S fixunstfdi_libfunc -00000001202006b8 S fixunstfsi_libfunc -00000001202003b8 S fixunstfti_libfunc -0000000120200310 S fixunsxfdi_libfunc -00000001202004f8 S fixunsxfsi_libfunc -0000000120200650 S fixunsxfti_libfunc -000000012006f820 t fixup_gotos -000000012005bd20 t fixup_memory_subreg -00000001200493d0 T fixup_signed_type -000000012005c060 t fixup_stack_1 -00000001200494e0 T fixup_unsigned_type -000000012005aaa0 t fixup_var_refs -000000012005afa0 t fixup_var_refs_1 -000000012005ac10 t fixup_var_refs_insns -0000000120200318 S fixxfdi_libfunc -0000000120200630 S fixxfsi_libfunc -0000000120200490 S fixxfti_libfunc -00000001201fed50 S flag_allow_single_precision -00000001201fef74 S flag_caller_saves -00000001201ffc40 S flag_cond_mismatch -00000001201fff28 S flag_cse_follow_jumps -00000001201fff98 S flag_cse_skip_blocks -00000001201fef84 S flag_defer_pop -0000000120200024 S flag_delayed_branch -00000001201fff88 S flag_expensive_optimizations -00000001201fef9c S flag_fast_math -00000001201fef88 S flag_float_store -00000001201fef80 S flag_force_addr -00000001201fef7c S flag_force_mem -00000001201fefa4 S flag_gen_aux_info -00000001201fec24 G flag_gnu_linker -00000001201fefb4 S flag_inhibit_size_directive -00000001201ffef8 S flag_inline_functions -00000001201ffecc S flag_keep_inline_functions -00000001201fec78 g flag_minimal_debug -00000001201ffe50 S flag_no_asm -00000001201ffc98 S flag_no_builtin -0000000120200008 S flag_no_common -00000001201fef90 S flag_no_function_cse -00000001201fed58 S flag_no_ident -00000001201fff68 S flag_no_inline -00000001201ffc94 S flag_no_nonansi_builtin -00000001201fef98 S flag_no_peephole -00000001201fef94 S flag_omit_frame_pointer -00000001201fefbc S flag_pack_struct -00000001201fef78 S flag_pcc_struct_return -00000001201fefa8 S flag_pedantic_errors -00000001201fffdc S flag_pic -00000001201ffec8 S flag_pretend_float -00000001201fef30 S flag_print_asm_name -00000001201fefdc s flag_rerun_cse_after_loop -00000001201fefac S flag_schedule_insns -00000001201fefb0 S flag_schedule_insns_after_reload -0000000120200030 S flag_shared_data -00000001201ffe20 S flag_short_double -00000001201ffee8 S flag_short_enums -00000001201fffb8 S flag_short_temps -00000001201fec0c G flag_signed_bitfields -00000001201fff48 S flag_signed_char -00000001201fef8c S flag_strength_reduce -00000001201fefa0 S flag_syntax_only -00000001201fff08 S flag_thread_jumps -00000001201ffdf8 S flag_traditional -00000001201fff94 S flag_unroll_all_loops -00000001201fec1c G flag_unroll_loops -00000001201fefb8 S flag_verbose_asm -00000001201fff60 S flag_volatile -0000000120200068 S flag_volatile_global -00000001201fec20 G flag_writable_strings -00000001202033e8 b float_error -00000001201ffd88 S float_ftype_float -00000001201fff0c S float_handled -000000012020ba18 B float_handler -00000001200394c0 t float_signal -00000001201ffdd0 S float_type_node -0000000120200648 S floatdidf_libfunc -00000001202004b8 S floatdisf_libfunc -0000000120200638 S floatditf_libfunc -0000000120200668 S floatdixf_libfunc -0000000120200380 S floatsidf_libfunc -0000000120200528 S floatsisf_libfunc -00000001202004a0 S floatsitf_libfunc -00000001202003e0 S floatsixf_libfunc -000000012020e298 B floattab -00000001202003a8 S floattidf_libfunc -0000000120200530 S floattisf_libfunc -00000001202005f8 S floattitf_libfunc -0000000120200338 S floattixf_libfunc -0000000120200438 S flodiv_optab -0000000120038ce0 T floor_log2_wide -000000012010db80 T flow_analysis -000000012010eea0 t flow_delete_insn -00000001201fef10 S flow_dump -0000000120200048 S flow_dump_file -0000000120200040 S flow_time -0000000120164f30 t flush_pending_lists -000000012004c5f0 T fold -0000000120056820 t fold_convert -00000001200ee250 t fold_rtx -0000000120057700 t fold_truthop -00000001200e3cc0 T follow_jumps -000000012020099c S forbidden_regs -00000001200a69e0 T force_const_mem -0000000120049f20 T force_fit_type -00000001200fe2a0 t force_movables -00000001200b5f10 T force_next_line_note -0000000120095a00 T force_not_mem -0000000120074c00 T force_operand -0000000120094bf0 T force_reg -0000000120120540 t force_to_mode -00000001202007f8 S forced_labels -000000012014e490 t forget_old_reloads_1 -000000012000b7d0 T forget_protocol_qualifiers -0000000120145b80 T form_sum -000000012018f1c0 t fpadd100_unit_blockage -000000012018b860 T fpadd100_unit_blockage_range -000000012018b5e0 T fpadd100_unit_ready_cost -000000012018ef60 t fpadd110_unit_blockage -000000012018b460 T fpadd110_unit_blockage_range -000000012018ec40 T fpadd110_unit_ready_cost -000000012018fa70 t fpmul100_unit_blockage -000000012018bb20 T fpmul100_unit_blockage_range -000000012018ba30 T fpmul100_unit_ready_cost -000000012018ed00 T fpmul110_unit_ready_cost -0000000120001a80 t frame_dummy -00000001201ffb88 s frame_laid_out -00000001202001d8 S frame_offset -00000001202009ac S frame_pointer_needed -00000001202007c0 S frame_pointer_rtx -00000001201ffb8c s frame_size -00000001201fedd8 s free_binding_level -00000001200e7f30 t free_element -00000001201ff420 s free_element_chain -00000001201688c0 t free_pending_lists -0000000120062020 T free_temp_slots -0000000120062090 T free_temps_for_rtl_expr -00000001201ff27c s ft_entries -00000001201ff278 s ft_entries_allocated -0000000120200498 S ftrunc_optab -0000000120200284 S function_call_count -00000001200da320 T function_cannot_inline_p -00000001201ff160 s function_defined -00000001201feed0 s function_format_list -00000001202000f0 S function_maybepermanent_obstack -00000001202000c8 S function_obstack -00000001200a8830 T function_section -00000001200199a0 t function_types_compatible_p -00000001201eb100 D function_units -000000012018ced0 T function_units_used -00000001200ce960 t fundamental_type_code -00000001201fff9c S g_switch_set -00000001201ffeb0 S g_switch_value -000000012003bd90 T gcc_obstack_init -0000000120200360 S gedf2_libfunc -00000001202003d0 S gehf2_libfunc -000000012018a050 T gen_absdf2 -000000012018a0c0 T gen_abssf2 -00000001200a1330 T gen_add2_insn -0000000120188dc0 T gen_adddf3 -0000000120188f50 T gen_adddi3 -0000000120188ee0 T gen_addsf3 -0000000120188d50 T gen_addsi3 -00000001201898e0 T gen_anddi3 -00000001201815c0 T gen_andsi3 -0000000120181aa0 T gen_ashlsi3 -0000000120181f00 T gen_ashrsi3 -0000000120028650 T gen_aux_info_record -0000000120185ee0 T gen_bcnd -0000000120186100 T gen_beq -0000000120186a80 T gen_bge -0000000120186bd0 T gen_bgeu -00000001201863a0 T gen_bgt -00000001201864f0 T gen_bgtu -0000000120126bf0 t gen_binary -0000000120186df0 T gen_ble -0000000120186f40 T gen_bleu -000000012018a630 T gen_blockage -0000000120186710 T gen_blt -0000000120186860 T gen_bltu -0000000120186250 T gen_bne -0000000120185ff0 T gen_bxx -000000012018a130 T gen_call -0000000120187a30 T gen_call_block_move -0000000120187dc0 T gen_call_movstrsi_loop -000000012018a2e0 T gen_call_value -0000000120182830 T gen_casesi -0000000120182fc0 T gen_casesi_enter -0000000120182de0 T gen_casesi_jump -0000000120185360 T gen_cmpdf -0000000120185260 T gen_cmpsf -0000000120185120 T gen_cmpsi -0000000120027d40 t gen_decl -000000012018a6d0 T gen_decrement_and_branch_until_zero -0000000120181340 T gen_divdf3 -0000000120189870 T gen_divsf3 -000000012017f050 T gen_divsi3 -0000000120183160 T gen_dummy -000000012018a590 T gen_epilogue -00000001200a15e0 T gen_extend_insn -0000000120188720 T gen_extendhisi2 -0000000120188850 T gen_extendqihi2 -0000000120188980 T gen_extendqisi2 -0000000120188ab0 T gen_extendsfdf2 -00000001201885a0 T gen_extendsidi2 -0000000120189e90 T gen_extv -0000000120189f00 T gen_extzv -0000000120189d60 T gen_ffssi2 -0000000120188c70 T gen_fix_truncdfsi2 -0000000120188ce0 T gen_fix_truncsfsi2 -0000000120188b90 T gen_floatsidf2 -0000000120188c00 T gen_floatsisf2 -0000000120028c20 t gen_formal_list_for_func_def -00000001200287b0 t gen_formal_list_for_type -00000001200b1bf0 T gen_highpart -00000001200b3e60 T gen_imagpart -000000012018a690 T gen_indirect_jump -00000001200b43f0 T gen_inline_header_rtx -0000000120189950 T gen_iordi3 -0000000120181780 T gen_iorsi3 -0000000120183100 T gen_jump -00000001200b4360 T gen_label_rtx -0000000120187160 T gen_locate1 -0000000120187220 T gen_locate2 -00000001200b4000 T gen_lowpart -00000001200b14c0 T gen_lowpart_common -00000001201265a0 t gen_lowpart_for_combine -00000001200f1980 T gen_lowpart_if_possible -0000000120182360 T gen_lshrsi3 -00000001201833f0 T gen_m88k_rcs_id -00000001201877a0 T gen_movdf -00000001201876d0 T gen_movdi -000000012009cbd0 T gen_move_insn -0000000120187530 T gen_movhi -0000000120187600 T gen_movqi -0000000120187870 T gen_movsf -0000000120187370 T gen_movsi -0000000120187940 T gen_movstrsi -00000001201893a0 T gen_muldf3 -00000001201894c0 T gen_mulsf3 -0000000120189330 T gen_mulsi3 -0000000120189f70 T gen_negdf2 -0000000120189fe0 T gen_negsf2 -00000001201827c0 T gen_negsi2 -000000012018a4c0 T gen_nop -0000000120189aa0 T gen_one_cmpldi2 -0000000120189a30 T gen_one_cmplsi2 -000000012018a520 T gen_prologue -00000001200828f0 T gen_push_operand -00000001200b3e10 T gen_realpart -00000001200b1290 T gen_reg_rtx -0000000120151de0 T gen_reload -0000000120187440 T gen_reload_insi -000000012018a4e0 T gen_return -0000000120189b70 T gen_rotlsi3 -0000000120189cf0 T gen_rotrsi3 -00000001200b1100 T gen_rtvec -00000001200b1210 T gen_rtvec_v -00000001200b0e00 T gen_rtx -00000001201269a0 t gen_rtx_combine -00000001201854a0 T gen_seq -00000001200b64a0 T gen_sequence -0000000120185920 T gen_sge -00000001201859e0 T gen_sgeu -0000000120185620 T gen_sgt -00000001201856e0 T gen_sgtu -0000000120185aa0 T gen_sle -0000000120185b60 T gen_sleu -00000001201857a0 T gen_slt -0000000120185860 T gen_sltu -0000000120185560 T gen_sne -0000000120183430 T gen_split_1 -000000012017eed0 T gen_split_125 -000000012017e110 T gen_split_13 -000000012017e390 T gen_split_14 -000000012017e5a0 T gen_split_15 -0000000120184140 T gen_split_16 -00000001201842e0 T gen_split_17 -0000000120184450 T gen_split_18 -000000012017e7f0 T gen_split_19 -0000000120183610 T gen_split_2 -000000012017ea70 T gen_split_20 -000000012017ec80 T gen_split_21 -00000001201845e0 T gen_split_22 -0000000120184780 T gen_split_23 -00000001201848f0 T gen_split_24 -00000001201837f0 T gen_split_3 -0000000120184a80 T gen_split_31 -0000000120184bb0 T gen_split_33 -0000000120184d00 T gen_split_35 -0000000120184e30 T gen_split_37 -00000001201839d0 T gen_split_4 -0000000120183bb0 T gen_split_5 -0000000120183d90 T gen_split_6 -0000000120183f70 T gen_split_7 -0000000120185c20 T gen_split_75 -0000000120185d70 T gen_split_80 -00000001200a1470 T gen_sub2_insn -00000001201890b0 T gen_subdf3 -0000000120189240 T gen_subdi3 -00000001201891d0 T gen_subsf3 -0000000120189040 T gen_subsi3 -0000000120189b10 T gen_tbnd -0000000120189570 T gen_tcnd_divide_by_zero -0000000120184f80 T gen_test -0000000120189530 T gen_trap_divide_by_zero -0000000120188b20 T gen_truncdfsf2 -0000000120026a00 t gen_type -0000000120180e90 T gen_udivsi3 -0000000120126f10 t gen_unary -00000001201899c0 T gen_xordi3 -0000000120181920 T gen_xorsi3 -00000001201881f0 T gen_zero_extendhisi2 -0000000120188320 T gen_zero_extendqihi2 -0000000120188450 T gen_zero_extendqisi2 -00000001201049d0 t general_induction_var -0000000120171140 T general_operand -0000000120200428 S gesf2_libfunc -000000012018ee20 T get_attr_cpu -000000012018d8b0 T get_attr_fpu -000000012016be50 T get_attr_length -000000012018da20 T get_attr_type -0000000120048ce0 T get_best_mode -0000000120157380 t get_branch_condition -0000000120107100 T get_condition -0000000120107760 T get_condition_for_loop -000000012002c580 T get_directive_line -0000000120041c40 T get_file_function_name -0000000120062d80 T get_first_block_beg -00000001200b3df0 T get_first_label_num -0000000120062d30 T get_first_nonparm_insn -0000000120061cb0 T get_frame_size -000000012003d8a0 T get_identifier -00000001200746b0 T get_inner_reference -00000001200745e0 t get_inner_unaligned_p -00000001200b4830 T get_insns -00000001200afcb0 T get_integer_term -0000000120156dd0 t get_jump_flags -00000001200e39a0 T get_label_after -00000001200e3910 T get_label_before -00000001200b4850 T get_last_insn -00000001200b48b0 T get_last_insn_anywhere -00000001201299d0 t get_last_value -00000001201297d0 t get_last_value_validate -00000001200b4900 T get_max_uid -0000000120041960 T get_narrower -0000000120013760 T get_parm_info -0000000120048e70 T get_pending_sizes -00000001200842e0 t get_pointer_alignment -00000001200a9760 T get_pool_constant -00000001200a9830 T get_pool_mode -00000001200a9900 T get_pool_offset -00000001200a99d0 T get_pool_size -00000001200afd30 T get_related_value -00000001200384e0 T get_run_time -0000000120041e00 T get_set_constructor_bits -0000000120041fc0 T get_set_constructor_bytes -0000000120021790 t get_spelling -00000001200416b0 T get_unwidened -0000000120016e20 T getdecls -0000000120200580 S getf2_libfunc -0000000120198ed0 T getpwd -0000000120016e40 T gettags -0000000120200678 S gexf2_libfunc -0000000120135fa0 T global_alloc -0000000120200090 S global_alloc_time -00000001201fede0 s global_binding_level -00000001200164d0 T global_bindings_p -0000000120136f90 t global_conflicts -00000001202007e8 S global_const_equiv_map -00000001202007f0 S global_const_equiv_map_size -00000001201fef20 S global_reg_dump -0000000120200078 S global_reg_dump_file -0000000120213d0c B global_regs -0000000120130270 T globalize_reg -00000001201ff0e0 s goto_fixup_chain -0000000120011750 t grokdeclarator -0000000120017710 T grokfield -0000000120013550 t grokparms -0000000120016ee0 T groktypename -0000000120016f20 T groktypename_in_parm_context -000000012006c550 t group_case_nodes -0000000120200340 S gtdf2_libfunc -0000000120200670 S gthf2_libfunc -0000000120200500 S gtsf2_libfunc -0000000120200460 S gttf2_libfunc -0000000120200598 S gtxf2_libfunc -000000012000c110 T handle_pragma_token -00000001200a99f0 T handle_pragma_weak -0000000120008c80 T handle_sysv_pragma -00000001202007e0 S hard_frame_pointer_rtx -0000000120095f70 T hard_function_value -0000000120096090 T hard_libcall_value -00000001201ff7d0 s hard_reg_conflicts -00000001201ff7e0 s hard_reg_copy_preferences -00000001201ff7e8 s hard_reg_full_preferences -00000001201ff7d8 s hard_reg_preferences -000000012013c7e0 t hard_reg_set_here_p -0000000120152d20 t hard_reg_use_compare -00000001201ff3d8 s hard_regs_in_table -00000001201ff7c4 s hard_regs_live -00000001201ff938 s hard_regs_live -00000001201ff85c s hard_regs_live_known -00000001201ff948 s hard_regs_need_restore -00000001201ff940 s hard_regs_saved -00000001201ff418 s hash_arg_in_memory -00000001201ff41c s hash_arg_in_struct -0000000120201258 b hash_table -0000000120209db8 b hashtab -00000001200a1440 T have_add2_insn -00000001200a1580 T have_sub2_insn -00000001201ff244 s have_used_extensions -00000001201ffae8 s high_block_linenum -00000001201ffaec s high_function_linenum -00000001201ff120 s highest_outgoing_arg_in_use -00000001201ff6a8 s highest_regno_in_uid_map -00000001201ffff0 S id_clash_len -00000001201feff8 S id_string_size -000000012005f2a0 T identify_blocks -00000001201fecf8 s if_stmt_file -00000001201fed00 s if_stmt_line -00000001201219a0 t if_then_else_cond -00000001200fe1d0 t ignore_some_movables -00000001200a4ad0 T immed_double_const -00000001200a9420 T immed_real_const -00000001200a4d30 T immed_real_const_1 -00000001201732d0 T immediate_operand -0000000120200148 S immediate_size_expand -00000001200169f0 T implicitly_declare -00000001201ff08c s in_arg_offset -00000001201ff168 s in_named_name -00000001201ff308 s in_nonparm_insns -00000001200165c0 T in_parm_level_p -00000001201ff148 s in_section -00000001200b6480 T in_sequence_p -00000001201fef68 S in_system_header -00000001200a86e0 T in_text_section -0000000120152660 t inc_for_reload -00000001201fef58 S incomplete_decl_finalize_hook -0000000120018f40 T incomplete_type_error -00000001201ff1b4 s indent.0 -0000000120047830 T indent_to -0000000120044df0 T index_type_equal -0000000120173810 T indirect_operand -0000000120200999 S indirect_symref_ok -00000001200af270 T inequality_comparisons_p -00000001202002ec S inhibit_defer_pop -00000001201fefc0 S inhibit_warnings -00000001201ff348 s init.0 -00000001201ff34c s init.3 -00000001201ff350 s init.4 -00000001201641d0 T init_alias_analysis -00000001201740b0 T init_all_optabs -00000001201549c0 T init_caller_save -00000001200a9560 T init_const_rtx_hash_table -000000012000e5d0 T init_decl_processing -00000001200b35a0 T init_emit -00000001200b3800 T init_emit_once -0000000120089c70 T init_expmed -0000000120082040 T init_expr -000000012006ff10 T init_expr_once -000000012016f630 T init_final -000000012002cb10 T init_function_format_info -000000012005f5e0 T init_function_start -000000012016f700 T init_insn_lengths -000000012002e8e0 T init_iterators -0000000120007110 T init_lex -00000001200a1640 t init_libfuncs -0000000120107800 T init_loop -000000012018a8b0 T init_mov_optab -0000000120084200 t init_noncopied_parts -000000012003b990 T init_obstacks -000000012009ecb0 T init_optabs -0000000120082a70 T init_pending_stack_adjust -0000000120172e30 T init_recog -0000000120172e10 T init_recog_no_volatile -0000000120114280 t init_reg_last_arrays -0000000120109a30 t init_reg_map -0000000120130b10 t init_reg_modes -000000012012d1e0 T init_reg_sets -00000001201307a0 t init_reg_sets_1 -000000012012fec0 T init_regs -000000012010ff40 t init_regset_vector -0000000120147440 T init_reload -00000001200ac2b0 T init_rtl -0000000120156100 T init_save_areas -000000012006e240 T init_stmt -000000012006e270 T init_stmt_for_function -00000001200425f0 T init_tree_codes -00000001201ea0f8 d initial_call_used_regs -00000001201ea0b8 d initial_fixed_regs -000000012010d3a0 t initial_reg_note_copy -00000001201ff028 s initial_trampoline.1 -00000001201ffea0 S initialization_message -00000001200dfa70 t initialize_for_inline -00000001201ff26c s initialized.2 -00000001200213c0 T initializer_constant_valid_p -00000001201ffe90 S initializer_stack -0000000120200198 S inline_function_decl -0000000120200108 S inline_obstacks -00000001201fff20 S input_file_stack -000000012020000c S input_file_stack_tick -00000001201fffc0 S input_filename -00000001200e7f50 t insert -00000001200167b0 T insert_block -00000001200e7ab0 t insert_regs -0000000120155d20 t insert_save_restore -00000001202009b8 S insn_addresses -00000001201ff9f0 s insn_blockage -0000000120164cf0 t insn_cost -00000001201ff9e0 s insn_costs -00000001201ffac8 s insn_counter -00000001202009b4 S insn_current_address -000000012018ea90 T insn_current_length -00000001201109b0 t insn_dead_p -000000012018a8c0 T insn_default_length -000000012017c590 T insn_extract -00000001201bf238 R insn_gen_function -00000001201ffb28 s insn_lengths -00000001201ff9d0 s insn_luid -00000001201ff2d8 s insn_map -00000001201cec10 R insn_n_alternatives -00000001201bff7c R insn_n_dups -00000001201bfb10 R insn_n_operands -00000001201ea800 D insn_name -00000001201fecc8 G insn_name_ptr -00000001201ffb08 s insn_noperands -00000001201c03e8 R insn_operand_constraint -00000001201c5c58 R insn_operand_mode -00000001201c93a0 R insn_operand_predicate -00000001201c8890 R insn_operand_strict_low -00000001201be960 R insn_outfun -00000001201ff9d8 s insn_priority -0000000120209570 b insn_queue -00000001201ff9f8 s insn_ref_count -00000001201be088 R insn_template -00000001201ffa38 s insn_tick -00000001201ff9e8 s insn_units -000000012018eb20 T insn_variable_length_p -0000000120063780 t instantiate_decls_1 -00000001200621a0 T instantiate_virtual_regs -000000012005c860 t instantiate_virtual_regs_1 -0000000120197760 T int32_operand -0000000120197730 T int5_operand -00000001201ffcf8 S intDI_type_node -00000001201ffd08 S intHI_type_node -00000001201ffc78 S intQI_type_node -00000001201ffcd8 S intSI_type_node -00000001201ffdb0 S int_array_type_node -0000000120045270 T int_fits_type_p -00000001201ffe08 S int_ftype_cptr_cptr_sizet -00000001201ffd30 S int_ftype_int -00000001201ffca8 S int_ftype_ptr_ptr_int -00000001201ffde0 S int_ftype_string_string -00000001201ea238 d int_reg_class_contents -0000000120043a30 T int_size_in_bytes -0000000120042cf0 T integer_all_onesp -0000000120196960 T integer_ok_for_set -00000001201ffd58 S integer_one_node -0000000120042b90 T integer_onep -0000000120042ef0 T integer_pow2p -00000001201ffe80 S integer_type_node -00000001201ffd68 S integer_zero_node -0000000120042ac0 T integer_zerop -00000001200dd810 t integrate_decl_tree -00000001200dd710 t integrate_parm_decls -00000001201ffefc S integration_time -00000001200387c0 T interim_eh -0000000120200088 S interim_eh_hook -0000000120025d50 t internal_build_compound_expr -00000001200e87e0 t invalidate -00000001200f5710 t invalidate_for_call -00000001200f2dd0 t invalidate_from_clobbers -00000001200fb1e0 t invalidate_skipped_set -0000000120100fe0 T invariant_p -00000001200e4a60 T invert_exp -00000001200e6f60 T invert_jump -000000012004c250 T invert_truthvalue -0000000120200538 S ior_optab -0000000120044300 T is_attribute_p -0000000120006eb0 T is_class_name -000000012000b660 T is_reserved_word -00000001201ffea8 S iter_stack -000000012010d480 t iteration_info -000000012002ef90 T iterator_expand -000000012002ee60 T iterator_for_loop_end -000000012002ed40 T iterator_for_loop_start -00000001201feee8 s ixp_firstobj -0000000120201150 b ixp_obstack -00000001201fef28 S jump2_opt_dump -00000001201fffc8 S jump2_opt_dump_file -00000001200e3a30 t jump_back_p -00000001201ff318 s jump_chain -00000001201fef00 S jump_opt_dump -00000001201fffb0 S jump_opt_dump_file -00000001200e0140 T jump_optimize -0000000120200070 S jump_time -000000012007e7c0 T jumpif -000000012007e790 T jumpifnot -00000001201ffb38 s junk -00000001201fedec s keep_next_if_subblocks -00000001200164f0 T keep_next_level -00000001201fede8 s keep_next_level_flag -0000000120016510 T kept_level_p -00000001201222b0 t known_cond -00000001202034f8 b label.4 -00000001201ff0f8 s label_counter.3 -00000001201fedf0 s label_level_chain -00000001201ff2d0 s label_map -00000001201fec50 g label_num -000000012006e510 T label_rtx -00000001201ff628 s label_tick -00000001201ff14c s labelno.1 -00000001201ff150 s labelno.2 -0000000120200a30 S labelrefs -0000000120200a38 S labels -0000000120100f60 t labels_in_range_p -0000000120006de0 T lang_decode_option -00000001201fffa0 S lang_expand_expr -0000000120006e60 T lang_finish -0000000120006e70 T lang_identify -0000000120006e10 T lang_init -00000001201e7db0 D lang_options -00000001201fec00 G language_string -00000001201fff5c S larger_than_size -00000001201ffb78 s last_addr.2 -00000001202006d0 S last_assemble_variable_decl -00000001201ff0c8 s last_block_end_note -00000001201ff5d4 s last_call_cuid -00000001201ff558 s last_call_suid -000000012006f4d0 T last_cleanup_this_contour -00000001201fefd0 s last_error_function -00000001201fefec s last_error_tick -00000001201ff0b8 s last_expr_type -00000001201ff0c0 s last_expr_value -00000001201ff208 s last_filename -00000001201ff288 s last_filename -00000001201ffaf0 s last_filename -00000001201ffa98 s last_function_call -00000001201fed88 s last_function_parm_tags -00000001201fed80 s last_function_parms -00000001201ffac0 s last_ignored_compare -00000001201ff1f0 s last_insn -00000001201ff430 s last_jump_equiv_class -00000001201ff214 s last_label_num -00000001201ff268 s last_line_entry_num.0 -00000001201ff200 s last_linenum -00000001201ffae4 s last_linenum -00000001201ff540 s last_mem_set -00000001201ff048 s last_parm_insn -00000001201ffa90 s last_pending_memory_flush -00000001201ff198 s last_pool -00000001201ffaa8 s last_scheduled_insn -00000001201ff8ac s last_spill_reg -0000000120106ed0 t last_use_this_basic_block -00000001201ffbf0 S lastiddecl -00000001200144f0 t layout_array_type -00000001200478c0 T layout_decl -00000001200495d0 t layout_record -0000000120047db0 T layout_type -0000000120049bc0 t layout_union -00000001201ffe00 S ldouble_ftype_ldouble -00000001201ea470 d leaf.0 -00000001202009c8 S leaf_function -000000012016fa00 T leaf_function_p -0000000120200480 S ledf2_libfunc -0000000120191870 T legitimize_address -0000000120197110 T legitimize_operand -0000000120200330 S lehf2_libfunc -00000001202005c0 S lesf2_libfunc -0000000120200560 S letf2_libfunc -00000001202003d8 S lexf2_libfunc -00000001200fe070 t libcall_benefit -0000000120110c60 t libcall_dead_p -00000001200fdec0 t libcall_other_reg -000000012010eec0 t life_analysis -00000001201ffa00 s line_note -00000001201ffb20 s line_note_exists -00000001201ffa08 s line_note_head -00000001201feff0 s line_position -0000000120200094 S lineno -00000001200435d0 T list_length -00000001200436d0 T listify -0000000120130d90 T local_alloc -00000001201fff8c S local_alloc_time -00000001201fef1c S local_reg_dump -00000001201ffeb8 S local_reg_dump_file -0000000120206f90 b local_reg_live_length -0000000120206e90 b local_reg_n_refs -00000001202001e0 S local_vars_size -000000012005e850 T locate_and_pad_parm -00000001200d9aa0 t location_attribute -00000001200d78e0 t location_or_const_value_attribute -00000001201ffca0 S long_double_type_node -00000001201ffc88 S long_ftype_long -00000001201ffd50 S long_integer_type_node -00000001201ffe40 S long_long_integer_type_node -00000001201ffd18 S long_long_unsigned_type_node -00000001201ffe88 S long_unsigned_type_node -00000001200444f0 T lookup_attribute -000000012001a760 t lookup_field -00000001200cdce0 t lookup_filename -0000000120006ea0 T lookup_interface -0000000120016b90 T lookup_label -000000012000e4c0 T lookup_name -000000012000e500 T lookup_name_current_level -000000012000e560 T lookup_name_current_level_global -0000000120063370 T lookup_static_chain -00000001201ff470 s loop_continue -00000001201ff6a4 s loop_cost -00000001201ff538 s loop_depth -00000001201ff6a0 s loop_depth -00000001201ff770 s loop_depth -00000001201fef08 S loop_dump -0000000120200050 S loop_dump_file -0000000120200820 S loop_dump_stream -00000001201ff4f0 s loop_final_value -00000001201ff468 s loop_has_call -00000001201ff46c s loop_has_volatile -00000001201ff4e8 s loop_increment -00000001201ff4e0 s loop_initial_value -00000001201ff460 s loop_invalid -00000001201ff4d8 s loop_iteration_var -000000012010c720 T loop_iterations -0000000120200848 S loop_iv_list -0000000120200808 S loop_n_iterations -0000000120200840 S loop_number_exit_count -0000000120200810 S loop_number_exit_labels -00000001201ff458 s loop_number_loop_ends -00000001201ff450 s loop_number_loop_starts -00000001200fc370 T loop_optimize -0000000120200818 S loop_outer_loop -0000000120101da0 t loop_reg_used_before_p -00000001202002c0 S loop_stack -0000000120206608 b loop_store_mems -00000001201ff498 s loop_store_mems_idx -00000001201ffed0 S loop_time -00000001201ff4a8 s loops_enclosed -0000000120055f40 T lrotate_double -0000000120055db0 T lshift_double -000000012008cab0 t lshift_value -00000001202006c0 S lshr_optab -00000001202005a8 S ltdf2_libfunc -0000000120200548 S lthf2_libfunc -0000000120200518 S ltsf2_libfunc -0000000120200470 S lttf2_libfunc -0000000120200430 S ltxf2_libfunc -000000012001f0a0 T lvalue_or_else -000000012001eff0 T lvalue_p -00000001200c0300 t m16m -0000000120197de0 T m88k_begin_epilogue -0000000120197cd0 T m88k_begin_prologue -0000000120195430 T m88k_builtin_saveregs -0000000120200a08 S m88k_case_index -0000000120200a00 S m88k_compare_op0 -0000000120200a18 S m88k_compare_op1 -00000001202009e8 S m88k_compare_reg -00000001202009e0 S m88k_cpu -0000000120198220 T m88k_debugger_offset -0000000120197e80 T m88k_end_epilogue -0000000120197cf0 T m88k_end_prologue -0000000120198160 T m88k_expand_epilogue -0000000120194880 T m88k_expand_prologue -00000001201ffb4c S m88k_fp_offset -00000001201987f0 T m88k_function_arg -00000001201ffb48 S m88k_function_number -00000001201ffb40 S m88k_gp_threshold -0000000120194400 T m88k_layout_frame -00000001201fecd0 G m88k_pound_sign -00000001201ffb44 S m88k_prologue_done -0000000120200a10 S m88k_short_data -00000001201ffb50 S m88k_stack_size -00000001202009f0 S m88k_version -00000001202009f8 S m88k_volatile_code -00000001201eb4a8 d m_options -0000000120036b90 T main -0000000120200028 S main_input_filename -0000000120197800 T mak_mask_p -000000012011f8b0 t make_compound_operation -00000001200a1df0 T make_decl_rtl -000000012011ed90 t make_extraction -0000000120122800 t make_field_assignment -00000001200a1880 T make_function_rtl -00000001200b4bf0 T make_insn_raw -00000001200bb910 t make_nan -000000012003d170 T make_node -000000012000b790 T make_pointer_declarator -000000012015c790 t make_return_insns -00000001200b46f0 T make_safe_from -0000000120049170 T make_signed_type -0000000120091e70 T make_tree -000000012003e220 T make_tree_vec -00000001200492c0 T make_unsigned_type -00000001200a89c0 T make_var_volatile -000000012001f3c0 T mark_addressable -0000000120139ec0 T mark_elimination -000000012014b680 T mark_home_live -00000001200e3f10 t mark_jump_label -000000012010ecc0 t mark_label_ref -0000000120134950 t mark_life -0000000120100be0 t mark_loop_jump -00000001200e7250 t mark_modified_reg -0000000120152c40 t mark_not_eliminable -0000000120156280 t mark_referenced_resources -0000000120139030 t mark_reg_clobber -0000000120139220 t mark_reg_conflicts -0000000120139370 t mark_reg_death -00000001201394c0 t mark_reg_live_nc -00000001200b3d50 T mark_reg_pointer -0000000120138df0 t mark_reg_store -0000000120152e70 t mark_reload_reg_in_use -000000012014b750 t mark_scratch_live -000000012006a560 T mark_seen_cases -0000000120110e70 t mark_set_1 -0000000120110d50 t mark_set_regs -0000000120156860 t mark_set_resources -00000001200df8d0 T mark_stores -0000000120158370 t mark_target_live_regs -0000000120061e00 T mark_temp_addr_taken -0000000120111510 t mark_used_regs -000000012012a230 t mark_used_regs_combine -0000000120063640 T mark_varargs -000000012008c9c0 t mask_rtx -00000001201ff788 s max_allocno -00000001201ffb0c s max_block_depth -00000001201ff42c s max_elements_made -00000001201eb3f4 d max_from_align -00000001201ff320 s max_jump_chain -00000001200b3db0 T max_label_num -00000001201ff44c s max_loop_num -00000001201ff448 s max_luid -0000000120200930 S max_parallel -00000001201ff050 s max_parm_reg -00000001201ff2e8 s max_parm_reg -0000000120062d10 T max_parm_reg_num -00000001201ffab0 s max_priority -00000001201ff358 s max_qty -00000001201ff354 s max_reg -0000000120200830 S max_reg_before_loop -00000001200b3d90 T max_reg_num -00000001202008a4 S max_regno -0000000120200880 S max_scratch -0000000120200158 S max_stack_depth -00000001201ff408 s max_uid -00000001201ff978 s max_uid -00000001201ff5b8 s max_uid_cuid -00000001201ff4f8 s max_uid_for_flow -0000000120200868 S max_uid_for_loop -000000012020014c S maximum_field_alignment -00000001201fed24 s maxtoken -0000000120206c8c b may_move_cost -00000001201ff488 s may_not_optimize -00000001200aef80 T may_trap_p -0000000120016f60 T maybe_build_cleanup -0000000120006ef0 T maybe_building_objc_message_expr -0000000120106830 t maybe_eliminate_biv -00000001201069c0 t maybe_eliminate_biv_1 -0000000120006ec0 T maybe_objc_check_decl -0000000120006ed0 T maybe_objc_comptypes -0000000120006ee0 T maybe_objc_method_name -00000001202000c0 S maybepermanent_firstobj -000000012020bdf0 B maybepermanent_obstack -0000000120190250 t mem100_unit_blockage -000000012018c440 T mem100_unit_blockage_range -0000000120190b80 t mem100_unit_conflict_cost -000000012018c1d0 T mem100_unit_ready_cost -000000012018fca0 t mem110_unit_blockage -000000012018be80 T mem110_unit_blockage_range -000000012018bc10 T mem110_unit_ready_cost -00000001201ff5d0 s mem_last_set -0000000120200568 S memcmp_libfunc -0000000120200520 S memcpy_libfunc -0000000120207540 b memlocs -0000000120093c80 T memory_address -00000001200956f0 T memory_address_noforce -00000001201716e0 T memory_address_p -0000000120173730 T memory_operand -0000000120131600 t memref_referenced_p -0000000120160a20 t memrefs_conflict_p -0000000120200420 S memset_libfunc -00000001200e77c0 t mention_regs -00000001200f5390 t merge_equiv_classes -000000012012cba0 t merge_outer_ops -00000001201ff23c S merror -0000000120200a88 b message.0 -00000001201e740e d message.4 -000000012002d590 T min_precision -00000001201fee04 s missing_braces_mentioned -00000001200cee50 t mod_fund_type_attribute -00000001200cf2c0 t mod_u_d_type_attribute -00000001201e9488 D mode_class -0000000120173e40 T mode_dependent_address_p -0000000120049050 T mode_for_size -00000001201eb3d0 d mode_from_align -0000000120173e50 T mode_independent_operand -00000001201e93a0 D mode_name -00000001201e94fc D mode_size -000000012020bf38 B mode_to_const_map -000000012020bfac B mode_to_load_map -000000012020c094 B mode_to_store_map -00000001201e9570 D mode_unit_size -00000001201e95e4 D mode_wider_mode -000000012014ac70 t modes_equiv_for_class_p -00000001200ad550 T modified_between_p -00000001200ad830 T modified_in_p -00000001201ff340 s modified_mem -00000001201ff338 s modified_regs -00000001202000e0 S momentary_firstobj -00000001202000a8 S momentary_function_firstobj -000000012020bb28 B momentary_obstack -0000000120200118 S momentary_stack -00000001201928e0 T mostly_false_jump -0000000120156f70 t mostly_true_jump -0000000120200618 S mov_optab -0000000120082310 T move_block_from_reg -0000000120082240 T move_block_to_reg -0000000120082c80 t move_by_pieces -0000000120071640 t move_by_pieces_1 -0000000120071540 t move_by_pieces_ninsns -000000012006f470 T move_cleanups_up -0000000120206bc8 b move_cost -000000012012a4e0 t move_deaths -00000001200fef90 t move_movables -0000000120197240 T move_operand -00000001201ff490 s moved_once -000000012020c020 B movstr_optab -00000001202005e8 S movstrict_optab -00000001200bb870 t mtherr -00000001202039c8 b mul_cost -000000012004a0a0 T mul_double -0000000120203b24 b mul_highpart_cost -0000000120203ab0 b mul_widen_cost -00000001201ffbbc s n.3 -00000001202008b0 S n_basic_blocks -0000000120200958 S n_earlyclobbers -00000001201ff428 s n_elements_made -00000001201ff848 s n_memlocs -0000000120200900 S n_non_fixed_regs -00000001201ff668 s n_occurrences -0000000120145880 T n_occurrences -00000001202009a4 S n_regs_saved -00000001201ff830 s n_regs_set -0000000120200954 S n_reloads -00000001201ff844 s n_replacements -00000001201ff8a0 s n_spills -00000001201ff478 s n_times_set -00000001201ff480 s n_times_used -00000001201fed38 s name.2 -00000001201fedb0 s named_labels -00000001200a8700 T named_section -0000000120200388 S nedf2_libfunc -00000001201fefe8 s need_error_newline -0000000120055d70 T neg_double -00000001202005d0 S neg_optab -00000001201ff13c s negate_cost -0000000120093010 T negate_rtx -0000000120200690 S nehf2_libfunc -0000000120200680 S nesf2_libfunc -00000001202002b0 S nesting_depth -00000001202002a0 S nesting_stack -0000000120200350 S netf2_libfunc -00000001201ff8f8 s new_asm_operands_vec -00000001200f5100 t new_basic_block -00000001201feca8 g new_block -000000012016a0d0 t new_insn_dead_notes -000000012014ae20 t new_spill_reg -00000001201fed20 s newline_warning.1 -00000001201ff5ec s newpat_used_regs -00000001202004c8 S nexf2_libfunc -00000001200b4ab0 T next_active_insn -00000001202009a8 S next_block_index -00000001201ff254 s next_block_number -00000001201fec88 g next_block_number -00000001201ff004 s next_decl_uid -00000001200b4920 T next_insn -00000001200b4b90 T next_label -00000001200e6ed0 T next_nondeleted_insn -00000001200b49d0 T next_nonnote_insn -00000001201ff260 s next_pubname_number -00000001201ff35c s next_qty -00000001201ff6b0 s next_qty -00000001200b4a30 T next_real_insn -00000001201fec38 g next_type_uid -00000001201fec8c g next_unused_dienum -00000001201fec08 g nextchar -00000001201ff020 s nlab.0 -00000001201ffbb0 s nlab.0 -0000000120134bb0 t no_conflict_p -00000001201ff7f8 s no_global_alloc_regs -00000001200afdb0 T no_labels_between_p -00000001201ff21c s no_line_numbers -00000001200563a0 T non_lvalue -00000001201734b0 T nonimmediate_operand -00000001201ea570 d nonleaf.1 -00000001202001b0 S nonlocal_goto_handler_slot -0000000120200220 S nonlocal_goto_stack_level -0000000120062ae0 T nonlocal_label_rtx_list -0000000120200268 S nonlocal_labels -0000000120173540 T nonmemory_operand -0000000120123780 t nonzero_bits -00000001201ff638 s nonzero_bits_mode -00000001201ff648 s nonzero_sign_valid -00000001201078e0 t note_addr_stored -00000001201ff4b0 s note_insn -00000001201e9a70 D note_insn_name -00000001201ffa10 s note_list -00000001200f2a60 t note_mem_written -00000001200dfe50 t note_modified_parmregs -00000001200ae350 T note_stores -00000001201ffb80 s nregs -00000001200436a0 T nreverse -00000001201ffdc8 S null_pointer_node -0000000120197c50 T null_prologue -00000001201ffb30 s num_changes -000000012018d780 T num_delay_slots -00000001201ff8d0 s num_eliminable -0000000120209530 b num_filled_delays -0000000120209520 b num_insns_needing_delays -00000001201ff8e8 s num_labels -00000001201ff4a4 s num_mem_sets -00000001201ff4a0 s num_movables -00000001201ff8cc s num_not_at_initial_offset -00000001201ff330 s num_same_regs -00000001201ff510 s num_scratch -0000000120124310 t num_sign_bit_copies -0000000120173000 T num_validated_changes -00000001201ffb84 s nxregs -000000012003ca00 T oballoc -00000001201fef6c S obey_regdecls -0000000120042310 T obfree -00000001200423e0 T object_permanent_p -00000001202000d0 S obstack_stack -0000000120201200 b obstack_stack_obstack -0000000120197a60 T odd_relop -00000001201ff8e0 s offsets_at -00000001201ff8d8 s offsets_known_at -0000000120173b60 T offsettable_address_p -0000000120173a80 T offsettable_memref_p -0000000120173af0 T offsettable_nonstrict_memref_p -00000001201ff8f0 s old_asm_operands_vec -00000001201ffa28 s old_live_regs -0000000120200348 S one_cmpl_optab -0000000120206d50 b op_costs -000000012003b850 t open_dump_file -000000012004b950 T operand_equal_p -00000001200b1df0 T operand_subword -00000001200b41c0 T operand_subword_force -000000012013ce20 T operands_match_p -00000001201ec06c D optab_bit_and_expr -00000001201ec09c D optab_bit_ior_expr -00000001201ec544 D optab_bit_not_expr -00000001201ec0cc D optab_bit_xor_expr -00000001201ec41c D optab_eq_expr -00000001201ec2fc D optab_ge_expr -00000001201ec38c D optab_gt_expr -00000001201ec26c D optab_le_expr -00000001201ec0fc D optab_lshift_expr -00000001201ec1dc D optab_lt_expr -00000001201ebe9c D optab_minus_expr -00000001201ebf0c D optab_mult_expr -00000001201ec48c D optab_ne_expr -00000001201ec4fc D optab_negate_expr -00000001201ebe2c D optab_plus_expr -00000001201ec650 D optab_postdecrement_expr -00000001201ec6b8 D optab_postincrement_expr -00000001201ec580 D optab_predecrement_expr -00000001201ec5e8 D optab_preincrement_expr -00000001201ec02c D optab_rdiv_expr -00000001201ec14c D optab_rshift_expr -00000001201ebf8c D optab_trunc_div_expr -00000001201ebfdc D optab_trunc_mod_expr -00000001201ec19c D optab_truth_and_expr -00000001201ec568 D optab_truth_not_expr -00000001201ec1bc D optab_truth_or_expr -00000001201fec18 G optimize -000000012005c2c0 t optimize_bit_field -0000000120056ff0 t optimize_bit_field_compare -0000000120135250 t optimize_reg_copy_1 -0000000120135790 t optimize_reg_copy_2 -000000012015d5d0 t optimize_skip -000000012014d780 t order_regs_for_reload -00000001201ff2f0 s orig_asm_operands_vector -00000001201ff098 s out_arg_offset -00000001201eb388 d out_rcs_id -00000001202001b8 S outer_function_chain -00000001201ff1c0 s outfile -000000012017d430 t output_107 -000000012017d460 t output_108 -000000012017d1b0 t output_11 -000000012017d490 t output_114 -000000012017d4c0 t output_117 -000000012017d230 t output_12 -000000012017d4f0 t output_120 -000000012017d520 t output_121 -000000012017d550 t output_123 -000000012017d580 t output_126 -000000012017d5b0 t output_127 -000000012017d5e0 t output_129 -000000012017d610 t output_131 -000000012017d640 t output_132 -000000012017d670 t output_134 -000000012017d6a0 t output_147 -000000012017d6d0 t output_149 -000000012017d700 t output_151 -000000012017d730 t output_154 -000000012017d760 t output_156 -000000012017d790 t output_158 -000000012017d7c0 t output_169 -000000012017d7f0 t output_223 -000000012017d820 t output_225 -000000012017d960 t output_228 -000000012017d990 t output_230 -000000012017dad0 t output_233 -000000012017db00 t output_235 -000000012017dc40 t output_245 -000000012017dc70 t output_247 -000000012017dca0 t output_249 -000000012017dcd0 t output_252 -000000012017dd00 t output_254 -000000012017dd70 t output_256 -000000012017dde0 t output_257 -000000012017de50 t output_258 -000000012017dec0 t output_259 -000000012017dfb0 t output_261 -000000012017dfe0 t output_262 -000000012017e010 t output_264 -000000012017e040 t output_269 -000000012017e080 t output_271 -000000012017e0b0 t output_273 -000000012017e0e0 t output_281 -000000012017d2b0 t output_46 -000000012017d380 t output_58 -000000012017d3b0 t output_61 -000000012017d3e0 t output_94 -000000012016edc0 T output_addr_const -000000012016ed70 T output_address -00000001200a7340 t output_addressed_constants -0000000120196ed0 T output_and -00000001200cf650 t output_array_type_die -00000001201941b0 T output_ascii -000000012016e3b0 T output_asm_insn -000000012016ebc0 T output_asm_label -00000001200d6fa0 t output_block -0000000120198690 T output_block_profiler -00000001200d9460 t output_bound_representation -00000001201fef50 S output_bytecode -0000000120192610 T output_call -00000001200d3530 t output_compile_unit_die -00000001200a74b0 T output_constant -00000001200a5ff0 T output_constant_def -00000001200a6550 t output_constant_def_contents -00000001200a6ff0 T output_constant_pool -00000001200a79b0 t output_constructor -00000001200ca140 t output_decl -00000001200c9f60 t output_decls_for_scope -00000001200a94c0 T output_deferred_addressed_constants -0000000120164770 T output_dependence -00000001200d6db0 t output_die -00000001200d98c0 t output_enumeral_list -00000001200d0550 t output_enumeration_type_die -0000000120039010 T output_file_directive -0000000120192b90 T output_file_start -00000001200d0ad0 t output_formal_parameter_die -00000001201982d0 T output_function_block_profiler -0000000120195060 T output_function_profiler -00000001200d0f40 t output_global_subroutine_die -00000001200d1b20 t output_global_variable_die -0000000120026240 t output_init_element -00000001200df520 T output_inline_function -00000001200cfef0 t output_inlined_enumeration_type_die -00000001200d0110 t output_inlined_structure_type_die -00000001200d8fb0 t output_inlined_subroutine_die -00000001200d0330 t output_inlined_union_type_die -0000000120196f90 T output_ior -0000000120197be0 T output_label -00000001200d2050 t output_label_die -00000001200d8b40 t output_lexical_block_die -0000000120196c00 T output_load_const_dimode -0000000120196b00 T output_load_const_double -0000000120196a80 T output_load_const_float -0000000120196990 T output_load_const_int -00000001200d4cd0 t output_local_subroutine_die -00000001200d2540 t output_local_variable_die -00000001200c8e30 t output_mem_loc_descriptor -00000001200d2a60 t output_member_die -000000012016ecd0 t output_operand -000000012016f9b0 T output_operand_lossage -00000001200d6d60 t output_padded_null_die -0000000120023cd0 t output_pending_init_elements -00000001200d2fd0 t output_ptr_to_mbr_type_die -0000000120038f10 T output_quoted_string -00000001201ff86c s output_reloadnum -00000001200cfaa0 t output_set_type_die -000000012016e090 t output_source_line -00000001200d43b0 t output_string_type_die -00000001200d46e0 t output_structure_type_die -00000001200d58b0 t output_subroutine_type_die -00000001200c97e0 t output_type -00000001200d5e50 t output_typedef_die -00000001200d6370 t output_union_type_die -00000001200d6960 t output_unspecified_parameters_die -0000000120197020 T output_xor -000000012002cda0 T overflow_warning -00000001201febf8 g p.0 -000000012005ec10 t pad_below -000000012005eb40 t pad_to_arg_alignment -00000001201ff040 s parm_birth_insn -00000001201ff058 s parm_reg_stack_loc -00000001201ff2e0 s parmdecl_map -0000000120017070 T parmlist_tags_warning -000000012020006c S parse_time -000000012001bc20 T parser_build_binary_op -0000000120197960 T partial_ccmode_register_operand -00000001201eb678 d patterns.3 -0000000120197bc0 T pc_or_label_ref -0000000120200770 S pc_rtx -00000001201fef64 S pedantic -000000012001f1f0 t pedantic_lvalue_warning -0000000120200150 S pedantic_lvalues -0000000120056480 T pedantic_non_lvalue -0000000120031860 T pedwarn -0000000120021cf0 T pedwarn_init -0000000120031df0 T pedwarn_with_decl -0000000120032230 T pedwarn_with_file_and_line -00000001202156c8 B peep_operand -0000000120156270 T peephole -00000001201ffb10 s pending_blocks -00000001201ff110 s pending_chain -00000001201ff988 s pending_dead_regs -00000001201ffdd8 S pending_invalid_xref -00000001201ffdb8 S pending_invalid_xref_file -00000001201ffc60 S pending_invalid_xref_line -00000001201ffa78 s pending_lists_length -00000001201ffa58 s pending_read_insns -00000001201ffa60 s pending_read_mems -00000001201ff298 s pending_sibling_stack -00000001201ff2a0 s pending_siblings -00000001201ff2a4 s pending_siblings_allocated -00000001201ff018 s pending_sizes -00000001202002e0 S pending_stack_adjust -00000001201ff2b4 s pending_types -00000001201ff2b0 s pending_types_allocated -00000001201ff2a8 s pending_types_list -00000001201ffa68 s pending_write_insns -00000001201ffa70 s pending_write_mems -0000000120016e60 T pending_xref_error -000000012003cbe0 T perm_calloc -0000000120043860 T perm_tree_cons -000000012003caf0 T permalloc -000000012003c480 T permanent_allocation -000000012020bd98 B permanent_obstack -00000001200386e0 T pfatal_with_name -0000000120198a50 T pic_address_needs_scratch -0000000120200768 S pic_offset_table_rtx -0000000120039510 t pipe_closed -00000001201ff0f0 s placeholder_list.0 -00000001200c0440 t plain_type_1 -00000001200952f0 T plus_constant_for_output_wide -0000000120093810 T plus_constant_wide -000000012001e270 t pointer_diff -000000012001deb0 t pointer_int_sum -00000001201ff1a0 s pool_offset -0000000120017b10 T pop_c_function_context -0000000120038df0 T pop_float_handler -0000000120061c90 T pop_function_context -00000001200596f0 T pop_function_context_from -0000000120023580 T pop_init_level -000000012002f420 T pop_iterator_stack -000000012000d3d0 T pop_label_level -00000001200424e0 T pop_momentary -0000000120042570 T pop_momentary_nofree -0000000120042200 T pop_obstacks -0000000120062100 T pop_temp_slots -00000001200b63b0 T pop_topmost_sequence -000000012000cfb0 T poplevel -000000012000b9c0 T position_after_white_space -000000012014a6a0 t possible_group_p -0000000120134a40 t post_mark_life -0000000120161fb0 t potential_hazard -0000000120207ed0 b potential_reload_regs -0000000120109670 t precondition_loop_p -000000012007e2d0 t preexpand_calls -00000001201ff690 s prefclass -000000012019dce0 T preferred_typecode -00000001201fece8 s prefix_attributes -0000000120089940 T prepare_call_address -0000000120164c60 t prepare_unit -00000001201001f0 t prescan_loop -000000012003c6b0 T preserve_data -000000012003c790 T preserve_initializer -0000000120042420 T preserve_momentary -0000000120194ca0 t preserve_registers -0000000120061f10 T preserve_rtl_expr_result -000000012006f0c0 T preserve_subexpressions_p -000000012005a270 T preserve_temp_slots -00000001200b4b20 T prev_active_insn -00000001201fec94 g prev_file_entry_num.1 -00000001201ff3a0 s prev_insn -00000001200b4bc0 T prev_label -00000001201fecd8 g prev_lineno.1 -00000001200b4a00 T prev_nonnote_insn -00000001200b4a70 T prev_real_insn -00000001200b4970 T previous_insn -00000001201ff600 s previous_num_undos -00000001201ff280 s primary_filename -00000001201e7428 d print_char_table -00000001201fec28 G print_error_function -00000001200162f0 T print_lang_decl -0000000120016310 T print_lang_identifier -0000000120006e90 T print_lang_statistics -0000000120016300 T print_lang_type -00000001200458e0 T print_node -0000000120045560 T print_node_brief -000000012003cde0 T print_obstack_name -0000000120045470 T print_obstack_statistics -0000000120195a90 T print_operand -0000000120196430 T print_operand_address -00000001200ad020 T print_rtl -00000001200ac610 t print_rtx -0000000120038150 t print_switch_values -0000000120038570 T print_time -0000000120162160 t priority -00000001200240c0 T process_init_element -0000000120105c10 t product_cheap_p -00000001201fffec S profile_block_flag -00000001201fef60 S profile_flag -00000001202009b0 S profile_label_no -00000001201ffec0 S progname -00000001201ff0a0 s prologue -00000001201ffb98 s prologue_marked -0000000120095b10 T promote_mode -000000012010ff70 t propagate_block -0000000120070290 T protect_from_queue -00000001201377f0 t prune_preferences -00000001202006f0 S ptr_mode -00000001201ffcd0 S ptr_type_node -00000001201ffbd0 s ptrconsts -00000001201ffc58 S ptrdiff_type_node -00000001200434e0 T purpose_member -0000000120082740 T push_block -0000000120017a20 T push_c_function_context -0000000120038d60 T push_float_handler -0000000120061c70 T push_function_context -00000001200593c0 T push_function_context_to -0000000120022dd0 T push_init_level -000000012002ec40 T push_iterator_stack -0000000120016830 T push_label_level -000000012003d050 T push_momentary -000000012003c210 T push_obstacks -000000012003c360 T push_obstacks_nochange -00000001201736d0 T push_operand -0000000120016f70 T push_parm_decl -000000012013a430 t push_reload -0000000120145fe0 t push_secondary_reload -00000001200620e0 T push_temp_slots -00000001200b6220 T push_to_sequence -00000001200b62f0 T push_topmost_sequence -00000001200697b0 T pushcase -0000000120069ba0 T pushcase_range -000000012000d580 T pushdecl -00000001200169a0 T pushdecl_top_level -00000001200165f0 T pushlevel -00000001200168c0 T pushtag -0000000120048eb0 T put_pending_sizes -000000012005a830 t put_reg_into_stack -000000012005a5a0 T put_var_into_stack -00000001201ffba0 s pwd.0 -00000001201ff990 s q_ptr -00000001201ff994 s q_size -00000001201ff718 s qty_alternate_class -00000001201ff6f0 s qty_birth -00000001201ff728 s qty_changes_size -00000001201331b0 t qty_compare -0000000120135d80 t qty_compare_1 -00000001201ff388 s qty_comparison_code -00000001201ff390 s qty_comparison_const -00000001201ff398 s qty_comparison_qty -00000001201ff378 s qty_const -00000001201ff380 s qty_const_insn -00000001201ff6f8 s qty_death -00000001201ff360 s qty_first_reg -00000001201ff730 s qty_first_reg -00000001201ff368 s qty_last_reg -00000001201ff6e8 s qty_min_class -00000001201ff370 s qty_mode -00000001201ff708 s qty_mode -00000001201ff710 s qty_n_calls_crossed -00000001201ff6e0 s qty_n_refs -00000001201ff6c0 s qty_phys_copy_sugg -00000001201ff6d0 s qty_phys_num_copy_sugg -00000001201ff6d8 s qty_phys_num_sugg -00000001201ff6b8 s qty_phys_reg -00000001201ff6c8 s qty_phys_sugg -00000001201ff720 s qty_scratch_rtx -00000001201ff700 s qty_size -0000000120133350 t qty_sugg_compare -0000000120135b10 t qty_sugg_compare_1 -0000000120082bb0 t queued_subexp_p -00000001201fef70 S quiet_flag -0000000120058ff0 t range_test -00000001201690b0 t rank_for_schedule -0000000120205f6e b rbit -00000001201eb0d8 d rcs_id.0 -00000001201ff234 s re -0000000120164430 T read_dependence -00000001200ab100 T read_rtx -00000001200aaf00 T read_skip_spaces -000000012000bd20 t readescape -00000001200a8640 T readonly_data_section -000000012001f260 T readonly_warning -0000000120043160 T real_onep -00000001201978b0 T real_or_0_operand -0000000120197080 T real_power_of_2_operand -00000001200432e0 T real_twop -0000000120042870 T real_value_from_int_cst -0000000120056130 T real_value_truncate -0000000120043080 T real_zerop -0000000120043460 T really_constant_p -00000001200328e0 T really_sorry -00000001200229e0 T really_start_incremental_init -00000001201ff230 s rebit -000000012017a390 T recog -00000001201743e0 T recog_1 -0000000120174bf0 T recog_2 -0000000120175520 T recog_3 -0000000120175ca0 T recog_4 -0000000120176f90 T recog_5 -00000001201792d0 T recog_6 -0000000120215768 B recog_dup_loc -00000001202009d8 S recog_dup_num -00000001201260e0 t recog_for_combine -0000000120172e50 T recog_memoized -0000000120215718 B recog_operand -0000000120215778 B recog_operand_loc -0000000120006f00 T recognize_objc_keyword -000000012012f5f0 t record_address_regs -0000000120103860 t record_biv -0000000120138d10 t record_conflicts -00000001200aa180 t record_constant -00000001200a5640 t record_constant_1 -00000001200aa490 t record_constant_rtx -00000001201295b0 t record_dead_and_set_regs -000000012012cf60 t record_dead_and_set_regs_1 -00000001201ff670 s record_dead_insn -00000001200fdd00 T record_excess_regs -000000012002b190 T record_function_format -0000000120103a90 t record_giv -0000000120107a90 t record_initial -00000001200f1b10 t record_jump_cond -000000012013a2d0 t record_one_conflict -000000012012e7c0 t record_reg_classes -00000001201290e0 t record_value_for_reg -00000001201ff410 s recorded_label_ref -000000012000dfc0 t redeclaration_error_message -00000001200e4ec0 T redirect_exp -00000001200e7000 T redirect_jump -00000001200e5150 t redirect_tablejump -0000000120157570 t redundant_insn -0000000120143e80 T refers_to_mem_for_reload_p -00000001200e9f90 t refers_to_mem_p -00000001200e99e0 t refers_to_p -0000000120143900 T refers_to_regno_for_reload_p -00000001200adaa0 T refers_to_regno_p -00000001201ea138 D reg_alloc_order -00000001201ff790 s reg_allocno -0000000120130460 T reg_alternate_class -00000001202008b8 S reg_basic_block -000000012012ab60 t reg_bitfield_target_p -0000000120200870 S reg_biv_class -00000001202008d0 S reg_changes_size -0000000120213bb4 B reg_class_contents -00000001201ea6e8 d reg_class_names -00000001201ea7c8 d reg_class_names.0 -00000001201ea068 d reg_class_names.1 -0000000120213c2c B reg_class_size -00000001202137e8 B reg_class_subclasses -0000000120130720 T reg_class_subset_p -0000000120213af0 B reg_class_subunion -0000000120213c48 B reg_class_superclasses -00000001202138ac B reg_class_superunion -000000012012fde0 T reg_classes_intersect_p -000000012010d990 t reg_dead_after_loop -0000000120129fa0 t reg_dead_at_p -000000012012d120 t reg_dead_at_p_1 -00000001201ff67c s reg_dead_endregno -00000001201ff680 s reg_dead_flag -00000001201ff678 s reg_dead_regno -00000001201ea720 d reg_eliminate -0000000120200988 S reg_equiv_address -0000000120200990 S reg_equiv_constant -00000001201ff898 s reg_equiv_init -0000000120200970 S reg_equiv_mem -0000000120200968 S reg_equiv_memory_loc -0000000120173e80 T reg_fits_class_p -00000001201ff880 s reg_has_output_reload -00000001200fdf70 t reg_in_basic_block_p -00000001201ff3d0 s reg_in_table -0000000120133f10 t reg_is_born -00000001201ff888 s reg_is_output_reload -0000000120135f50 t reg_is_set -0000000120200828 S reg_iv_info -0000000120200838 S reg_iv_type -00000001201ffa48 s reg_known_equiv_p -00000001201ffa40 s reg_known_value -00000001201ffa50 s reg_known_value_size -00000001201ff5c0 s reg_last_death -00000001201ff878 s reg_last_reload_reg -00000001201ff5c8 s reg_last_set -00000001201ff620 s reg_last_set_invalid -00000001201ff610 s reg_last_set_label -00000001201ff650 s reg_last_set_mode -00000001201ff658 s reg_last_set_nonzero_bits -00000001201ff660 s reg_last_set_sign_bit_copies -00000001201ff618 s reg_last_set_table_tick -00000001201ff608 s reg_last_set_value -00000001201ff9b8 s reg_last_sets -00000001201ff9b0 s reg_last_uses -0000000120200888 S reg_live_length -00000001201ff2c8 s reg_map -00000001201ff890 s reg_max_ref_width -00000001201ff7b0 s reg_may_share -0000000120133d40 t reg_meets_class_p -00000001200ad0f0 T reg_mentioned_p -0000000120200898 S reg_n_calls_crossed -0000000120200890 S reg_n_deaths -00000001202008c0 S reg_n_refs -0000000120200918 S reg_n_sets -00000001201ea270 D reg_names -00000001201ff3b8 s reg_next_eqv -00000001201ff738 s reg_next_in_qty -00000001201ff518 s reg_next_use -00000001201ff630 s reg_nonzero_bits -00000001201e9ae0 D reg_note_name -00000001201ff748 s reg_offset -00000001201974e0 T reg_or_0_operand -0000000120197820 T reg_or_bbx_mask_operand -00000001201ff570 s reg_order -0000000120143cd0 T reg_overlap_mentioned_for_reload_p -00000001200ade60 T reg_overlap_mentioned_p -00000001201ff9c0 s reg_pending_sets -00000001201ff9c8 s reg_pending_sets_all -0000000120130430 T reg_preferred_class -00000001201ff3c0 s reg_prev_eqv -00000001201ff3b0 s reg_qty -00000001201ff740 s reg_qty -0000000120213970 B reg_raw_mode -00000001200aff00 T reg_referenced_between_p -00000001200ad320 T reg_referenced_p -00000001202076d0 b reg_reloaded_contents -00000001202077d0 b reg_reloaded_insn -0000000120200940 S reg_renumber -00000001202091b0 b reg_restore_code -00000001201fec48 G reg_rtx_no -0000000120208eb0 b reg_save_code -00000001201304c0 T reg_scan -000000012012f920 t reg_scan_mark_refs -00000001200afff0 T reg_set_between_p -00000001201ff1d0 s reg_set_flag -00000001200b0600 T reg_set_last -00000001200b0d20 t reg_set_last_1 -00000001201ff1e0 s reg_set_last_first_regno -00000001201ff1e4 s reg_set_last_last_regno -00000001201ff1d4 s reg_set_last_unknown -00000001201ff1d8 s reg_set_last_value -00000001200b0140 T reg_set_p -00000001200b0cc0 t reg_set_p_1 -00000001201ff1c8 s reg_set_reg -00000001201ff640 s reg_sign_bit_copies -00000001201ff3c8 s reg_tick -00000001200afdf0 T reg_used_between_p -00000001201ff568 s reg_where_born -00000001201ff560 s reg_where_dead -000000012012db20 T regclass -00000001201304a0 T regclass_init -00000001201731f0 T register_operand -0000000120112800 T regno_clobbered_at_setjmp -0000000120145180 T regno_clobbered_p -00000001202008f0 S regno_first_uid -00000001202008f8 S regno_last_note_uid -0000000120200908 S regno_last_uid -0000000120200738 S regno_pointer_flag -00000001202006f8 S regno_pointer_flag_length -0000000120200760 S regno_reg_rtx -00000001202088b0 b regno_save_mem -00000001202085b0 b regno_save_mode -0000000120112780 T regno_uninitialized -000000012016ac40 t regno_use_in -00000001201ff580 s regs_change_size -00000001202156d8 B regs_ever_live -0000000120207f50 b regs_explicitly_used -00000001201ff3e0 s regs_invalidated_by_call -00000001201ff578 s regs_live -00000001201ff750 s regs_live -00000001201ff758 s regs_live_at -00000001202008e0 S regs_live_at_setjmp -00000001202008a8 S regs_may_share -00000001201ff828 s regs_set -00000001201ff7f0 s regs_someone_prefers -00000001201ff800 s regs_used_so_far -00000001202008a0 S regset_bytes -00000001202008e8 S regset_size -00000001200e8e90 t rehash_using_reg -000000012000b8f0 T reinit_parse_for_function -000000012015ba10 t relax_delay_slots -0000000120147750 T reload -000000012014db60 t reload_as_needed -00000001202009d0 S reload_completed -0000000120214818 B reload_earlyclobbers -0000000120200960 S reload_first_uid -0000000120200980 S reload_firstobj -0000000120214200 B reload_in -0000000120215580 B reload_in_optab -00000001201ff870 S reload_in_progress -0000000120214e08 B reload_in_reg -0000000120214868 B reload_inc -00000001202153a0 B reload_inheritance_insn -0000000120214fe8 B reload_inherited -00000001202143e0 B reload_inmode -0000000120208290 b reload_mode -000000012020095c S reload_n_operands -00000001202147dc B reload_nocombine -0000000120208380 b reload_nregs -00000001202155f8 B reload_obstack -00000001202144d0 B reload_opnum -00000001202146b0 B reload_optional -0000000120215650 B reload_order -0000000120213e40 B reload_out -0000000120215024 B reload_out_optab -0000000120214020 B reload_outmode -00000001202151c0 B reload_override_in -0000000120214b38 B reload_reg_class -0000000120152d80 t reload_reg_class_lower -00000001201537f0 t reload_reg_free_before_p -00000001201531c0 t reload_reg_free_p -0000000120153c50 t reload_reg_reaches_end_p -0000000120214c28 B reload_reg_rtx -00000001201ff900 s reload_reg_used -00000001201ff928 s reload_reg_used_at_all -00000001201ff930 s reload_reg_used_for_inherit -0000000120208510 b reload_reg_used_in_input -0000000120208470 b reload_reg_used_in_input_addr -00000001201ff918 s reload_reg_used_in_insn -00000001201ff908 s reload_reg_used_in_op_addr -00000001201ff910 s reload_reg_used_in_op_addr_reload -00000001201ff920 s reload_reg_used_in_other_addr -0000000120208560 b reload_reg_used_in_output -00000001202084c0 b reload_reg_used_in_output_addr -0000000120214a48 B reload_secondary_in_icode -00000001202146ec B reload_secondary_in_reload -0000000120214958 B reload_secondary_out_icode -0000000120213d50 B reload_secondary_out_reload -0000000120214110 B reload_secondary_p -00000001202150d0 B reload_spill_index -00000001202145c0 B reload_when_needed -00000001201ea6a0 d reload_when_needed_name -000000012014e650 t reloads_conflict -00000001201979e0 T relop -0000000120197ac0 T relop_no_unsigned -000000012010cb90 t remap_split_bivs -000000012006f3d0 T remember_end_note -000000012000b820 T remember_protocol_qualifiers -000000012012be00 T remove_death -00000001200f5250 t remove_from_table -00000001200e8db0 t remove_invalid_refs -00000001200b0b00 T remove_note -000000012005f400 T reorder_blocks -00000001200b4cd0 T reorder_insns -00000001200b4d70 T reorder_insns_with_line_notes -00000001201ff97c s reorg_pass_number -00000001201581f0 t reorg_redirect_jump -00000001200af410 T replace_regs -00000001201ff840 s replace_reloads -00000001200b0b70 T replace_rtx -0000000120207090 b replacements -00000001200389c0 T report_error_function -00000001200617b0 T reposition_prologue_and_epilogue_notes -0000000120024f80 T require_complete_type -00000001201fee8c s require_constant_elements -00000001201fee88 s require_constant_value -0000000120134d50 t requires_inout -00000001200b27e0 T reset_used_flags -0000000120032ef0 T rest_of_compilation -0000000120032a40 T rest_of_decl_compilation -00000001200390c0 T rest_of_type_compilation -00000001200df230 t restore_constants -00000001200b4580 T restore_emit_status -0000000120082170 T restore_expr_status -0000000120200250 S restore_machine_status -0000000120155ac0 t restore_referenced_regs -00000001200b31a0 T restore_reg_data -00000001200b32b0 t restore_reg_data_1 -000000012006e3a0 T restore_stmt_status -00000001200495c0 T restore_storage_status -000000012003c060 T restore_tree_status -00000001200a9670 T restore_varasm_status -000000012018abe0 T result_ready_cost -00000001200425d0 T resume_momentary -0000000120042190 T resume_temporary_allocation -0000000120139db0 T retry_global_alloc -00000001202001a0 S return_label -00000001200b4280 T reverse_comparison -00000001200e3c20 T reverse_condition -00000001201ffb74 s reversep.1 -0000000120128fd0 t reversible_comparison_p -000000012020b920 B ridpointers -00000001201fec5c g rlast -00000001201ff22e s rmbit -00000001201ff22c s rmsk -00000001201fec58 G rndprc -00000001200cecf0 t root_type -0000000120200308 S rotl_optab -0000000120200600 S rotr_optab -0000000120095c80 T round_push -000000012005f1b0 t round_trampoline_addr -00000001200490d0 T round_up -0000000120056050 T rrotate_double -0000000120055ea0 T rshift_double -00000001201feef8 S rtl_dump -00000001201feefc S rtl_dump_and_exit -00000001201fffe0 S rtl_dump_file -0000000120200190 S rtl_expr_chain -00000001200422d0 T rtl_in_current_obstack -00000001200422f0 T rtl_in_saveable_obstack -00000001202000e8 S rtl_obstack -00000001200aa6a0 T rtvec_alloc -00000001200af9c0 T rtx_addr_can_trap_p -00000001200afad0 T rtx_addr_varies_p -00000001200ac4c0 T rtx_alloc -00000001201e99f8 D rtx_class -00000001200e7360 T rtx_cost -00000001200fe8c0 t rtx_equal_for_loop_p -00000001201604d0 t rtx_equal_for_memref_p -00000001200e6340 T rtx_equal_for_thread_p -00000001202006ec S rtx_equal_function_value_matters -00000001200ae090 T rtx_equal_p -00000001201e9658 D rtx_format -00000001200ac5a0 T rtx_free -0000000120213340 B rtx_length -00000001201e9000 D rtx_name -00000001200e5350 T rtx_renumbered_equal_p -00000001200960d0 T rtx_to_tree_code -00000001200af710 T rtx_unstable_p -00000001200af860 T rtx_varies_p -00000001201ff228 s rw -00000001201458d0 T safe_from_earlyclobber -0000000120074f60 t safe_from_p -00000001200e93d0 t safe_hash -00000001201ff328 s same_regs -00000001201fff58 S save_argc -00000001201fff50 S save_argv -0000000120155370 T save_call_clobbered_regs -00000001200db2e0 t save_constants -00000001200b44e0 T save_emit_status -0000000120043d00 T save_expr -0000000120200260 S save_expr_regs -00000001200820a0 T save_expr_status -00000001201feef0 s save_exprs -00000001200da5d0 T save_for_inline_copying -00000001200db060 T save_for_inline_nocopy -0000000120200278 S save_machine_status -0000000120083fb0 t save_noncopied_parts -0000000120209d78 b save_regs -000000012006e2e0 T save_stmt_status -00000001200495b0 T save_storage_status -000000012003bdd0 T save_tree_status -00000001200a9620 T save_varasm_status -00000001200421d0 T saveable_allocation -00000001202000f8 S saveable_obstack -0000000120043900 T saveable_tree_cons -000000012003ccf0 T savealloc -00000001201ff100 s saveregs_value -00000001201ff1b0 s sawclose -00000001201ffb60 s sb_high -00000001201ffb68 s sb_low -00000001201ffb58 s sb_name -00000001201ffad8 s sbb_head -00000001201ffae0 s sbb_label_num -00000001201fecc0 g sbb_tail -00000001201e7768 d scan_char_table -00000001200fc970 t scan_loop -000000012014d5a0 t scan_paradoxical_subregs -00000001201fef24 S sched2_dump -00000001201fff80 S sched2_dump_file -00000001201fff78 S sched2_time -00000001201689d0 t sched_analyze -0000000120165080 t sched_analyze_1 -0000000120162450 t sched_analyze_2 -000000012016a620 t sched_analyze_insn -00000001201ffaa0 s sched_before_next_call -00000001201fef18 S sched_dump -00000001201fff30 S sched_dump_file -0000000120168d80 t sched_note_set -00000001201ff9a8 s sched_reg_live_length -00000001201ff9a0 s sched_reg_n_calls_crossed -00000001201ff998 s sched_reg_n_deaths -00000001201fffa8 S sched_time -0000000120165a80 t schedule_block -0000000120169250 t schedule_insn -00000001201631a0 T schedule_insns -0000000120169560 t schedule_select -000000012016a480 t schedule_unit -0000000120200938 S scratch_block -00000001201ff760 s scratch_index -0000000120200948 S scratch_list -0000000120200950 S scratch_list_length -0000000120173270 T scratch_operand -00000001200a8380 T sdata_section -00000001201fec80 G sdb_begin_function_line -00000001202064f8 b sdb_dims -00000001201ff24c s sdb_n_dims -00000001201fec84 g sdb_type_size -00000001200c4ef0 T sdbout_begin_block -00000001200c5510 T sdbout_begin_function -00000001200c6170 t sdbout_block -00000001200c52e0 T sdbout_end_block -00000001200c5a10 T sdbout_end_epilogue -00000001200c5770 T sdbout_end_function -00000001200c6070 T sdbout_init -00000001200c5c90 T sdbout_label -00000001200c6150 T sdbout_mark_begin_function -00000001200c2ea0 t sdbout_one_type -00000001200c66d0 t sdbout_parms -00000001200c2e50 t sdbout_queue_anonymous_type -00000001200c7cb0 t sdbout_reg_parms -00000001200c0a30 T sdbout_symbol -00000001200c25d0 T sdbout_toplevel_data -00000001200c6250 t sdbout_type -00000001200c6080 T sdbout_types -00000001202006a0 S sdiv_optab -00000001201ff130 s sdiv_pow2_cheap -0000000120200610 S sdivmod_optab -00000001201ffbb4 s section -000000012019ced0 t seg_defsym -000000012019d0e0 t seg_refsym -0000000120019cb0 T self_promoting_args_p -0000000120019d90 t self_promoting_type_p -00000001201ff220 s sequence_element_free_list -0000000120205f28 b sequence_result -00000001201ff1f8 S sequence_rtl_expr -0000000120200728 S sequence_stack -00000001201ffb70 s sequencep.0 -00000001201ff010 S set_alignment -0000000120016810 T set_block -00000001200e0010 t set_block_abstract_flags -00000001200dfec0 t set_block_origin_self -00000001200df9e0 T set_decl_abstract_flags -00000001200dffa0 t set_decl_origin_self -0000000120038d10 T set_float_handler -0000000120042790 T set_identifier_size -0000000120025950 T set_init_index -0000000120025b30 T set_init_label -000000012014b7f0 t set_label_offsets -00000001200b4870 T set_last_insn -00000001200b4490 T set_new_first_and_last_insn -00000001200b44b0 T set_new_first_and_last_label_num -00000001200e9ba0 t set_nonvarying_address_components -000000012012bf70 t set_nonzero_bits_and_sign_copies -0000000120139550 t set_preference -0000000120156150 t set_reg_live -0000000120037fe0 T set_target_switch -000000012000bba0 T set_yydebug -0000000120213170 B setcc_gen_code -0000000120063180 T setjmp_args_warning -0000000120063220 T setjmp_protect -00000001200632e0 T setjmp_protect_args -00000001200e6eb0 T sets_cc0_p -00000001201143f0 t setup_incoming_promotions -0000000120154f30 T setup_save_areas -0000000120016d60 T shadow_label -0000000120016ed0 T shadow_tag -0000000120010760 T shadow_tag_warned -00000001201fedb8 s shadowed_labels -0000000120203848 b shift_cost -00000001202038c8 b shiftadd_cost -0000000120203948 b shiftsub_cost -00000001201ffd38 S short_integer_type_node -00000001201ffd70 S short_unsigned_type_node -00000001201fffd8 S shorten_branch_time -000000012016c150 T shorten_branches -000000012002b730 T shorten_compare -00000001200aedf0 T side_effects_p -00000001200a0bc0 T sign_expand_binop -00000001201ffdf0 S signed_char_type_node -00000001200e6b20 T signed_condition -000000012020ada0 b signed_mode_to_code_map -00000001200251f0 T signed_or_unsigned_type -00000001200250e0 T signed_type -00000001201ffcc0 S signed_wchar_type_node -00000001200bd3a0 T significand_size -0000000120040f40 T simple_cst_equal -0000000120044bb0 T simple_cst_list_equal -00000001200e6c70 T simplejump_p -0000000120123360 t simplify_and_const_int -00000001200eaff0 T simplify_binary_operation -0000000120126f90 t simplify_comparison -0000000120104be0 t simplify_giv_expr -000000012011b950 t simplify_if_then_else -000000012011d980 t simplify_logical -00000001200ecbf0 t simplify_plus_minus -00000001200ed5c0 T simplify_relational_operation -0000000120119230 t simplify_rtx -000000012011cb90 t simplify_set -0000000120124b80 t simplify_shift_const -00000001200a96c0 T simplify_subtraction -00000001200ee0b0 T simplify_ternary_operation -00000001200ea450 T simplify_unary_operation -00000001202004e0 S sin_optab -00000001200b0230 T single_set -00000001201fec40 g size.1 -00000001201fec44 g size.2 -00000001201fec14 g size.3 -00000001200562a0 T size_binop -00000001202006e0 S size_directive_output -0000000120043950 T size_in_bytes -000000012004b850 T size_int -0000000120200138 S size_one_node -00000001202031e0 b size_table.0 -0000000120200130 S size_zero_node -0000000120200140 S sizetype -00000001200fe130 t skip_consec_insns -000000012000bbc0 t skip_white_space -00000001201ff43c s skipped_writes_memory -0000000120200410 S smax_optab -0000000120200558 S smin_optab -00000001202004b0 S smod_optab -00000001201ff134 s smod_pow2_cheap -00000001202004a8 S smul_highpart_optab -0000000120200660 S smul_optab -0000000120200540 S smul_widen_optab -0000000120032770 T sorry -00000001201fef4c S sorrycount -00000001201fec7c g source_label_number -00000001201e9d60 D spaces -00000001201fee08 s spelling -00000001201fee10 s spelling_base -00000001201fee18 s spelling_size -000000012014ada0 t spill_failure -000000012014d130 t spill_hard_reg -00000001201ff8c8 s spill_indirect_levels -0000000120207dd0 b spill_reg_order -00000001202079d0 b spill_reg_rtx -0000000120207bd0 b spill_reg_store -0000000120207e50 b spill_regs -0000000120207f90 b spill_stack_slot -0000000120208190 b spill_stack_slot_width -000000012017ab80 T split_1 -000000012016f4e0 T split_double -0000000120169db0 t split_hard_reg_notes -000000012017bb60 T split_insns -0000000120056580 t split_tree -00000001201ff4c8 s splittable_regs -00000001201ff4d0 s splittable_regs_updates -0000000120205fd0 b sqrndbit -0000000120200550 S sqrt_optab -00000001200e31d0 T squeeze_notes -00000001200957d0 T stabilize -000000012003f560 T stabilize_reference -000000012003fa50 T stabilize_reference_1 -00000001202002f0 S stack_arg_under_construction -00000001202002b8 S stack_block_stack -00000001202001f4 S stack_depth -0000000120200748 S stack_pointer_rtx -00000001201fef34 S stack_reg_dump -00000001201fff00 S stack_reg_dump_file -00000001201ffedc S stack_reg_time -0000000120200238 S stack_slot_list -00000001201ff118 s stack_usage_map -00000001201e8968 D standard_tree_code_length -00000001201e8b60 D standard_tree_code_name -00000001201e8578 D standard_tree_code_type -0000000120010a80 T start_decl -00000001200177b0 T start_enum -0000000120014be0 T start_function -0000000120042770 T start_identifier_warnings -0000000120022750 T start_init -0000000120209508 b start_of_epilogue_needs -00000001200b60d0 T start_sequence -00000001200b6170 T start_sequence_for_rtl_expr -00000001200174a0 T start_struct -00000001201fed30 s state.0 -0000000120200710 S static_chain_incoming_rtx -0000000120200778 S static_chain_rtx -00000001201ffe28 S static_ctors -00000001201ffc68 S static_dtors -00000001201ff860 s static_reload_reg_p -0000000120043bf0 T staticp -000000012015feb0 t steal_delay_list_from_fallthrough -000000012015f680 t steal_delay_list_from_target -00000001201fecf0 s stmt_count -00000001201ff088 s stmt_expr_depth -000000012020bee0 B stmt_obstack -000000012008a440 T store_bit_field -0000000120082f80 t store_constructor -00000001200733f0 T store_expr -0000000120074000 t store_field -000000012008ab00 t store_fixed_bit_field -0000000120025700 T store_init_value -00000001200891e0 t store_one_arg -00000001200152a0 T store_parm_decls -000000012008afe0 t store_split_bit_field -0000000120101e80 t strength_reduce -000000012013c930 T strict_memory_address_p -0000000120084b90 t string_constant -00000001201ffe78 S string_ftype_ptr_ptr -00000001200d8790 t string_length_attribute -00000001201ffc28 S string_type_node -00000001201cf0c0 r strings_107.2 -00000001201cf110 r strings_108.3 -00000001201cf138 r strings_114.4 -00000001201cf158 r strings_117.5 -00000001201cf178 r strings_120.6 -00000001201cf188 r strings_121.7 -00000001201cf1c8 r strings_126.8 -00000001201cf1d8 r strings_127.9 -00000001201cf218 r strings_131.10 -00000001201cf228 r strings_132.11 -00000001201cf268 r strings_147.12 -00000001201cf280 r strings_149.13 -00000001201cf298 r strings_151.14 -00000001201cf2b0 r strings_154.15 -00000001201cf2d0 r strings_156.16 -00000001201cf2f0 r strings_158.17 -00000001201cf310 r strings_169.18 -00000001201cf320 r strings_228.19 -00000001201cf340 r strings_233.20 -00000001201cf358 r strings_245.21 -00000001201cf368 r strings_247.22 -00000001201cf378 r strings_249.23 -00000001201cf388 r strings_252.24 -00000001201cf398 r strings_261.25 -00000001201cf3a8 r strings_262.26 -00000001201cf3b8 r strings_264.27 -00000001201cf3c8 r strings_281.28 -00000001201cf080 r strings_58.0 -00000001201cf0a0 r strings_61.1 -0000000120058b80 t strip_compound_expr -0000000120038e50 T strip_off_ending -00000001202006a8 S strlen_optab -00000001202007a8 S struct_value_incoming_rtx -0000000120200790 S struct_value_rtx -0000000120113120 t stupid_find_reg -00000001201128c0 T stupid_life_analysis -0000000120113470 t stupid_mark_refs -0000000120113aa0 t stupid_reg_compare -0000000120200478 S sub_optab -00000001201ff238 s subflg -000000012020ba00 B sublevel_ixpansions -00000001200b4110 T subreg_lowpart_p -00000001200b3fc0 T subreg_realpart_p -00000001200d7a80 t subscript_data_attribute -00000001201188c0 t subst -00000001200de850 t subst_constants -0000000120142000 t subst_indexed_address -00000001201ff5d8 s subst_insn -00000001201ff5e8 s subst_low_cuid -00000001201ff5e0 s subst_prev_insn -0000000120141ec0 t subst_reg_equivs -00000001201ff868 s subst_reg_equivs_changed -0000000120143600 T subst_reloads -000000012003e4d0 T substitute_in_expr -000000012003e800 T substitute_in_type -00000001200425a0 T suspend_momentary -00000001200e69c0 T swap_condition -000000012019b560 T sym_lookup -0000000120197460 T symbolic_address_p -0000000120198ae0 T symbolic_operand -00000001201fff18 S symout_time -000000012008d240 t synth_mult -00000001201ff008 s table -0000000120206510 b table -00000001201e8fe0 d table.0 -0000000120067350 t tail_recursion_args -0000000120200200 S tail_recursion_label -0000000120200228 S tail_recursion_reentry -00000001202006e8 S target_flags -00000001201ff960 s target_hash_table -0000000120056170 T target_isinf -00000001200561d0 T target_isnan -0000000120056260 T target_negative -00000001201e8558 D target_options -00000001201e8388 D target_switches -00000001202002e8 S target_temp_slot_level -00000001200a8300 T tdesc_section -0000000120200128 S temp_decl_firstobj -00000001202011a8 b temp_decl_obstack -00000001202066a8 b temp_obstack -0000000120200174 S temp_slot_level -0000000120200180 S temp_slots -00000001200438b0 T temp_tree_cons -0000000120042110 T temporary_allocation -0000000120200120 S temporary_firstobj -000000012020be48 B temporary_obstack -00000001200e3e20 t tension_vector_labels -00000001200a84f0 T text_section -00000001201e79e8 d tfaff -00000001201ff604 s this_basic_block -00000001201ff078 s this_function_bytecode -00000001201ff080 s this_function_calldesc -00000001201ff070 s this_function_callinfo -00000001201ff068 s this_function_decl -00000001201ff3a8 s this_insn -00000001201ff768 s this_insn -00000001201ff850 s this_insn -00000001201ff858 s this_insn_is_asm -00000001201ff764 s this_insn_number -00000001201ffb00 s this_is_asm_operands -00000001200e58c0 T thread_jumps -00000001200613a0 T thread_prologue_and_epilogue_insns -00000001201eb3a5 d tm_rcs_id -00000001200be4f0 t toe113 -00000001200be8d0 t toe24 -00000001200b93d0 t toe53 -00000001200be680 t toe64 -00000001201ffbf8 S token_buffer -00000001202000b0 S toplev_inline_obstacks -00000001201ff5a0 s total_attempts -00000001201ff5a8 s total_extras -00000001201ff5a4 s total_merges -00000001201ff5ac s total_successes -0000000120200a20 S trampoline -000000012005ef80 T trampoline_address -00000001201ff038 s trampoline_list -0000000120145820 T transfer_replacements -0000000120200098 S tree_code_length -0000000120200100 S tree_code_name -00000001202000d8 S tree_code_type -000000012003e370 T tree_cons -0000000120040ed0 T tree_int_cst_equal -0000000120044ac0 T tree_int_cst_lt -0000000120044b70 T tree_int_cst_sgn -0000000120043670 T tree_last -000000012020bd58 B tree_node_counts -00000001201e8f50 D tree_node_kind_names -000000012020bea0 B tree_node_sizes -0000000120164460 T true_dependence -00000001200e7190 T true_regnum -0000000120200570 S truncdfsf2_libfunc -0000000120200450 S trunctfdf2_libfunc -0000000120200628 S trunctfsf2_libfunc -0000000120200640 S truncxfdf2_libfunc -0000000120200390 S truncxfsf2_libfunc -000000012002c1a0 T truthvalue_conversion -0000000120114730 t try_combine -00000001200de6e0 T try_constants -000000012015d8b0 t try_merge_delay_insns -00000001200b2940 T try_split -0000000120200300 S tst_optab -000000012004bce0 t twoval_comparison_p -00000001201fed34 s type.1 -00000001200c9400 t type_attribute -000000012002b270 T type_for_mode -000000012002d3e0 T type_for_size -0000000120044950 T type_hash_add -0000000120040880 T type_hash_canon -0000000120044780 T type_hash_list -00000001200447b0 T type_hash_lookup -000000012020bb80 B type_hash_table -00000001200cede0 t type_is_fundamental -0000000120044a00 T type_list_equal -0000000120019ab0 t type_lists_compatible_p -0000000120045220 T type_precision -00000001201ebdf8 D typecode_mode -0000000120200398 S ucmp_optab -0000000120200508 S udiv_optab -0000000120200620 S udivmod_optab -00000001201ff500 s uid_block_number -00000001201ff400 s uid_cuid -00000001201ff5b0 s uid_cuid -0000000120200850 S uid_loop_num -0000000120200860 S uid_luid -00000001201ff550 s uid_suid -00000001201ff970 s uid_to_ruid -00000001201ff508 s uid_volatile -0000000120200588 S umax_optab -0000000120200590 S umin_optab -00000001202005b8 S umod_optab -0000000120200578 S umul_highpart_optab -00000001202003c0 S umul_widen_optab -000000012001f100 t unary_complex_lvalue -00000001201fed18 s undeclared_variable_notice -0000000120117840 t undo_all -0000000120206700 b undobuf -00000001201ff950 s unfilled_firstobj -00000001202094b0 b unfilled_slots_obstack -0000000120062fe0 T uninitialized_vars_warning -0000000120209770 b unit_last_insn -00000001202097dc b unit_n_insns -00000001202097b8 b unit_tick -00000001201ff49c s unknown_address_altered -00000001201ff248 s unnamed_struct_number -000000012006f630 T unroll_block_trees -0000000120107ce0 T unroll_loop -00000001200b4660 T unshare_all_rtl -00000001201ffce0 S unsigned_char_type_node -00000001200e6a90 T unsigned_condition -000000012002cea0 T unsigned_conversion_warning -00000001201ffd00 S unsigned_intDI_type_node -00000001201ffe48 S unsigned_intHI_type_node -00000001201ffe68 S unsigned_intQI_type_node -00000001201ffcf0 S unsigned_intSI_type_node -000000012020ae18 b unsigned_mode_to_code_map -0000000120024fd0 T unsigned_type -00000001201ffd20 S unsigned_type_node -00000001201ffc70 S unsigned_wchar_type_node -00000001201ffa88 s unused_expr_list -00000001201ffa80 s unused_insn_list -0000000120158050 t update_block -00000001201317d0 t update_equiv_regs -0000000120167ad0 t update_flow_info -00000001201043c0 t update_giv_derive -0000000120159d50 t update_live_status -0000000120133de0 t update_qty_class -0000000120106f50 t update_reg_last_use -000000012012ce30 t update_table_tick -0000000120061cd0 T update_temp_slot_address -00000001201ff0d8 s use_cost_table -0000000120129d70 t use_crosses_set_p -00000001201fef40 S use_gnu_debug_info_extensions -00000001200824b0 T use_reg -0000000120082550 T use_regs -00000001200fc0a0 t use_related_value -0000000120062b70 T use_variable -0000000120062c40 T use_variable_after -000000012010eb40 t uses_reg_or_mem -0000000120039230 t v_message_with_decl -0000000120025ed0 t valid_compound_expr_initializer -0000000120103530 t valid_initial_value_p -00000001200442c0 T valid_machine_attribute -0000000120172eb0 T validate_change -00000001201351a0 t validate_equiv_mem_from_store -0000000120173020 T validate_replace_rtx -0000000120170180 t validate_replace_rtx_1 -0000000120095730 T validize_mem -00000001201fed40 s value.3 -00000001200434b0 T value_member -00000001202006e4 S var_labelno -00000001201ff090 s var_offset -00000001201fffd0 S varconst_time -00000001201ffb90 s variable_args_p -0000000120048ef0 T variable_size -00000001201fec30 G version_string -0000000120200740 S virtual_incoming_args_rtx -0000000120200758 S virtual_outgoing_args_rtx -00000001202007b0 S virtual_stack_dynamic_rtx -0000000120200720 S virtual_stack_vars_rtx -00000001201ff060 s virtuals_instantiated -00000001201ffd40 S void_ftype_ptr_int_int -00000001201ffc50 S void_ftype_ptr_ptr_int -00000001201ffd90 S void_type_node -00000001200aead0 T volatile_insn_p -00000001202009cc S volatile_ok -00000001200aec60 T volatile_refs_p -000000012016e310 t walk_alter_subreg -000000012005bec0 t walk_fixup_memory_subreg -00000001201fedc4 s warn_about_return_type -0000000120200044 S warn_aggregate_return -00000001201ffe24 S warn_bad_function_cast -0000000120200080 S warn_cast_align -00000001201ffd60 S warn_cast_qual -00000001201fed64 S warn_char_subscripts -00000001201ffd10 S warn_conversion -0000000120021280 t warn_for_assignment -00000001201ffe10 S warn_format -00000001201fffe8 S warn_id_clash -00000001200652c0 T warn_if_unused_value -00000001201ffc10 S warn_implicit -00000001201ffed4 S warn_inline -00000001201fff74 S warn_larger_than -00000001201ffc90 S warn_missing_braces -00000001201ffdec S warn_missing_declarations -00000001201ffde8 S warn_missing_prototypes -00000001201fed60 S warn_nested_externs -00000001201ffdfc S warn_parentheses -00000001201ffe30 S warn_pointer_arith -00000001201fed5c S warn_redundant_decls -0000000120200020 S warn_return_type -00000001201fff40 S warn_shadow -00000001201ffc84 S warn_strict_prototypes -00000001201fff70 S warn_switch -00000001201ffda8 S warn_traditional -00000001201fff64 S warn_uninitialized -00000001201ffee4 S warn_unused -00000001201ffc80 S warn_write_strings -0000000120031500 T warning -00000001200310d0 T warning_for_asm -0000000120025f70 t warning_init -00000001201fefd8 s warning_message.0 -0000000120030e20 T warning_with_decl -0000000120030ae0 T warning_with_file_and_line -00000001201fef48 S warningcount -00000001201fefc8 S warnings_are_errors -00000001201ffc20 S wchar_array_type_node -00000001201ffd28 S wchar_type_node -00000001201ff158 s weak_decls -00000001200a9be0 T weak_finish -00000001202009d4 S which_alternative -00000001201341f0 t wipe_dead_reg -00000001202007a0 S word_mode -00000001201e6a58 d wordlist -00000001200c8b80 t write_modifier_bytes -00000001201fef38 S write_symbols -0000000120205f80 b wstring -0000000120038bd0 T xmalloc -00000001202004d8 S xor_optab -0000000120038c30 T xrealloc -00000001200171f0 T xref_tag -00000001201ffbe8 S yychar -00000001201a35c0 r yycheck -00000001201ffbdc S yydebug -00000001201a18ac r yydefact -00000001201a1dd2 r yydefgoto -000000012000ba50 T yyerror -0000000120008e00 T yylex -00000001201ffbe0 S yylval -00000001201ffbd8 S yynerrs -00000001201a1ef2 r yypact -0000000120001ad0 T yyparse -00000001201a2418 r yypgoto -000000012019fc46 r yyprhs -000000012000b900 T yyprint -00000001201a12d0 r yyr1 -00000001201a15be r yyr2 -000000012019ff34 r yyrhs -00000001201a08b8 r yyrline -00000001201a2538 r yytable -00000001201a0ba8 r yytname -000000012019fb08 r yytranslate -00000001201ffbb8 s zero.2 -00000001201ff140 s zero_cost diff --git a/configs/boot/devtime.rcS b/configs/boot/devtime.rcS deleted file mode 100644 index 4d1ca94071..0000000000 --- a/configs/boot/devtime.rcS +++ /dev/null @@ -1,8 +0,0 @@ -insmod /modules/devtime.ko dataAddr=0x9000008 count=100 -rmmod devtime -insmod /modules/devtime.ko dataAddr=0x1a0000300 count=100 -rmmod devtime -insmod /modules/devtime.ko memTest=1 count=100 -rmmod devtime -m5 exit - diff --git a/configs/boot/equake.rcS b/configs/boot/equake.rcS deleted file mode 100644 index 6b799aaf3c..0000000000 --- a/configs/boot/equake.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/equake00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -/benchmarks/spec/equake00/equake < lgred.in -/sbin/m5 exit diff --git a/configs/boot/equake.symbol b/configs/boot/equake.symbol deleted file mode 100644 index 4b28299c10..0000000000 --- a/configs/boot/equake.symbol +++ /dev/null @@ -1,94 +0,0 @@ -000000012001a868 S ARCHcholeskylen -000000012001a878 S ARCHcoord -000000012001a930 S ARCHcorners -000000012001a938 S ARCHduration -000000012001a940 S ARCHelems -000000012001a8b0 S ARCHglobalelem -000000012001a8d0 S ARCHglobalelems -000000012001a8e8 S ARCHglobalnode -000000012001a8a8 S ARCHglobalnodes -000000012001a8d8 S ARCHmatrixcol -000000012001a898 S ARCHmatrixindex -000000012001a924 S ARCHmatrixlen -000000012001a8ac S ARCHmesh_dim -000000012001a8f8 S ARCHmine -000000012001a90c S ARCHnodes -000000012001a908 S ARCHpriv -000000012001a920 S ARCHsubdomains -000000012001a8b8 S ARCHvertex -000000012001a900 S C -000000012001a918 S C23 -000000012001a9a8 B Damp -000000012001a9c8 B Exc -000000012001a8a0 S K -000000012001a928 S M -000000012001a888 S M23 -000000012001a950 B Src -000000012001a890 S V23 -000000012001a388 D _DYNAMIC -000000012001a5f8 D _GLOBAL_OFFSET_TABLE_ -000000012001a848 G _IO_stdin_used -000000012001a550 T _PROCEDURE_LINKAGE_TABLE_ -000000012001a530 d __CTOR_END__ -000000012001a528 d __CTOR_LIST__ -000000012001a540 d __DTOR_END__ -000000012001a538 d __DTOR_LIST__ -000000012001a384 r __FRAME_END__ -000000012001a548 d __JCR_END__ -000000012001a548 d __JCR_LIST__ -000000012001a860 A __bss_start -000000012001a000 D __data_start -0000000120008c50 t __do_global_ctors_aux -00000001200008d0 t __do_global_dtors_aux -000000012001a850 G __dso_handle -000000012001a000 A __fini_array_end -000000012001a000 A __fini_array_start -000000012001a000 A __init_array_end -000000012001a000 A __init_array_start -0000000120008bb0 T __libc_csu_fini -0000000120008b00 T __libc_csu_init -0000000120000890 W __start -000000012001a860 A _edata -000000012001a9e0 A _end -0000000120008cb0 T _fini -0000000120000828 T _init -0000000120000890 T _start -00000001200049c4 T abe_matrix -00000001200056b8 T arch_bail -00000001200056e4 T arch_info -0000000120006584 T arch_init -00000001200057e0 T arch_parsecommandline -0000000120005bf4 T arch_readdouble -0000000120005ad0 T arch_readelemvector -00000001200059ac T arch_readnodevector -0000000120004530 T area_triangle -00000001200051e8 T centroid -000000012001a860 s completed.1 -000000012001a000 W data_start -000000012001a948 S disp -00000001200050bc T distance -0000000120003c70 T element_matrices -0000000120000970 t frame_dummy -00000001200036f8 T get_Enu -0000000120003820 T inv_J -00000001200009c0 T main -0000000120007a88 T mem_init -00000001200054b8 T mv12x12 -000000012001a8c0 S nodekind -000000012001a910 S nodekindf -000000012001a8f0 S options -000000012001a858 g p.0 -000000012001a8c8 S packfile -0000000120004bc4 T phi0 -0000000120004cc4 T phi1 -0000000120004d98 T phi2 -00000001200052e8 T point2fault -000000012001a870 S progname -0000000120005cd8 T readpackfile -000000012000360c T shape_ders -0000000120004e84 T slip -0000000120006604 T smvp -00000001200070f8 T smvp_opt -000000012001a880 S source_elms -000000012001a8e0 S vel -000000012000561c T vv12x12 diff --git a/configs/boot/gcc.rcS b/configs/boot/gcc.rcS deleted file mode 100644 index 6bcd7e03d4..0000000000 --- a/configs/boot/gcc.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/gcc00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -./cc1 mdred.rtlanal.i -/sbin/m5 exit diff --git a/configs/boot/gzip.rcS b/configs/boot/gzip.rcS deleted file mode 100644 index c7aca7e9b1..0000000000 --- a/configs/boot/gzip.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/gzip00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -./gzip lgred.log 1 -/sbin/m5 exit diff --git a/configs/boot/gzip.symbol b/configs/boot/gzip.symbol deleted file mode 100644 index d965c99a98..0000000000 --- a/configs/boot/gzip.symbol +++ /dev/null @@ -1,268 +0,0 @@ -0000000120022c08 D _DYNAMIC -0000000120022fd0 D _GLOBAL_OFFSET_TABLE_ -0000000120023498 G _IO_stdin_used -0000000120022dc0 T _PROCEDURE_LINKAGE_TABLE_ -0000000120022da0 d __CTOR_END__ -0000000120022d98 d __CTOR_LIST__ -0000000120022db0 d __DTOR_END__ -0000000120022da8 d __DTOR_LIST__ -0000000120022c04 r __FRAME_END__ -0000000120022db8 d __JCR_END__ -0000000120022db8 d __JCR_LIST__ -00000001200234f8 A __bss_start -0000000120021030 D __data_start -000000012000fbc0 t __do_global_ctors_aux -00000001200012a0 t __do_global_dtors_aux -00000001200234a0 G __dso_handle -0000000120021030 A __fini_array_end -0000000120021030 A __fini_array_start -0000000120021030 A __init_array_end -0000000120021030 A __init_array_start -000000012000fb20 T __libc_csu_fini -000000012000fa70 T __libc_csu_init -0000000120001260 W __start -00000001200234f8 A _edata -0000000120073b10 A _end -000000012000fc20 T _fini -00000001200011f8 T _init -0000000120001260 T _start -0000000120004cf0 T abort_gzip -000000012000de80 T add_envopt -0000000120023550 S args -0000000120023520 S ascii -000000012002551c b base_dist -00000001200254a8 b base_length -0000000120023698 S bb -00000001200234fc s bi_buf -0000000120001ad0 T bi_init -0000000120001b20 T bi_reverse -0000000120023500 s bi_valid -00000001200015d0 T bi_windup -00000001200235b8 s bitbuf -00000001200235e0 s bitbuf -00000001200235c0 s bitcount -0000000120023690 S bk -0000000120024654 b bl_count -0000000120021830 d bl_desc -0000000120021858 d bl_order -00000001200245b8 b bl_tree -00000001200234ec G block_mode -0000000120023610 S block_start -00000001200235b4 s blocksize -0000000120021540 d border -0000000120009620 t build_tree -0000000120023650 S bytes_in -0000000120023668 S bytes_out -0000000120004740 t check_ofname -000000012000d5c0 T check_zipfile -000000012000e540 T clear_bufs -00000001200234f8 s completed.1 -0000000120023518 s compr_level -00000001200092e0 t compress_block -00000001200235a0 s compressed_len -0000000120021030 d configuration_table -000000012000e280 T copy -00000001200017d0 T copy_block -0000000120004ae0 t copy_stat -0000000120021644 d cpdext -0000000120021608 d cpdist -000000012002158c d cplens -00000001200215ca d cplext -00000001200235f8 s crc -00000001200234f0 g crc.0 -0000000120021870 D crc_32_tab -0000000120002b90 t create_outfile -0000000120008450 T ct_init -0000000120008f60 T ct_tally -000000012002ea20 B d_buf -0000000120021808 d d_desc -0000000120021030 W data_start -00000001200234e8 G dbglvl -00000001200234e4 G dbits -0000000120008440 T debug_time -000000012000a5e0 t decode -000000012000ad50 t decode_c -000000012000ab90 t decode_start -0000000120023528 S decompress -00000001200236c0 S decrypt -0000000120002250 T deflate -0000000120002770 t deflate_fast -0000000120024f68 b depth -000000012000ee70 T display_ratio -00000001200252a5 b dist_code -0000000120004c60 t do_exit -0000000120003f00 t do_list -0000000120023540 S do_lzw -00000001200235c8 s done -0000000120023fcc b dyn_dtree -00000001200236d8 b dyn_ltree -0000000120023678 S env -000000012002350c s eofile -000000012000e1c0 T error -0000000120023548 S exit_code -00000001200235f4 S ext_header -0000000120021794 d extra_blbits -000000012002171c d extra_dbits -00000001200216a8 d extra_lbits -00000001200236b8 S file_method -000000012000f9c0 T file_read -00000001200236b0 S file_type -000000012000e580 T fill_inbuf -0000000120002030 t fill_window -00000001200234d8 g first_time.2 -000000012002358d s flag_bit -0000000120025594 b flag_buf -000000012002358c s flags -0000000120008ba0 T flush_block -000000012000e730 T flush_outbuf -000000012000e860 T flush_window -000000012002352c S force -0000000120023640 S foreground -0000000120001340 t frame_dummy -000000012000a1a0 t gen_bitlen -0000000120008a80 t gen_codes -0000000120002dd0 t get_istat -00000001200032c0 T get_method -0000000120004d50 t get_suffix -0000000120023618 S good_match -000000012000ebf0 T gzipbasename -00000001200236d0 S header_bytes -0000000120024674 b heap -0000000120023578 s heap_len -000000012002357c s heap_max -00000001200214b8 d help_msg.5 -0000000120004ee0 T huft_build -0000000120005670 T huft_free -00000001200236a0 S hufts -00000001200235b0 s i.0 -0000000120023688 S ifd -0000000120023658 S ifile_size -000000012005eea8 B ifname -000000012002356c s in_exit.4 -00000001200269e0 B inbuf -0000000120006e00 T inflate -0000000120006bf0 T inflate_block -00000001200056d0 T inflate_codes -00000001200062b0 T inflate_dynamic -00000001200060f0 T inflate_fixed -0000000120005e10 T inflate_stored -0000000120008960 t init_block -0000000120023684 S inptr -00000001200235a8 s input_len -0000000120023508 s ins_h -0000000120023644 S insize -000000012003ea20 B istat -00000001200235c4 s j -00000001200236c8 S key -00000001200213f8 d known_suffixes.0 -00000001200217e0 d l_desc -0000000120023584 s last_dist -0000000120023588 s last_flags -0000000120023580 s last_lit -000000012002364c S last_member -00000001200234e0 G lbits -0000000120026910 b leaves -00000001200251a5 b length_code -00000001200234c8 G level -0000000120021080 d license_msg -0000000120023534 S list -00000001200268a8 b lit_base -00000001200267a8 b literal -0000000120001b60 T lm_init -0000000120001d90 T longest_match -00000001200210f8 D longopts -0000000120023510 s lookahead -0000000120006ed0 T lzw -0000000120007a80 T main -0000000120003040 t make_ofname -000000012000ec40 T make_simple_name -000000012000c130 t make_table -0000000120021680 D mask_bits -0000000120023624 S match_start -000000012002361c S max_chain_length -0000000120023514 s max_lazy_match -00000001200235d8 s max_len -00000001200234c0 G maxbits -00000001200234c4 G method -0000000120021470 d methods.3 -0000000120023570 s msg_done -0000000120004310 t name_too_long -0000000120023608 S nice_match -00000001200234b8 G no_name -00000001200234bc G no_time -0000000120023630 S ofd -000000012003eaa8 B ofname -0000000120023590 s opt_len -00000001200235d0 s orig_len -000000012005f2a8 B outbuf -0000000120023648 S outcnt -00000001200234a8 g p.0 -0000000120026978 b parents -0000000120023680 S part_nb -00000001200235dc s peek_bits -00000001200235f0 S pkzip -000000012003eea8 B prev -000000012002360c S prev_length -0000000120023628 S progname -0000000120026594 b pt_len -00000001200265a8 b pt_table -000000012002353c S quiet -00000001200080c0 T ran -0000000120023600 S read_buf -000000012000b8c0 t read_c_len -000000012000ed50 T read_error -000000012000b130 t read_pt_len -000000012000d2a0 t read_tree -0000000120023530 S recursive -0000000120023568 S remove_ofname -0000000120023660 S save_orig_name -0000000120009d90 t scan_tree -00000001200236a8 S seedi -0000000120001390 T send_bits -0000000120009f40 t send_tree -0000000120009540 t set_file_type -0000000120004420 t shorten_name -0000000120007f90 T spec_compress -0000000120073ac8 B spec_fd -0000000120007800 T spec_getc -0000000120006f70 T spec_init -0000000120007f40 T spec_initbufs -0000000120007430 T spec_load -0000000120008350 T spec_putc -0000000120007090 T spec_random_load -0000000120007670 T spec_read -00000001200081b0 T spec_reset -0000000120008190 T spec_rewind -0000000120008010 T spec_uncompress -0000000120007930 T spec_ungetc -0000000120008210 T spec_write -0000000120024540 b static_dtree -0000000120023598 s static_len -00000001200240c0 b static_ltree -000000012000eb20 T strlwr -0000000120023620 S strstart -00000001200235bc s subbitbuf -0000000120021440 d suffixes.1 -0000000120023544 S test -0000000120023638 S time_stamp -0000000120023524 S to_stdout -0000000120023558 S total_in -0000000120023560 S total_out -000000012000a510 T unlzh -000000012000c5c0 T unlzw -000000012000cde0 T unpack -000000012000d7a0 T unzip -000000012000e4c0 T updcrc -00000001200235e8 s valid -0000000120023538 S verbose -000000012000ecd0 T warn -0000000120063aa8 B window -00000001200234b0 G window_size -00000001200234d0 G work -000000012000ea20 T write_buf -000000012000ee00 T write_error -000000012000e220 T xmalloc -0000000120023670 S z_len -0000000120073aa8 B z_suffix -0000000120023504 s zfile -000000012000ef80 T zip diff --git a/configs/boot/iscsi-client.rcS b/configs/boot/iscsi-client.rcS deleted file mode 100644 index cfa87652e0..0000000000 --- a/configs/boot/iscsi-client.rcS +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig lo 127.0.0.1 -/sbin/ifconfig eth0 192.168.0.10 txqueuelen 1000 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -#echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "1" > /proc/sys/vm/dirty_writeback_centisecs -echo "done." - -cat > /etc/initiatorname.iscsi < /etc/iscsid.conf < /var/log/iscsi.log -chmod 0600 /var/log/iscsi.log -chmod 0666 -R /var/db/iscsi - -# Required for udev to activate/deactivate devices. -echo "/sbin/hotplug" > /proc/sys/kernel/hotplug - -/sbin/insmod /modules/scsi_transport_iscsi.ko -/sbin/insmod /modules/iscsi_tcp.ko - -echo "Starting iscsid..." -/iscsi/iscsid -f & - -sleep 1 - -echo "Waiting for server..." -netcat -c -l -p 8000 - -echo "Attaching target..." -/iscsi/iscsiadm -m discovery -t st -p 192.168.0.1 -/iscsi/iscsiadm -m node -r a0c049 --login -echo "done." - -sleep 5 - -#PARAMS="-n 8 -s 8 -r .666 -c 50" # lisa default -#PARAMS="-n 8 -s 5120 -r .666 -c 20" # very unstable -#PARAMS="-n 8 -s 8 -r 0 -c 20" # very unstable -#PARAMS="-n 8 -s 8 -r 1 -c 20" # stable 960 Mbps -#PARAMS="-n 8 -s 1024 -r 1 -c 20" # very unstable -#PARAMS="-n 16 -s 32 -r 1 -c 50" # stable ~1.5 Gbps -#PARAMS="-n 50 -s 32 -r 1 -c 50" # stable ~1.5 Gbps -PARAMS="-n 50 -s 8 -r .666 -c 50" -COMMAND="/benchmarks/aio-bench $PARAMS -i 1000000 -C 50000 /dev/sda" - -echo "Starting aio benchmark..." -echo $COMMAND -eval $COMMAND - -echo "starting bash shell..." -/bin/bash - -echo -n "halting machine" -m5 exit diff --git a/configs/boot/iscsi-server.rcS b/configs/boot/iscsi-server.rcS deleted file mode 100644 index 210f4eaef1..0000000000 --- a/configs/boot/iscsi-server.rcS +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig lo 127.0.0.1 -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "10" > /proc/sys/vm/dirty_writeback_centisecs -echo "done." - -# specific for iscsi-target -MEM_SIZE=1048576 -echo ${MEM_SIZE} > /proc/sys/net/core/wmem_max -echo ${MEM_SIZE} > /proc/sys/net/core/rmem_max -echo ${MEM_SIZE} > /proc/sys/net/core/wmem_default -echo ${MEM_SIZE} > /proc/sys/net/core/rmem_default -echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_mem -echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_rmem -echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_wmem - -mke2fs -F /dev/sda - -cat > /etc/ietd.conf < /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for natbox..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_MAERTS" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/nat-netperf-server.rcS b/configs/boot/nat-netperf-server.rcS deleted file mode 100644 index 23b99a13a0..0000000000 --- a/configs/boot/nat-netperf-server.rcS +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -SERVER=192.168.0.1 -CLIENT=10.0.0.2 -NATBOX=192.168.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $SERVER txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "running netserver..." -/benchmarks/netperf-bin/netserver - -echo -n "signal natbox to begin..." -sleep 5 -echo "server ready" | netcat -c $NATBOX 8000 -echo "done." - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/nat-netperf-stream-client.rcS b/configs/boot/nat-netperf-stream-client.rcS deleted file mode 100644 index f20e92c5c1..0000000000 --- a/configs/boot/nat-netperf-stream-client.rcS +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -SERVER=192.168.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "modifying route table" -route add default gw 10.0.0.1 - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_STREAM" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/nat-spec-surge-client.rcS b/configs/boot/nat-spec-surge-client.rcS deleted file mode 100644 index d26e38378d..0000000000 --- a/configs/boot/nat-spec-surge-client.rcS +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# -CLIENT=10.0.0.2 -SERVER=192.168.0.1 - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 $CLIENT txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo "changing route table..." -route add default gw 10.0.0.1 - -echo "waiting for server..." -netcat -c -l -p 8000 - -echo -n "running surge client..." -/bin/bash -c "cd /benchmarks/surge && ./spec-m5 1 20 1 $SERVER 5 40000 1000000000 1000" -echo "done." - -echo -n "halting machine" -m5 exit - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/nat-spec-surge-server.rcS b/configs/boot/nat-spec-surge-server.rcS deleted file mode 100755 index 0f462568cc..0000000000 --- a/configs/boot/nat-spec-surge-server.rcS +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# -NATBOX=192.168.0.7 - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 -/sbin/ifconfig eth0:1 192.168.0.2 txqueuelen 1000 -/sbin/ifconfig eth0:2 192.168.0.3 txqueuelen 1000 -/sbin/ifconfig eth0:3 192.168.0.4 txqueuelen 1000 -/sbin/ifconfig eth0:4 192.168.0.5 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "mounting file set..." -mkdir -p /z/htdocs -mount /dev/hdb1 /z/htdocs -echo "done." - -echo -n "starting httpd..." -/benchmarks/apache2/bin/apachectl start -sleep 2 -cat /benchmarks/apache2/logs/error_log -echo "done." - -echo "notifying natbox..." -sleep 5 -echo "server ready" | netcat -c $NATBOX 8000 -echo "done" - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/natbox-netperf.rcS b/configs/boot/natbox-netperf.rcS deleted file mode 100644 index e6384757e5..0000000000 --- a/configs/boot/natbox-netperf.rcS +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -EXTIF=192.168.0.2 -INTIF=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $EXTIF txqueuelen 1000 -ifconfig eth1 $INTIF txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog -echo "1" > /proc/sys/net/ipv4/ip_forward - -echo "waiting for netserver..." -netcat -c -l -p 8000 - -echo "setting up iptables..." -IPTABLES=/sbin/iptables -EXTIF=eth0 -INTIF=eth1 - -$IPTABLES -P INPUT ACCEPT -$IPTABLES -F INPUT -$IPTABLES -P OUTPUT ACCEPT -$IPTABLES -F OUTPUT -$IPTABLES -P FORWARD DROP -$IPTABLES -F FORWARD -$IPTABLES -t nat -F - -$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT -$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT -$IPTABLES -A FORWARD -j LOG - -$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE - -echo "informing client..." -sleep 5 -echo "server ready" | netcat -c $CLIENT 8000 - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/natbox-spec-surge.rcS b/configs/boot/natbox-spec-surge.rcS deleted file mode 100644 index 4346a62296..0000000000 --- a/configs/boot/natbox-spec-surge.rcS +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -EXTIF=192.168.0.7 -INTIF=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $EXTIF txqueuelen 1000 -ifconfig eth1 $INTIF txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "1" > /proc/sys/net/ipv4/ip_forward - -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max - -echo "waiting for netserver..." -netcat -c -l -p 8000 - -echo "setting up iptables..." -IPTABLES=/sbin/iptables -EXTIF=eth0 -INTIF=eth1 - -$IPTABLES -P INPUT ACCEPT -$IPTABLES -F INPUT -$IPTABLES -P OUTPUT ACCEPT -$IPTABLES -F OUTPUT -$IPTABLES -P FORWARD DROP -$IPTABLES -F FORWARD -$IPTABLES -t nat -F - -$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT -$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT -$IPTABLES -A FORWARD -j LOG - -$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE - -echo "informing client..." -sleep 5 -echo "server ready" | netcat -c $CLIENT 8000 - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/netperf-maerts-client.rcS b/configs/boot/netperf-maerts-client.rcS deleted file mode 100644 index 7766713aa5..0000000000 --- a/configs/boot/netperf-maerts-client.rcS +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -/usr/bin/netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_MAERTS" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT -NUMCLNTS=`/sbin/m5 initparam` -[ "$NUMCLNTS" -eq "0" ] && NUMCLNTS=1 - -echo "netperf benchmark... starting $NUMCLNTS..." -lcv=0 - -while [ "$lcv" -lt "$NUMCLNTS" ] -do - echo $LONG - eval $LONG & - ((lcv += 1)) -done - -ckpt=200000000 -((ckpt = ckpt * 12/3 + 600000000)) - -echo "configuring checkpointing at $ckpt..." -/sbin/m5 checkpoint $ckpt 2000000000 -echo "done configuring checkpointing..." -sleep 100000 - diff --git a/configs/boot/netperf-rr.rcS b/configs/boot/netperf-rr.rcS deleted file mode 100644 index 1467c1f67a..0000000000 --- a/configs/boot/netperf-rr.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_RR" -SHORT_ARGS="-l -1k" -LONG_ARGS="-k10000,0 -K10000,0" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-server.rcS b/configs/boot/netperf-server.rcS deleted file mode 100644 index 95a4ac4cf5..0000000000 --- a/configs/boot/netperf-server.rcS +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $SERVER txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "running netserver..." -/benchmarks/netperf-bin/netserver - -echo -n "signal client to begin..." -sleep 1 -echo "server ready" | netcat -c $CLIENT 8000 -echo "done." - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/netperf-stream-client.rcS b/configs/boot/netperf-stream-client.rcS deleted file mode 100644 index 9a2cc0ec1f..0000000000 --- a/configs/boot/netperf-stream-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_STREAM" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-stream-nt-client.rcS b/configs/boot/netperf-stream-nt-client.rcS deleted file mode 100644 index 5681155250..0000000000 --- a/configs/boot/netperf-stream-nt-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_STREAM" -SHORT_ARGS="-l -100k" -LONG_ARGS="-- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-stream-udp-client.rcS b/configs/boot/netperf-stream-udp-client.rcS deleted file mode 100644 index 4acb4243af..0000000000 --- a/configs/boot/netperf-stream-udp-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="UDP_STREAM" -SHORT_ARGS="-l 2 -- -m 16384 -M 16384 -s 262144 -S 262144" -#LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -#echo "netperf benchmark" -#echo $LONG -#/sbin/m5 ivlb 1 -#/sbin/m5 resetstats -#/sbin/m5 dumpresetstats 200000000 2000000000 -#/sbin/m5 checkpoint 200000000 2000000000 -#eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-stream-udp-local.rcS b/configs/boot/netperf-stream-udp-local.rcS deleted file mode 100644 index ccd7654e26..0000000000 --- a/configs/boot/netperf-stream-udp-local.rcS +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -SERVER=127.0.0.1 -CLIENT=127.0.0.1 - -echo "setting up network..." -ifconfig lo 127.0.0.1 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="UDP_STREAM" -SHORT_ARGS="-l 2 -- -m 4096" - -echo "running netserver..." -/benchmarks/netperf-bin/netserver - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" - -echo "starting test..." -echo $SHORT -eval $SHORT - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-dbench.rcS b/configs/boot/nfs-client-dbench.rcS deleted file mode 100644 index 29b5043bfc..0000000000 --- a/configs/boot/nfs-client-dbench.rcS +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "10" > /proc/sys/vm/dirty_writeback_centisecs -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -/usr/bin/netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount 10.0.0.1:/nfs /nfs -echo "done." - -cd /nfs - -initparam=`m5 initparam` - -if test X$initparam == X0; then - /sbin/m5 checkpoint 100000000 2000000000 - dd if=/dev/zero of=foo bs=1024k count=512 -else - /sbin/m5 checkpoint 1000000000 2000000000 - /benchmarks/dbench/dbench $initparam -fi - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-nhfsstone.rcS b/configs/boot/nfs-client-nhfsstone.rcS deleted file mode 100755 index c59655a474..0000000000 --- a/configs/boot/nfs-client-nhfsstone.rcS +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount 10.0.0.1:/nfs /nfs -echo "done." - -/sbin/m5 checkpoint 8000000000 2000000000 -/sbin/nhfsstone /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-smallb.rcS b/configs/boot/nfs-client-smallb.rcS deleted file mode 100755 index 375da1f591..0000000000 --- a/configs/boot/nfs-client-smallb.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -/usr/bin/netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount -o rsize=1460,wsize=1460 10.0.0.1:/nfs /nfs -echo "done." - -/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-tcp-smallb.rcS b/configs/boot/nfs-client-tcp-smallb.rcS deleted file mode 100755 index b71ca0bf18..0000000000 --- a/configs/boot/nfs-client-tcp-smallb.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount -o rsize=1460,wsize=1460,tcp 10.0.0.1:/nfs /nfs -echo "done." - -/usr/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-tcp.rcS b/configs/boot/nfs-client-tcp.rcS deleted file mode 100755 index e707ef2578..0000000000 --- a/configs/boot/nfs-client-tcp.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount -o tcp 10.0.0.1:/nfs /nfs -echo "done." - -/usr/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client.rcS b/configs/boot/nfs-client.rcS deleted file mode 100755 index f3fbe04677..0000000000 --- a/configs/boot/nfs-client.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount 10.0.0.1:/nfs /nfs -echo "done." - -/usr/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-server-nhfsstone.rcS b/configs/boot/nfs-server-nhfsstone.rcS deleted file mode 100755 index 7fa44a5f29..0000000000 --- a/configs/boot/nfs-server-nhfsstone.rcS +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.1 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -#if [ ! -x /dev/sda ] -#then -# mknod /dev/sda b 8 0 -# mknod /dev/sda1 b 8 1 -#fi - -/sbin/insmod /modules/scsi_debug.ko dev_size_mb=80 - -echo -n "creating partition and formatting..." -/sbin/mke2fs -F /dev/sda -mkdir /nfs -/bin/mount /dev/sda /nfs -chmod a+rwx /nfs -echo "done." - -echo "/nfs 10.0.0.0/255.0.0.0(rw,sync,no_root_squash)" > /etc/exports -echo -n "starting nfs kernel server..." -/sbin/portmap -/sbin/lockd -/sbin/statd -/sbin/nfsd 8 -/sbin/mountd -echo "done." - -echo "Exporting shares..." -/sbin/exportfs -r -v - -echo -n "signal client to mount..." -sleep 5 -echo "server ready" | netcat -c 10.0.0.2 8000 -echo "done." - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/nfs-server.rcS b/configs/boot/nfs-server.rcS deleted file mode 100755 index 7314d06c30..0000000000 --- a/configs/boot/nfs-server.rcS +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.1 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -#if [ ! -x /dev/sda ] -#then -# mknod /dev/sda b 8 0 -# mknod /dev/sda1 b 8 1 -#fi - -/sbin/insmod /modules/scsi_debug.ko dev_size_mb=768 - -echo -n "creating partition and formatting..." -#echo "1,767,L" > /tmp/sfdisk.run -#/usr/sbin/sfdisk -uM --force /dev/sda < /tmp/sfdisk.run -/sbin/mke2fs -F /dev/sda -mkdir /nfs -/bin/mount /dev/sda /nfs -chmod a+rwx /nfs -#/usr/sbin/sfdisk -uM -l /dev/sda -echo "done." - -echo "/nfs 10.0.0.0/255.0.0.0(rw,sync,no_root_squash)" > /etc/exports -echo -n "starting nfs kernel server..." -/sbin/portmap -/sbin/lockd -/sbin/statd -/sbin/nfsd 15 -/sbin/mountd -echo "done." - -echo "Exporting shares..." -/sbin/exportfs -r -v - -echo -n "signal client to mount..." -echo "server ready" | netcat -c 10.0.0.2 8000 -echo "done." - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/null.rcS b/configs/boot/null.rcS deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/configs/boot/ping-client.rcS b/configs/boot/ping-client.rcS deleted file mode 100644 index a147fb2458..0000000000 --- a/configs/boot/ping-client.rcS +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -ping -c 5 $SERVER -/sbin/m5 exit diff --git a/configs/boot/ping-server.rcS b/configs/boot/ping-server.rcS deleted file mode 100644 index 311c80212b..0000000000 --- a/configs/boot/ping-server.rcS +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $SERVER txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "signal client to begin..." -echo "server ready" | netcat -c $CLIENT 8000 -echo "done." - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/setup b/configs/boot/setup deleted file mode 100644 index 842e50a4ab..0000000000 --- a/configs/boot/setup +++ /dev/null @@ -1,37 +0,0 @@ -ifconfig eth1 mtu 9000 txqueuelen 1000 up - -### IPV4 specific settings -# turns TCP timestamp support off, default 1, reduces CPU use -echo "0" > /proc/sys/net/ipv4/tcp_timestamps - -# turn SACK support off, default on -echo "0" > /proc/sys/net/ipv4/tcp_sack - -# sets min/default/max TCP read buffer, default 4096 87380 174760 -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem - -# sets min/pressure/max TCP write buffer, default 4096 16384 131072 -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem - -# sets min/pressure/max TCP buffer space, default 31744 32256 32768 -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem - -### CORE settings (mostly for socket and UDP effect) -# maximum receive socket buffer size, default 131071 -echo "524287" > /proc/sys/net/core/rmem_max - -# maximum send socket buffer size, default 131071 -echo "524287" > /proc/sys/net/core/wmem_max - -# default receive socket buffer size, default 65535 -echo "524287" > /proc/sys/net/core/rmem_default - -# default send socket buffer size, default 65535 -echo "524287" > /proc/sys/net/core/wmem_default - -# maximum amount of option memory buffers, default 10240 -echo "524287" > /proc/sys/net/core/optmem_max - -# number of unprocessed input packets before kernel starts dropping them, -# default 300 -echo "300000" > /proc/sys/net/core/netdev_max_backlog diff --git a/configs/boot/spec-surge-client.rcS b/configs/boot/spec-surge-client.rcS deleted file mode 100644 index 0dd2ba7dbb..0000000000 --- a/configs/boot/spec-surge-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.10 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo "waiting for server..." -netcat -c -l -p 8000 - -echo -n "running surge client..." -/bin/bash -c "cd /benchmarks/surge && ./spec-m5 1 20 1 192.168.0.1 5 40000 1000000000 1000" -echo "done." - -echo -n "halting machine" -m5 exit - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/spec-surge-server.rcS b/configs/boot/spec-surge-server.rcS deleted file mode 100755 index 89a3fb4f5f..0000000000 --- a/configs/boot/spec-surge-server.rcS +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 -/sbin/ifconfig eth0:1 192.168.0.2 txqueuelen 1000 -/sbin/ifconfig eth0:2 192.168.0.3 txqueuelen 1000 -/sbin/ifconfig eth0:3 192.168.0.4 txqueuelen 1000 -/sbin/ifconfig eth0:4 192.168.0.5 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "mounting file set..." -mkdir -p /z/htdocs -mount /dev/hdb1 /z/htdocs -echo "done." - -echo -n "starting httpd..." -/usr/sbin/apache2 -f /etc/apache2/httpd.conf -k start -sleep 2 -cat /usr/share/apache2/logs/error_log -echo "done." - -echo "notifying client..." -echo "server ready" | netcat -c 192.168.0.10 8000 -echo "done" - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/surge-client.rcS b/configs/boot/surge-client.rcS deleted file mode 100755 index ba7d87f66d..0000000000 --- a/configs/boot/surge-client.rcS +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.10 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo "waiting for server..." -netcat -c -l -p 8000 - -echo -n "running surge client..." -/bin/bash -c "cd /benchmarks/specsurge && ./Surge 2 100 1 192.168.0.1 5" -echo "done." - -echo -n "halting machine" -m5 exit - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/surge-server.rcS b/configs/boot/surge-server.rcS deleted file mode 100755 index 140c02fb31..0000000000 --- a/configs/boot/surge-server.rcS +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 -/sbin/ifconfig eth0:1 192.168.0.2 txqueuelen 1000 -/sbin/ifconfig eth0:2 192.168.0.3 txqueuelen 1000 -/sbin/ifconfig eth0:3 192.168.0.4 txqueuelen 1000 -/sbin/ifconfig eth0:4 192.168.0.5 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "mounting file set..." -mkdir -p /z/htdocs -mount /dev/hdb1 /z/htdocs -echo "done." - -echo -n "starting httpd..." -/usr/sbin/apache2 -f /etc/apache2/httpd.conf -k start -sleep 2 -cat /usr/share/apache2/logs/error_log -echo "done." - -echo "server ready" | netcat -c 192.168.10 8000 - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index d49ad78e75..e15459370c 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -41,12 +41,17 @@ from __future__ import print_function from __future__ import absolute_import +import six + import m5 from m5.objects import * from m5.util import * from common.Benchmarks import * from common import ObjectList +if six.PY3: + long = int + # Populate to reflect supported os types per target ISA os_types = { 'mips' : [ 'linux' ], 'riscv' : [ 'linux' ], # TODO that's a lie @@ -574,7 +579,7 @@ def makeLinuxX86System(mem_mode, numCPUs=1, mdesc=None, Ruby=False, # We assume below that there's at least 1MB of memory. We'll require 2 # just to avoid corner cases. - phys_mem_size = sum(map(lambda r: r.size(), self.mem_ranges)) + phys_mem_size = sum([r.size() for r in self.mem_ranges]) assert(phys_mem_size >= 0x200000) assert(len(self.mem_ranges) <= 2) diff --git a/configs/common/FileSystemConfig.py b/configs/common/FileSystemConfig.py index 97279f1bc8..ec27656e05 100644 --- a/configs/common/FileSystemConfig.py +++ b/configs/common/FileSystemConfig.py @@ -132,7 +132,7 @@ def config_filesystem(system, options = None): file_append((procdir, 'cpuinfo'), one_cpu) file_append((procdir, 'stat'), 'cpu 0 0 0 0 0 0 0\n') - for i in xrange(len(cpus)): + for i in range(len(cpus)): file_append((procdir, 'stat'), 'cpu%d 0 0 0 0 0 0 0\n' % i) # Set up /sys diff --git a/configs/common/HMC.py b/configs/common/HMC.py index c65b201b7f..c4c0acc9e3 100644 --- a/configs/common/HMC.py +++ b/configs/common/HMC.py @@ -432,7 +432,7 @@ def config_hmc_dev(opt, system, hmc_host): for i in range(numx*(opt.mem_chunk-1))] # Buffer iterator - it = iter(range(len(system.hmc_dev.buffers))) + it = iter(list(range(len(system.hmc_dev.buffers)))) # necesarry to add system_port to one of the xbar system.system_port = system.hmc_dev.xbar[3].slave @@ -443,7 +443,7 @@ def config_hmc_dev(opt, system, hmc_host): # connect xbar to all other xbars except itself if i != j: # get the next index of buffer - index = it.next() + index = next(it) # Change the default values for ranges of bridge system.hmc_dev.buffers[index].ranges = system.mem_ranges[ diff --git a/configs/common/ObjectList.py b/configs/common/ObjectList.py index 8bffa5fe08..c91ea0c653 100644 --- a/configs/common/ObjectList.py +++ b/configs/common/ObjectList.py @@ -75,7 +75,7 @@ class ObjectList(object): print("Available {} classes:".format(self.base_cls)) doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t") - for name, cls in self._sub_classes.items(): + for name, cls in list(self._sub_classes.items()): print("\t{}".format(name)) # Try to extract the class documentation from the class help @@ -87,7 +87,7 @@ class ObjectList(object): if self._aliases: print("\Aliases:") - for alias, target in self._aliases.items(): + for alias, target in list(self._aliases.items()): print("\t{} => {}".format(alias, target)) def get_names(self): @@ -156,7 +156,7 @@ class EnumList(ObjectList): def _add_objects(self): """ Add all enum values to the ObjectList """ self._sub_classes = {} - for (key, value) in self.base_cls.__members__.items(): + for (key, value) in list(self.base_cls.__members__.items()): # All Enums have a value Num_NAME at the end which we # do not want to include if not key.startswith("Num_"): diff --git a/configs/common/Options.py b/configs/common/Options.py index 6d0c6c295b..3eff04bf9a 100644 --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -110,7 +110,7 @@ def addNoISAOptions(parser): help="Specify the physical memory size (single memory)") parser.add_option("--enable-dram-powerdown", action="store_true", help="Enable low-power states in DRAMCtrl") - parser.add_option("--mem-channels-intlv", type="int", + parser.add_option("--mem-channels-intlv", type="int", default=0, help="Memory channels interleave") diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py index 73a0ff5413..e53c755c6c 100644 --- a/configs/common/Simulation.py +++ b/configs/common/Simulation.py @@ -40,6 +40,7 @@ from __future__ import print_function from __future__ import absolute_import +import six import sys from os import getcwd from os.path import join as joinpath @@ -52,6 +53,9 @@ from m5.defines import buildEnv from m5.objects import * from m5.util import * +if six.PY3: + long = int + addToPath('../common') def getCPUClass(cpu_type): diff --git a/configs/common/SysPaths.py b/configs/common/SysPaths.py index f37039e1ef..440b0cfea0 100644 --- a/configs/common/SysPaths.py +++ b/configs/common/SysPaths.py @@ -55,10 +55,10 @@ class PathSearchFunc(object): paths = [ '/dist/m5/system', '/n/poolfs/z/dist/m5/system' ] # expand '~' and '~user' in paths - paths = map(os.path.expanduser, paths) + paths = list(map(os.path.expanduser, paths)) # filter out non-existent directories - paths = filter(os.path.isdir, paths) + paths = list(filter(os.path.isdir, paths)) if not paths: raise IOError( diff --git a/configs/dram/lat_mem_rd.py b/configs/dram/lat_mem_rd.py index 07f9afcbb9..9b04e4bd26 100644 --- a/configs/dram/lat_mem_rd.py +++ b/configs/dram/lat_mem_rd.py @@ -37,6 +37,7 @@ from __future__ import print_function from __future__ import absolute_import import gzip +import six import optparse import os @@ -52,6 +53,9 @@ from common import MemConfig addToPath('../../util') import protolib +if six.PY3: + long = int + # this script is helpful to observe the memory latency for various # levels in a cache hierarchy, and various cache and memory # configurations, in essence replicating the lmbench lat_mem_rd thrash diff --git a/configs/dram/sweep.py b/configs/dram/sweep.py index d3c86c3344..a340b46a58 100644 --- a/configs/dram/sweep.py +++ b/configs/dram/sweep.py @@ -73,7 +73,7 @@ parser.add_option("--rd_perc", type="int", default=100, help = "Percentage of read commands") parser.add_option("--mode", type="choice", default="DRAM", - choices=dram_generators.keys(), + choices=list(dram_generators.keys()), help = "DRAM: Random traffic; \ DRAM_ROTATE: Traffic rotating across banks and ranks") diff --git a/configs/example/arm/baremetal.py b/configs/example/arm/baremetal.py index 412625d576..04f60a19b3 100644 --- a/configs/example/arm/baremetal.py +++ b/configs/example/arm/baremetal.py @@ -203,7 +203,7 @@ def main(): help="Disk to instantiate") parser.add_argument("--readfile", type=str, default="", help = "File to return with the m5 readfile command") - parser.add_argument("--cpu", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu", type=str, choices=list(cpu_types.keys()), default="atomic", help="CPU model to use") parser.add_argument("--cpu-freq", type=str, default="4GHz") diff --git a/configs/example/arm/devices.py b/configs/example/arm/devices.py index a45188b9c8..cc8ac5ead3 100644 --- a/configs/example/arm/devices.py +++ b/configs/example/arm/devices.py @@ -38,12 +38,17 @@ from __future__ import print_function from __future__ import absolute_import +import six + import m5 from m5.objects import * m5.util.addToPath('../../') from common.Caches import * from common import ObjectList +if six.PY3: + long = int + have_kvm = "ArmV8KvmCPU" in ObjectList.cpu_list.get_names() have_fastmodel = "FastModelCortexA76" in ObjectList.cpu_list.get_names() diff --git a/configs/example/arm/fs_bigLITTLE.py b/configs/example/arm/fs_bigLITTLE.py index b7e794d58c..228d11c7f1 100644 --- a/configs/example/arm/fs_bigLITTLE.py +++ b/configs/example/arm/fs_bigLITTLE.py @@ -177,7 +177,7 @@ def addOptions(parser): help="Disks to instantiate") parser.add_argument("--bootscript", type=str, default=default_rcs, help="Linux bootscript") - parser.add_argument("--cpu-type", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu-type", type=str, choices=list(cpu_types.keys()), default="timing", help="CPU simulation mode. Default: %(default)s") parser.add_argument("--kernel-init", type=str, default="/sbin/init", diff --git a/configs/example/arm/starter_fs.py b/configs/example/arm/starter_fs.py index 7a202807e7..3033890f04 100644 --- a/configs/example/arm/starter_fs.py +++ b/configs/example/arm/starter_fs.py @@ -208,7 +208,7 @@ def main(): help="Disk to instantiate") parser.add_argument("--script", type=str, default="", help = "Linux bootscript") - parser.add_argument("--cpu", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu", type=str, choices=list(cpu_types.keys()), default="atomic", help="CPU model to use") parser.add_argument("--cpu-freq", type=str, default="4GHz") diff --git a/configs/example/arm/starter_se.py b/configs/example/arm/starter_se.py index 0f20ecc645..0003ce994d 100644 --- a/configs/example/arm/starter_se.py +++ b/configs/example/arm/starter_se.py @@ -183,7 +183,7 @@ def main(): parser.add_argument("commands_to_run", metavar="command(s)", nargs='*', help="Command(s) to run") - parser.add_argument("--cpu", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu", type=str, choices=list(cpu_types.keys()), default="atomic", help="CPU model to use") parser.add_argument("--cpu-freq", type=str, default="4GHz") diff --git a/configs/example/read_config.py b/configs/example/read_config.py index 167815c702..52a53ba576 100644 --- a/configs/example/read_config.py +++ b/configs/example/read_config.py @@ -49,7 +49,7 @@ from __future__ import print_function from __future__ import absolute_import import argparse -import ConfigParser +from six.moves import configparser import inspect import json import re @@ -63,7 +63,7 @@ if six.PY3: long = int sim_object_classes_by_name = { - cls.__name__: cls for cls in m5.objects.__dict__.values() + cls.__name__: cls for cls in list(m5.objects.__dict__.values()) if inspect.isclass(cls) and issubclass(cls, m5.objects.SimObject) } # Add some parsing functions to Param classes to handle reading in .ini @@ -129,7 +129,7 @@ param_parsers = { 'EthernetAddr': simple_parser() } -for name, parser in param_parsers.items(): +for name, parser in list(param_parsers.items()): setattr(m5.params.__dict__[name], 'parse_ini', classmethod(parser)) class PortConnection(object): @@ -193,7 +193,7 @@ class ConfigManager(object): parsed_params = {} - for param_name, param in object_class._params.items(): + for param_name, param in list(object_class._params.items()): if issubclass(param.ptype, m5.params.ParamValue): if isinstance(param, m5.params.VectorParamDesc): param_values = self.config.get_param_vector(object_name, @@ -221,7 +221,7 @@ class ConfigManager(object): if object_name == 'Null': return NULL - for param_name, param in obj.__class__._params.items(): + for param_name, param in list(obj.__class__._params.items()): if issubclass(param.ptype, m5.objects.SimObject): if isinstance(param, m5.params.VectorParamDesc): param_values = self.config.get_param_vector(object_name, @@ -286,11 +286,11 @@ class ConfigManager(object): return NULL parsed_ports = [] - for port_name, port in obj.__class__._ports.items(): + for port_name, port in list(obj.__class__._ports.items()): # Assume that unnamed ports are unconnected peers = self.config.get_port_peers(object_name, port_name) - for index, peer in zip(range(0, len(peers)), peers): + for index, peer in zip(list(range(0, len(peers))), peers): parsed_ports.append(( PortConnection(object_name, port.name, index), PortConnection.from_string(peer))) @@ -368,12 +368,12 @@ class ConfigManager(object): # Now fill in SimObject-valued parameters in the knowledge that # this won't be interpreted as becoming the parent of objects # which are already in the root hierarchy - for name, obj in self.objects_by_name.items(): + for name, obj in list(self.objects_by_name.items()): self.fill_in_simobj_parameters(name, obj) # Gather a list of all port-to-port connections connections = [] - for name, obj in self.objects_by_name.items(): + for name, obj in list(self.objects_by_name.items()): connections += self.gather_port_connections(name, obj) # Find an acceptable order to bind those port connections and @@ -415,7 +415,7 @@ class ConfigFile(object): class ConfigIniFile(ConfigFile): def __init__(self): - self.parser = ConfigParser.ConfigParser() + self.parser = configparser.ConfigParser() def load(self, config_file): self.parser.read(config_file) @@ -466,7 +466,7 @@ class ConfigJsonFile(ConfigFile): for elem in node: self.find_all_objects(elem) elif isinstance(node, dict): - for elem in node.values(): + for elem in list(node.values()): self.find_all_objects(elem) def load(self, config_file): @@ -505,7 +505,7 @@ class ConfigJsonFile(ConfigFile): obj = self.object_dicts[object_name] children = [] - for name, node in obj.items(): + for name, node in list(obj.items()): if self.is_sim_object(node): children.append((name, node['path'])) elif isinstance(node, list) and node != [] and all([ diff --git a/configs/ruby/AMD_Base_Constructor.py b/configs/ruby/AMD_Base_Constructor.py index cd51bcac60..a347f43739 100644 --- a/configs/ruby/AMD_Base_Constructor.py +++ b/configs/ruby/AMD_Base_Constructor.py @@ -34,7 +34,7 @@ import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath, convert -from CntrlBase import * +from .CntrlBase import * addToPath('../') diff --git a/configs/ruby/GPU_RfO.py b/configs/ruby/GPU_RfO.py index 26bea0c8fd..58711ea0d0 100644 --- a/configs/ruby/GPU_RfO.py +++ b/configs/ruby/GPU_RfO.py @@ -29,19 +29,23 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster from topologies.Crossbar import Crossbar +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod diff --git a/configs/ruby/GPU_VIPER.py b/configs/ruby/GPU_VIPER.py index f4ecc414df..58572ae193 100644 --- a/configs/ruby/GPU_VIPER.py +++ b/configs/ruby/GPU_VIPER.py @@ -29,19 +29,23 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster from topologies.Crossbar import Crossbar +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod @@ -516,16 +520,16 @@ def create_system(options, full_system, system, dma_devices, bootmem, # Register CPUs and caches for each CorePair and directory (SE mode only) if not full_system: - for i in xrange((options.num_cpus + 1) // 2): + for i in range((options.num_cpus + 1) // 2): FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = \ - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2, thread_siblings = []) FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = \ - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2+1, thread_siblings = []) @@ -564,7 +568,7 @@ def create_system(options, full_system, system, dma_devices, bootmem, line_size = options.cacheline_size, assoc = options.l3_assoc, cpus = [n for n in - xrange(options.num_cpus)]) + range(options.num_cpus)]) gpuCluster = None if hasattr(options, 'bw_scalor') and options.bw_scalor > 0: diff --git a/configs/ruby/GPU_VIPER_Baseline.py b/configs/ruby/GPU_VIPER_Baseline.py index 46fdec9a3b..5388a4ef6b 100644 --- a/configs/ruby/GPU_VIPER_Baseline.py +++ b/configs/ruby/GPU_VIPER_Baseline.py @@ -29,19 +29,23 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster from topologies.Crossbar import Crossbar +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod diff --git a/configs/ruby/GPU_VIPER_Region.py b/configs/ruby/GPU_VIPER_Region.py index 7b15403140..a8b39aeae3 100644 --- a/configs/ruby/GPU_VIPER_Region.py +++ b/configs/ruby/GPU_VIPER_Region.py @@ -29,17 +29,21 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import send_evicts +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod diff --git a/configs/ruby/Garnet_standalone.py b/configs/ruby/Garnet_standalone.py index 4aee7a46d2..4b7ca8d122 100644 --- a/configs/ruby/Garnet_standalone.py +++ b/configs/ruby/Garnet_standalone.py @@ -29,7 +29,7 @@ import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology, create_directories +from .Ruby import create_topology, create_directories # # Declare caches used by the protocol diff --git a/configs/ruby/MESI_Three_Level.py b/configs/ruby/MESI_Three_Level.py index 61d6c523b6..7cfb83242f 100644 --- a/configs/ruby/MESI_Three_Level.py +++ b/configs/ruby/MESI_Three_Level.py @@ -31,8 +31,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts from common import FileSystemConfig # @@ -121,7 +121,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_domain = system.cpu[i].clk_domain # Ruby prefetcher - prefetcher = RubyPrefetcher.Prefetcher( + prefetcher = RubyPrefetcher( num_streams=16, unit_filter = 256, nonunit_filter = 256, @@ -294,10 +294,10 @@ def create_system(options, full_system, system, dma_ports, bootmem, all_cntrls = all_cntrls + [io_controller] # Register configuration with filesystem else: - for i in xrange(options.num_clusters): - for j in xrange(num_cpus_per_cluster): + for i in range(options.num_clusters): + for j in range(num_cpus_per_cluster): FileSystemConfig.register_cpu(physical_package_id = 0, - core_siblings = xrange(options.num_cpus), + core_siblings = range(options.num_cpus), core_id = i*num_cpus_per_cluster+j, thread_siblings = []) @@ -329,7 +329,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, num_l2caches_per_cluster)+'B', line_size = options.cacheline_size, assoc = options.l2_assoc, - cpus = [n for n in xrange(i*num_cpus_per_cluster, \ + cpus = [n for n in range(i*num_cpus_per_cluster, \ (i+1)*num_cpus_per_cluster)]) ruby_system.network.number_of_virtual_networks = 3 diff --git a/configs/ruby/MESI_Two_Level.py b/configs/ruby/MESI_Two_Level.py index 8d2e01fb67..77fef767fe 100644 --- a/configs/ruby/MESI_Two_Level.py +++ b/configs/ruby/MESI_Two_Level.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol @@ -78,7 +78,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, start_index_bit = block_size_bits, is_icache = False) - prefetcher = RubyPrefetcher.Prefetcher() + prefetcher = RubyPrefetcher() # the ruby random tester reuses num_cpus to specify the # number of cpu ports connected to the tester object, which diff --git a/configs/ruby/MI_example.py b/configs/ruby/MI_example.py index 2ea6699d8a..264f709ecc 100644 --- a/configs/ruby/MI_example.py +++ b/configs/ruby/MI_example.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol @@ -113,7 +113,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, l1_cntrl.responseToCache = MessageBuffer(ordered = True) l1_cntrl.responseToCache.slave = ruby_system.network.master - phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) + phys_mem_size = sum([r.size() for r in system.mem_ranges]) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff --git a/configs/ruby/MOESI_AMD_Base.py b/configs/ruby/MOESI_AMD_Base.py index aa9dd50490..91ff4d232a 100644 --- a/configs/ruby/MOESI_AMD_Base.py +++ b/configs/ruby/MOESI_AMD_Base.py @@ -34,8 +34,8 @@ import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts from common import FileSystemConfig addToPath('../') @@ -328,16 +328,16 @@ def create_system(options, full_system, system, dma_devices, bootmem, # Register CPUs and caches for each CorePair and directory (SE mode only) if not full_system: - for i in xrange((options.num_cpus + 1) // 2): + for i in range((options.num_cpus + 1) // 2): FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2, thread_siblings = []) FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2+1, thread_siblings = []) @@ -376,7 +376,7 @@ def create_system(options, full_system, system, dma_devices, bootmem, line_size = options.cacheline_size, assoc = options.l3_assoc, cpus = [n for n in - xrange(options.num_cpus)]) + range(options.num_cpus)]) # Assuming no DMA devices assert(len(dma_devices) == 0) diff --git a/configs/ruby/MOESI_CMP_directory.py b/configs/ruby/MOESI_CMP_directory.py index 315d62be1a..a78f73c68b 100644 --- a/configs/ruby/MOESI_CMP_directory.py +++ b/configs/ruby/MOESI_CMP_directory.py @@ -41,8 +41,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol diff --git a/configs/ruby/MOESI_CMP_token.py b/configs/ruby/MOESI_CMP_token.py index a2c41c08a0..80944f5660 100644 --- a/configs/ruby/MOESI_CMP_token.py +++ b/configs/ruby/MOESI_CMP_token.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py index 5aac38b3e9..c83bb72dcd 100644 --- a/configs/ruby/MOESI_hammer.py +++ b/configs/ruby/MOESI_hammer.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts from common import FileSystemConfig # @@ -257,7 +257,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, all_cntrls = all_cntrls + [io_controller] # Register configuration with filesystem else: - for i in xrange(options.num_cpus): + for i in range(options.num_cpus): FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = [], core_id = i, diff --git a/configs/topologies/MeshDirCorners_XY.py b/configs/topologies/MeshDirCorners_XY.py index 6d97f8228d..7d065de5b9 100644 --- a/configs/topologies/MeshDirCorners_XY.py +++ b/configs/topologies/MeshDirCorners_XY.py @@ -101,7 +101,7 @@ class MeshDirCorners_XY(SimpleTopology): # NUMA Node for each quadrant # With odd columns or rows, the nodes will be unequal numa_nodes = [ [], [], [], []] - for i in xrange(num_routers): + for i in range(num_routers): if i % num_columns < num_columns / 2 and \ i < num_routers / 2: numa_nodes[0].append(i) diff --git a/configs/topologies/Mesh_XY.py b/configs/topologies/Mesh_XY.py index 3ae34857ad..64a8506160 100644 --- a/configs/topologies/Mesh_XY.py +++ b/configs/topologies/Mesh_XY.py @@ -176,6 +176,6 @@ class Mesh_XY(SimpleTopology): # Register nodes with filesystem def registerTopology(self, options): - for i in xrange(options.num_cpus): + for i in range(options.num_cpus): FileSystemConfig.register_node([i], MemorySize(options.mem_size) / options.num_cpus, i) diff --git a/ext/testlib/__init__.py b/ext/testlib/__init__.py index 893da5433a..898205d9ab 100644 --- a/ext/testlib/__init__.py +++ b/ext/testlib/__init__.py @@ -29,12 +29,12 @@ from .state import * from .runner import * -from .test import * +from .test_util import * from .suite import * from .loader import * from .fixture import * -from .config import * -from main import main +from .configuration import * +from .main import main #TODO Remove this awkward bootstrap #FIXME diff --git a/ext/testlib/config.py b/ext/testlib/configuration.py similarity index 99% rename from ext/testlib/config.py rename to ext/testlib/configuration.py index 348d0a84c8..04744e113d 100644 --- a/ext/testlib/config.py +++ b/ext/testlib/configuration.py @@ -83,10 +83,11 @@ import copy import os import re -from ConfigParser import ConfigParser +from six import add_metaclass +from six.moves import configparser as ConfigParser from pickle import HIGHEST_PROTOCOL as highest_pickle_protocol -from helper import absdirpath, AttrDict, FrozenAttrDict +from testlib.helper import absdirpath, AttrDict, FrozenAttrDict class UninitialzedAttributeException(Exception): ''' @@ -220,7 +221,7 @@ def define_defaults(defaults): os.pardir)) defaults.result_path = os.path.join(os.getcwd(), '.testing-results') defaults.list_only_failed = False - defaults.resource_url = 'http://dist.gem5.org/dist/develop' + defaults.resource_url = 'http://dist.gem5.org/dist/v20' def define_constants(constants): ''' @@ -598,9 +599,8 @@ def define_common_args(config): # one in the list will be saved. common_args = AttrDict({arg.name:arg for arg in common_args}) - +@add_metaclass(abc.ABCMeta) class ArgParser(object): - __metaclass__ = abc.ABCMeta def __init__(self, parser): # Copy public methods of the parser. diff --git a/ext/testlib/fixture.py b/ext/testlib/fixture.py index 7af6cb289f..20568b80f2 100644 --- a/ext/testlib/fixture.py +++ b/ext/testlib/fixture.py @@ -29,8 +29,8 @@ import copy import traceback -import helper -import log +import testlib.helper as helper +import testlib.log as log class SkipException(Exception): def __init__(self, fixture, testitem): @@ -61,7 +61,7 @@ class Fixture(object): collector = helper.InstanceCollector() def __new__(klass, *args, **kwargs): - obj = super(Fixture, klass).__new__(klass, *args, **kwargs) + obj = super(Fixture, klass).__new__(klass) Fixture.collector.collect(obj) return obj diff --git a/ext/testlib/handlers.py b/ext/testlib/handlers.py index 6f76940712..3005e01efb 100644 --- a/ext/testlib/handlers.py +++ b/ext/testlib/handlers.py @@ -35,20 +35,20 @@ from __future__ import print_function import multiprocessing import os -import Queue import sys import threading import time import traceback -import helper -import log -import result -import state -import test -import terminal +import testlib.helper as helper +import testlib.log as log +import testlib.result as result +import testlib.state as state +import testlib.test_util as test +import testlib.terminal as terminal -from config import config, constants +from six.moves import queue as Queue +from testlib.configuration import config, constants class _TestStreamManager(object): diff --git a/ext/testlib/helper.py b/ext/testlib/helper.py index ac49e468eb..4237a765e1 100644 --- a/ext/testlib/helper.py +++ b/ext/testlib/helper.py @@ -34,7 +34,6 @@ from collections import MutableSet, OrderedDict import difflib import errno import os -import Queue import re import shutil import stat @@ -44,6 +43,8 @@ import threading import time import traceback +from six.moves import queue as Queue + #TODO Tear out duplicate logic from the sandbox IOManager def log_call(logger, command, *popenargs, **kwargs): ''' @@ -80,7 +81,8 @@ def log_call(logger, command, *popenargs, **kwargs): def log_output(log_callback, pipe, redirects=tuple()): # Read iteractively, don't allow input to fill the pipe. - for line in iter(pipe.readline, ''): + for line in iter(pipe.readline, b''): + line = line.decode("utf-8") for r in redirects: r.write(line) log_callback(line.rstrip()) diff --git a/ext/testlib/loader.py b/ext/testlib/loader.py index 8f8f60e707..bb2fe4ef92 100644 --- a/ext/testlib/loader.py +++ b/ext/testlib/loader.py @@ -67,16 +67,17 @@ a :class:`TestSuite` named after the module. import os import re +import six import sys import traceback -import config -import log -import suite as suite_mod -import test as test_mod -import fixture as fixture_mod -import wrappers -import uid +import testlib.configuration as configuration +import testlib.log as log +import testlib.suite as suite_mod +import testlib.test_util as test_mod +import testlib.fixture as fixture_mod +import testlib.wrappers as wrappers +import testlib.uid as uid class DuplicateTestItemException(Exception): ''' @@ -112,7 +113,7 @@ def _assert_files_in_same_dir(files): if files: directory = os.path.dirname(files[0]) for f in files: - assert os.path.dirname(f) == directory + assert(os.path.dirname(f) == directory) class Loader(object): ''' @@ -186,6 +187,7 @@ class Loader(object): self._loaded_a_file = True for directory in self._discover_files(root): + directory = list(directory) if directory: _assert_files_in_same_dir(directory) for f in directory: @@ -193,6 +195,7 @@ class Loader(object): def load_dir(self, directory): for dir_ in self._discover_files(directory): + directory = list(directory) _assert_files_in_same_dir(dir_) for f in dir_: self.load_file(f) @@ -221,29 +224,27 @@ class Loader(object): sys.path.insert(0, os.path.dirname(path)) cwd = os.getcwd() os.chdir(os.path.dirname(path)) - config.config.file_under_load = path + configuration.config.file_under_load = path new_tests = test_mod.TestCase.collector.create() new_suites = suite_mod.TestSuite.collector.create() new_fixtures = fixture_mod.Fixture.collector.create() - def cleanup(): - config.config.file_under_load = None - sys.path[:] = old_path - os.chdir(cwd) - test_mod.TestCase.collector.remove(new_tests) - suite_mod.TestSuite.collector.remove(new_suites) - fixture_mod.Fixture.collector.remove(new_fixtures) - try: - execfile(path, newdict, newdict) + exec(open(path).read(), newdict, newdict) except Exception as e: log.test_log.debug(traceback.format_exc()) log.test_log.warn( 'Exception thrown while loading "%s"\n' 'Ignoring all tests in this file.' % (path)) - cleanup() + # Clean up + configuration.config.file_under_load = None + sys.path[:] = old_path + os.chdir(cwd) + test_mod.TestCase.collector.remove(new_tests) + suite_mod.TestSuite.collector.remove(new_suites) + fixture_mod.Fixture.collector.remove(new_fixtures) return # Create a module test suite for those not contained in a suite. @@ -281,7 +282,13 @@ class Loader(object): self.suites.extend(loaded_suites) self.suite_uids.update({suite.uid: suite for suite in loaded_suites}) - cleanup() + # Clean up + configuration.config.file_under_load = None + sys.path[:] = old_path + os.chdir(cwd) + test_mod.TestCase.collector.remove(new_tests) + suite_mod.TestSuite.collector.remove(new_suites) + fixture_mod.Fixture.collector.remove(new_fixtures) def _discover_files(self, root): ''' diff --git a/ext/testlib/log.py b/ext/testlib/log.py index 5ba6f5d4f3..cddb9217c6 100644 --- a/ext/testlib/log.py +++ b/ext/testlib/log.py @@ -30,8 +30,9 @@ This module supplies the global `test_log` object which all testing results and messages are reported through. ''' -import wrappers +import testlib.wrappers as wrappers +from six import add_metaclass class LogLevel(): Fatal = 0 @@ -55,6 +56,7 @@ class RecordTypeCounterMetaclass(type): RecordTypeCounterMetaclass.counter += 1 +@add_metaclass(RecordTypeCounterMetaclass) class Record(object): ''' A generic object that is passed to the :class:`Log` and its handlers. @@ -62,7 +64,6 @@ class Record(object): ..note: Although not statically enforced, all items in the record should be be pickleable. This enables logging accross multiple processes. ''' - __metaclass__ = RecordTypeCounterMetaclass def __init__(self, **data): self.data = data diff --git a/ext/testlib/main.py b/ext/testlib/main.py index 3827f7815f..9c9ed03dd1 100644 --- a/ext/testlib/main.py +++ b/ext/testlib/main.py @@ -29,16 +29,16 @@ import os import itertools -import config -import fixture as fixture_mod -import handlers -import loader as loader_mod -import log -import query -import result -import runner -import terminal -import uid +import testlib.configuration as configuration +import testlib.fixture as fixture_mod +import testlib.handlers as handlers +import testlib.loader as loader_mod +import testlib.log as log +import testlib.query as query +import testlib.result as result +import testlib.runner as runner +import testlib.terminal as terminal +import testlib.uid as uid def entry_message(): log.test_log.message("Running the new gem5 testing script.") @@ -50,7 +50,7 @@ def entry_message(): class RunLogHandler(): def __init__(self): term_handler = handlers.TerminalHandler( - verbosity=config.config.verbose+log.LogLevel.Info + verbosity=configuration.config.verbose+log.LogLevel.Info ) summary_handler = handlers.SummaryHandler() self.mp_handler = handlers.MultiprocessingHandlerWrapper( @@ -62,7 +62,7 @@ class RunLogHandler(): def schedule_finalized(self, test_schedule): # Create the result handler object. self.result_handler = handlers.ResultHandler( - test_schedule, config.config.result_path) + test_schedule, configuration.config.result_path) self.mp_handler.add_handler(self.result_handler) def finish_testing(self): @@ -87,27 +87,27 @@ class RunLogHandler(): return self.result_handler.unsuccessful() def get_config_tags(): - return getattr(config.config, - config.StorePositionalTagsAction.position_kword) + return getattr(configuration.config, + configuration.StorePositionalTagsAction.position_kword) def filter_with_config_tags(loaded_library): tags = get_config_tags() final_tags = [] regex_fmt = '^%s$' - cfg = config.config + cfg = configuration.config def _append_inc_tag_filter(name): if hasattr(cfg, name): tag_opts = getattr(cfg, name) for tag in tag_opts: - final_tags.append(config.TagRegex(True, regex_fmt % tag)) + final_tags.append(configuration.TagRegex(True, regex_fmt % tag)) def _append_rem_tag_filter(name): if hasattr(cfg, name): tag_opts = getattr(cfg, name) for tag in cfg.constants.supported_tags[name]: if tag not in tag_opts: - final_tags.append(config.TagRegex(False, regex_fmt % tag)) + final_tags.append(configuration.TagRegex(False, regex_fmt % tag)) # Append additional tags for the isa, length, and variant options. # They apply last (they take priority) @@ -206,13 +206,13 @@ def load_tests(): testloader = loader_mod.Loader() log.test_log.message(terminal.separator()) log.test_log.message('Loading Tests', bold=True) - testloader.load_root(config.config.directory) + testloader.load_root(configuration.config.directory) return testloader def do_list(): term_handler = handlers.TerminalHandler( - verbosity=config.config.verbose+log.LogLevel.Info, - machine_only=config.config.quiet + verbosity=configuration.config.verbose+log.LogLevel.Info, + machine_only=configuration.config.quiet ) log.test_log.log_obj.add_handler(term_handler) @@ -223,11 +223,11 @@ def do_list(): qrunner = query.QueryRunner(test_schedule) - if config.config.suites: + if configuration.config.suites: qrunner.list_suites() - elif config.config.tests: + elif configuration.config.tests: qrunner.list_tests() - elif config.config.all_tags: + elif configuration.config.all_tags: qrunner.list_tags() else: qrunner.list_suites() @@ -259,13 +259,13 @@ def run_schedule(test_schedule, log_handler): log.test_log.message('Running Tests from {} suites' .format(len(test_schedule.suites)), bold=True) log.test_log.message("Results will be stored in {}".format( - config.config.result_path)) + configuration.config.result_path)) log.test_log.message(terminal.separator()) # Build global fixtures and exectute scheduled test suites. - if config.config.test_threads > 1: + if configuration.config.test_threads > 1: library_runner = runner.LibraryParallelRunner(test_schedule) - library_runner.set_threads(config.config.test_threads) + library_runner.set_threads(configuration.config.test_threads) else: library_runner = runner.LibraryRunner(test_schedule) library_runner.run() @@ -279,8 +279,8 @@ def run_schedule(test_schedule, log_handler): def do_run(): # Initialize early parts of the log. with RunLogHandler() as log_handler: - if config.config.uid: - uid_ = uid.UID.from_uid(config.config.uid) + if configuration.config.uid: + uid_ = uid.UID.from_uid(configuration.config.uid) if isinstance(uid_, uid.TestUID): log.test_log.error('Unable to run a standalone test.\n' 'Gem5 expects test suites to be the smallest unit ' @@ -305,8 +305,8 @@ def do_rerun(): with RunLogHandler() as log_handler: # Load previous results results = result.InternalSavedResults.load( - os.path.join(config.config.result_path, - config.constants.pickle_filename)) + os.path.join(configuration.config.result_path, + configuration.constants.pickle_filename)) rerun_suites = (suite.uid for suite in results if suite.unsuccessful) @@ -323,10 +323,10 @@ def main(): Returns 0 on success and 1 otherwise so it can be used as a return code for scripts. ''' - config.initialize_config() + configuration.initialize_config() # 'do' the given command. - result = globals()['do_'+config.config.command]() + result = globals()['do_'+configuration.config.command]() log.test_log.close() return result diff --git a/ext/testlib/query.py b/ext/testlib/query.py index c66445c446..174af626fe 100644 --- a/ext/testlib/query.py +++ b/ext/testlib/query.py @@ -26,8 +26,8 @@ # # Authors: Sean Wilson -import terminal -import log +import testlib.terminal as terminal +import testlib.log as log # TODO Refactor print logic out of this so the objects # created are separate from print logic. diff --git a/ext/testlib/result.py b/ext/testlib/result.py index 786c21b609..38b3322ba1 100644 --- a/ext/testlib/result.py +++ b/ext/testlib/result.py @@ -30,10 +30,10 @@ import os import pickle import xml.sax.saxutils -from config import config -import helper -import state -import log +from testlib.configuration import config +import testlib.helper as helper +import testlib.state as state +import testlib.log as log def _create_uid_index(iterable): index = {} @@ -62,7 +62,7 @@ class _CommonMetadataMixin: return self._metadata.result.value != state.Result.Passed -class InternalTestResult(object, _CommonMetadataMixin): +class InternalTestResult(_CommonMetadataMixin): def __init__(self, obj, suite, directory): self._metadata = obj.metadata self.suite = suite @@ -77,7 +77,7 @@ class InternalTestResult(object, _CommonMetadataMixin): ) -class InternalSuiteResult(object, _CommonMetadataMixin): +class InternalSuiteResult(_CommonMetadataMixin): def __init__(self, obj, directory): self._metadata = obj.metadata self.directory = directory @@ -104,7 +104,7 @@ class InternalSuiteResult(object, _CommonMetadataMixin): return results -class InternalLibraryResults(object, _CommonMetadataMixin): +class InternalLibraryResults(_CommonMetadataMixin): def __init__(self, obj, directory): self.directory = directory self._metadata = obj.metadata @@ -159,12 +159,12 @@ class InternalSavedResults: if exc.errno != errno.EEXIST: raise - with open(path, 'w') as f: + with open(path, 'wb') as f: pickle.dump(results, f, protocol) @staticmethod def load(path): - with open(path, 'r') as f: + with open(path, 'rb') as f: return pickle.load(f) diff --git a/ext/testlib/runner.py b/ext/testlib/runner.py index 9868cefb11..ec3c838e7d 100644 --- a/ext/testlib/runner.py +++ b/ext/testlib/runner.py @@ -30,13 +30,13 @@ import multiprocessing.dummy import threading import traceback -import helper -import state -import log -import sandbox +import testlib.helper as helper +import testlib.state as state +import testlib.log as log +import testlib.sandbox as sandbox -from state import Status, Result -from fixture import SkipException +from testlib.state import Status, Result +from testlib.fixture import SkipException def compute_aggregate_result(iterable): ''' diff --git a/ext/testlib/sandbox.py b/ext/testlib/sandbox.py index 49fe133eab..bdc6d88595 100644 --- a/ext/testlib/sandbox.py +++ b/ext/testlib/sandbox.py @@ -33,7 +33,7 @@ import sys import threading import traceback -import log +import testlib.log as log pdb._Pdb = pdb.Pdb class ForkedPdb(pdb._Pdb): @@ -81,18 +81,18 @@ class IoManager(object): self.old_stdout = os.dup(sys.stdout.fileno()) os.dup2(self.stderr_wp, sys.stderr.fileno()) - sys.stderr = os.fdopen(self.stderr_wp, 'w', 0) + sys.stderr = os.fdopen(self.stderr_wp, 'w') os.dup2(self.stdout_wp, sys.stdout.fileno()) - sys.stdout = os.fdopen(self.stdout_wp, 'w', 0) + sys.stdout = os.fdopen(self.stdout_wp, 'w') def restore_pipes(self): self.stderr_wp = os.dup(sys.stderr.fileno()) self.stdout_wp = os.dup(sys.stdout.fileno()) os.dup2(self.old_stderr, sys.stderr.fileno()) - sys.stderr = os.fdopen(self.old_stderr, 'w', 0) + sys.stderr = open(self.old_stderr, 'w') os.dup2(self.old_stdout, sys.stdout.fileno()) - sys.stdout = os.fdopen(self.old_stdout, 'w', 0) + sys.stdout = open(self.old_stdout, 'w') def start_loggers(self): self.log_ouput() diff --git a/ext/testlib/suite.py b/ext/testlib/suite.py index 2ce817a6e8..eae52fd922 100644 --- a/ext/testlib/suite.py +++ b/ext/testlib/suite.py @@ -27,8 +27,8 @@ # Authors: Sean Wilson -import helper -import runner as runner_mod +import testlib.helper as helper +import testlib.runner as runner_mod class TestSuite(object): ''' @@ -52,7 +52,7 @@ class TestSuite(object): tags = set() def __new__(klass, *args, **kwargs): - obj = super(TestSuite, klass).__new__(klass, *args, **kwargs) + obj = super(TestSuite, klass).__new__(klass) TestSuite.collector.collect(obj) return obj diff --git a/ext/testlib/terminal.py b/ext/testlib/terminal.py index bdb20edea4..bc4c85599d 100644 --- a/ext/testlib/terminal.py +++ b/ext/testlib/terminal.py @@ -28,6 +28,7 @@ import sys import fcntl import termios import struct +import six # Intended usage example: # @@ -74,7 +75,7 @@ try: def cap_string(s, *args): cap = curses.tigetstr(s) if cap: - return curses.tparm(cap, *args) + return curses.tparm(cap, *args).decode("utf-8") else: return '' except: @@ -84,7 +85,7 @@ class ColorStrings(object): def __init__(self, cap_string): for i, c in enumerate(color_names): setattr(self, c, cap_string('setaf', i)) - for name, cap in capability_map.iteritems(): + for name, cap in six.iteritems(capability_map): setattr(self, name, cap_string(cap)) termcap = ColorStrings(cap_string) @@ -137,7 +138,7 @@ def insert_separator(inside, char=default_separator, .. seealso:: :func:`separator` ''' # Use a bytearray so it's efficient to manipulate - string = bytearray(separator(char, color=color)) + string = bytearray(separator(char, color=color), 'utf-8') # Check if we can fit inside with at least min_barrier. gap = (len(string) - len(inside)) - min_barrier * 2 @@ -145,27 +146,27 @@ def insert_separator(inside, char=default_separator, # We'll need to expand the string to fit us. string.extend([ char for _ in range(-gap)]) # Emplace inside - middle = ((len(string)-1)/2) - start_idx = middle - len(inside)/2 - string[start_idx:len(inside)+start_idx] = inside - return str(string) + middle = (len(string)-1)//2 + start_idx = middle - len(inside)//2 + string[start_idx:len(inside)+start_idx] = str.encode(inside) + return str(string.decode("utf-8")) if __name__ == '__main__': def test_termcap(obj): for c_name in color_names: c_str = getattr(obj, c_name) - print c_str + c_name + obj.Normal + print(c_str + c_name + obj.Normal) for attr_name in capability_names: if attr_name == 'Normal': continue attr_str = getattr(obj, attr_name) - print attr_str + c_str + attr_name + " " + c_name + obj.Normal - print obj.Bold + obj.Underline + \ - c_name + "Bold Underline " + c_str + obj.Normal + print(attr_str + c_str + attr_name + " " + c_name + obj.Normal) + print(obj.Bold + obj.Underline + \ + c_name + "Bold Underline " + c_str + obj.Normal) - print "=== termcap enabled ===" + print("=== termcap enabled ===") test_termcap(termcap) - print termcap.Normal - print "=== termcap disabled ===" + print(termcap.Normal) + print("=== termcap disabled ===") test_termcap(no_termcap) diff --git a/ext/testlib/test.py b/ext/testlib/test_util.py similarity index 97% rename from ext/testlib/test.py rename to ext/testlib/test_util.py index 18899d6d0f..5a0c0a8f19 100644 --- a/ext/testlib/test.py +++ b/ext/testlib/test_util.py @@ -28,8 +28,8 @@ import functools -import helper -import runner as runner_mod +import testlib.helper as helper +import testlib.runner as runner_mod class TestingException(Exception): '''Common ancestor for manual Testing Exceptions.''' @@ -62,7 +62,7 @@ class TestCase(object): collector = helper.InstanceCollector() def __new__(cls, *args, **kwargs): - obj = super(TestCase, cls).__new__(cls, *args, **kwargs) + obj = super(TestCase, cls).__new__(cls) TestCase.collector.collect(obj) return obj diff --git a/ext/testlib/uid.py b/ext/testlib/uid.py index fe56252a02..f8951a28da 100644 --- a/ext/testlib/uid.py +++ b/ext/testlib/uid.py @@ -29,7 +29,7 @@ import os import itertools -import config +import testlib.configuration as configuration class UID(object): sep = ':' @@ -42,12 +42,12 @@ class UID(object): @staticmethod def _shorten_path(path): return os.path.relpath(path, - os.path.commonprefix((config.constants.testing_base, + os.path.commonprefix((configuration.constants.testing_base, path))) @staticmethod def _full_path(short_path): - return os.path.join(config.constants.testing_base, short_path) + return os.path.join(configuration.constants.testing_base, short_path) @classmethod def uid_to_path(cls, uid): diff --git a/ext/testlib/wrappers.py b/ext/testlib/wrappers.py index 4bd22a468e..e91970262e 100644 --- a/ext/testlib/wrappers.py +++ b/ext/testlib/wrappers.py @@ -44,9 +44,8 @@ loaded by the testlib :class:`testlib.loader.Loader`. ''' import itertools -import log -import uid -from state import Status, Result +import testlib.uid as uid +from testlib.state import Status, Result class TestCaseMetadata(): def __init__(self, name, uid, path, result, status, suite_uid): @@ -127,9 +126,11 @@ class LoadedTestable(object): # TODO Change log to provide status_update, result_update for all types. def log_status(self, status): + import testlib.log as log log.test_log.status_update(self, status) def log_result(self, result): + import testlib.log as log log.test_log.result_update(self, result) def __iter__(self): diff --git a/src/SConscript b/src/SConscript index 134e2a5988..7cd628a7c8 100644 --- a/src/SConscript +++ b/src/SConscript @@ -624,7 +624,7 @@ def makeTheISA(source, target, env): isas = [ src.get_contents().decode('utf-8') for src in source ] target_isa = env['TARGET_ISA'] def define(isa): - return isa.upper() + '_ISA' + return str(isa.upper()) + '_ISA' def namespace(isa): return isa[0].upper() + isa[1:].lower() + 'ISA' @@ -666,10 +666,10 @@ env.Command('config/the_isa.hh', list(map(Value, all_isa_list)), MakeAction(makeTheISA, Transform("CFG ISA", 0))) def makeTheGPUISA(source, target, env): - isas = [ src.get_contents() for src in source ] + isas = [ src.get_contents().decode('utf-8') for src in source ] target_gpu_isa = env['TARGET_GPU_ISA'] def define(isa): - return isa.upper() + '_ISA' + return str(isa.upper()) + '_ISA' def namespace(isa): return isa[0].upper() + isa[1:].lower() + 'ISA' diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc index 61a049d594..ab21dda1f8 100644 --- a/src/arch/arm/semihosting.cc +++ b/src/arch/arm/semihosting.cc @@ -581,10 +581,10 @@ ArmSemihosting::callHeapInfo32(ThreadContext *tc, Addr block_addr) uint64_t heap_base, heap_limit, stack_base, stack_limit; gatherHeapInfo(tc, false, heap_base, heap_limit, stack_base, stack_limit); - std::array block = { + std::array block = {{ (uint32_t)heap_base, (uint32_t)heap_limit, (uint32_t)stack_base, (uint32_t)stack_limit - }; + }}; portProxy(tc).write(block_addr, block, ArmISA::byteOrder(tc)); return retOK(0); @@ -596,9 +596,9 @@ ArmSemihosting::callHeapInfo64(ThreadContext *tc, Addr block_addr) uint64_t heap_base, heap_limit, stack_base, stack_limit; gatherHeapInfo(tc, true, heap_base, heap_limit, stack_base, stack_limit); - std::array block = { + std::array block = {{ heap_base, heap_limit, stack_base, stack_limit - }; + }}; portProxy(tc).write(block_addr, block, ArmISA::byteOrder(tc)); return retOK(0); diff --git a/src/arch/hsail/gen.py b/src/arch/hsail/gen.py index 8dcc92c7bc..56404248bb 100755 --- a/src/arch/hsail/gen.py +++ b/src/arch/hsail/gen.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # Copyright (c) 2015 Advanced Micro Devices, Inc. # All rights reserved. # diff --git a/src/arch/riscv/isa.cc b/src/arch/riscv/isa.cc index ac26230a13..055c95b352 100644 --- a/src/arch/riscv/isa.cc +++ b/src/arch/riscv/isa.cc @@ -38,6 +38,7 @@ #include "arch/riscv/pagetable.hh" #include "arch/riscv/registers.hh" #include "base/bitfield.hh" +#include "base/compiler.hh" #include "cpu/base.hh" #include "debug/Checkpoint.hh" #include "debug/RiscvMisc.hh" @@ -48,7 +49,7 @@ namespace RiscvISA { -const std::array MiscRegNames = {{ +const std::array M5_VAR_USED MiscRegNames = {{ [MISCREG_PRV] = "PRV", [MISCREG_ISA] = "ISA", [MISCREG_VENDORID] = "VENDORID", diff --git a/src/arch/riscv/pagetable_walker.cc b/src/arch/riscv/pagetable_walker.cc index 6ec118d569..786cb8193e 100644 --- a/src/arch/riscv/pagetable_walker.cc +++ b/src/arch/riscv/pagetable_walker.cc @@ -386,10 +386,9 @@ Walker::WalkerState::stepWalk(PacketPtr &write) if (!functional) walker->tlb->insert(entry.vaddr, entry); else { - Addr offset = entry.vaddr & mask(entry.logBytes); - Addr paddr = entry.paddr << PageShift | offset; DPRINTF(PageTableWalker, "Translated %#x -> %#x\n", - entry.vaddr, paddr); + entry.vaddr, entry.paddr << PageShift | + (entry.vaddr & mask(entry.logBytes))); } } endWalk(); diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc index f377e2a2b6..1b7fd3e8b5 100644 --- a/src/arch/x86/process.cc +++ b/src/arch/x86/process.cc @@ -67,32 +67,6 @@ using namespace std; using namespace X86ISA; -static const int ArgumentReg[] = { - INTREG_RDI, - INTREG_RSI, - INTREG_RDX, - // This argument register is r10 for syscalls and rcx for C. - INTREG_R10W, - // INTREG_RCX, - INTREG_R8W, - INTREG_R9W -}; - -static const int NumArgumentRegs M5_VAR_USED = - sizeof(ArgumentReg) / sizeof(const int); - -static const int ArgumentReg32[] = { - INTREG_EBX, - INTREG_ECX, - INTREG_EDX, - INTREG_ESI, - INTREG_EDI, - INTREG_EBP -}; - -static const int NumArgumentRegs32 M5_VAR_USED = - sizeof(ArgumentReg) / sizeof(const int); - template class MultiLevelPageTable, LongModePTE<38, 30>, LongModePTE<29, 21>, diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc index 4464702dd0..4e9d4be253 100644 --- a/src/arch/x86/tlb.cc +++ b/src/arch/x86/tlb.cc @@ -206,6 +206,7 @@ TLB::translateInt(bool read, RequestPtr req, ThreadContext *tc) if (!msrAddrToIndex(regNum, vaddr)) return std::make_shared(0); + req->setPaddr(req->getVaddr()); req->setLocalAccessor( [read,regNum](ThreadContext *tc, PacketPtr pkt) { @@ -223,6 +224,7 @@ TLB::translateInt(bool read, RequestPtr req, ThreadContext *tc) // space. assert(!(IOPort & ~0xFFFF)); if (IOPort == 0xCF8 && req->getSize() == 4) { + req->setPaddr(req->getVaddr()); req->setLocalAccessor( [read](ThreadContext *tc, PacketPtr pkt) { diff --git a/src/base/output.cc b/src/base/output.cc index ec94a13749..47b8aa7f4d 100644 --- a/src/base/output.cc +++ b/src/base/output.cc @@ -1,5 +1,6 @@ /* * Copyright (c) 2015 ARM Limited + * Copyright (c) 2020 Barkhausen Institut * All rights reserved * * The license below extends only to copyright in the software and shall @@ -142,6 +143,11 @@ OutputDirectory::checkForStdio(const string &name) void OutputDirectory::close(OutputStream *file) { + if (file == &stdout || file == &stderr) { + file->stream()->flush(); + return; + } + auto i = files.find(file->name()); if (i == files.end()) fatal("Attempted to close an unregistred file stream"); diff --git a/src/base/stats/group.hh b/src/base/stats/group.hh index 4fd9e79fd0..985bf61f60 100644 --- a/src/base/stats/group.hh +++ b/src/base/stats/group.hh @@ -83,9 +83,14 @@ class Info; class Group { public: + /** + * @ingroup api_stats + * @{ + */ Group() = delete; Group(const Group &) = delete; Group &operator=(const Group &) = delete; + /** @}*/ //end of api_stats /** * Construct a new statistics group. @@ -104,6 +109,8 @@ class Group * @param parent Parent group to associate this object to. * @param name Name of this group, can be NULL to merge this group * with the parent group. + * + * @ingroup api_stats */ Group(Group *parent, const char *name = nullptr); @@ -117,11 +124,15 @@ class Group * description. Stat names and descriptions should typically be * set from the constructor usingo from the constructor using the * ADD_STAT macro. + * + * @ingroup api_stats */ virtual void regStats(); /** * Callback to reset stats. + * + * @ingroup api_stats */ virtual void resetStats(); @@ -129,22 +140,30 @@ class Group * Callback before stats are dumped. This can be overridden by * objects that need to perform calculations in addition to the * capabiltiies implemented in the stat framework. + * + * @ingroup api_stats */ virtual void preDumpStats(); /** * Register a stat with this group. This method is normally called * automatically when a stat is instantiated. + * + * @ingroup api_stats */ void addStat(Stats::Info *info); /** * Get all child groups associated with this object. + * + * @ingroup api_stats */ const std::map &getStatGroups() const; /** * Get all stats associated with this object. + * + * @ingroup api_stats */ const std::vector &getStats() const; @@ -154,6 +173,8 @@ class Group * This method may only be called from a Group constructor or from * regStats. It's typically only called explicitly from Python * when setting up the SimObject hierarchy. + * + * @ingroup api_stats */ void addStatGroup(const char *name, Group *block); diff --git a/src/base/version.cc b/src/base/version.cc index 7182b55076..c5fbca03bb 100644 --- a/src/base/version.cc +++ b/src/base/version.cc @@ -26,4 +26,4 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -const char *gem5Version = "[develop]"; +const char *gem5Version = "20.0.0.0"; diff --git a/src/dev/arm/smmu_v3_transl.hh b/src/dev/arm/smmu_v3_transl.hh index 243e54e264..d72c44c800 100644 --- a/src/dev/arm/smmu_v3_transl.hh +++ b/src/dev/arm/smmu_v3_transl.hh @@ -38,6 +38,7 @@ #ifndef __DEV_ARM_SMMU_V3_TRANSL_HH__ #define __DEV_ARM_SMMU_V3_TRANSL_HH__ +#include "base/compiler.hh" #include "dev/arm/smmu_v3_proc.hh" #include "dev/arm/smmu_v3_ptops.hh" #include "dev/arm/smmu_v3_slaveifc.hh" @@ -96,7 +97,7 @@ class SMMUTranslationProcess : public SMMUProcess TranslContext context; Tick recvTick; - Tick faultTick; + Tick M5_CLASS_VAR_USED faultTick; virtual void main(Yield &yield); diff --git a/src/dev/hsa/HSADevice.py b/src/dev/hsa/HSADevice.py index 125d6eef14..50e3c6dbf8 100644 --- a/src/dev/hsa/HSADevice.py +++ b/src/dev/hsa/HSADevice.py @@ -35,7 +35,7 @@ from m5.SimObject import SimObject from m5.params import * from m5.proxy import * -from Device import DmaDevice +from m5.objects.Device import DmaDevice class HSADevice(DmaDevice): type = 'HSADevice' diff --git a/src/dev/hsa/HSADriver.py b/src/dev/hsa/HSADriver.py index ed742fa498..3df22a00da 100644 --- a/src/dev/hsa/HSADriver.py +++ b/src/dev/hsa/HSADriver.py @@ -35,7 +35,7 @@ from m5.SimObject import SimObject from m5.params import * from m5.proxy import * -from Process import EmulatedDriver +from m5.objects.Process import EmulatedDriver class HSADriver(EmulatedDriver): type = 'HSADriver' diff --git a/src/dev/hsa/hsa_device.cc b/src/dev/hsa/hsa_device.cc index 01b7a41ebb..78ec8e8b4e 100644 --- a/src/dev/hsa/hsa_device.cc +++ b/src/dev/hsa/hsa_device.cc @@ -102,9 +102,8 @@ HSADevice::translateOrDie(Addr vaddr, Addr &paddr) * grab context zero. */ auto process = sys->getThreadContext(0)->getProcessPtr(); - auto mem_state = process->getMemState(); - if (!mem_state->translate(vaddr, paddr)) { + if (!process->pTable->translate(vaddr, paddr)) { fatal("failed translation: vaddr 0x%x\n", vaddr); } } diff --git a/src/dev/hsa/hsa_driver.cc b/src/dev/hsa/hsa_driver.cc index 5f30159170..3f5c8eb0a5 100644 --- a/src/dev/hsa/hsa_driver.cc +++ b/src/dev/hsa/hsa_driver.cc @@ -74,7 +74,7 @@ HSADriver::mmap(ThreadContext *tc, Addr start, uint64_t length, int prot, "offset: 0x%x)\n", start, length, offset); auto process = tc->getProcessPtr(); - auto mem_state = process->getMemState(); + auto mem_state = process->memState; // Extend global mmap region if necessary. if (start == 0) { @@ -87,32 +87,8 @@ HSADriver::mmap(ThreadContext *tc, Addr start, uint64_t length, int prot, * Now map this virtual address to our PIO doorbell interface * in the page tables (non-cacheable). */ - mem_state->map(start, device->hsaPacketProc().pioAddr, length, false); + process->pTable->map(start, device->hsaPacketProc().pioAddr, + length, false); DPRINTF(HSADriver, "amdkfd doorbell mapped to %xp\n", start); return start; } - -/** - * Forward relevant parameters to packet processor; queueID - * is used to link doorbell. The queueIDs are not re-used - * in current implementation, and we allocate only one page - * (4096 bytes) for doorbells, so check if this queue ID can - * be mapped into that page. - */ -void -HSADriver::allocateQueue(const SETranslatingPortProxy &mem_proxy, Addr ioc_buf) -{ - TypedBufferArg args(ioc_buf); - args.copyIn(mem_proxy); - - if (VOID_PTR_ADD32(0, queueId) >= (void*)0x1000) { - fatal("%s: Exceeded maximum number of HSA queues allowed\n", name()); - } - - args->queue_id = queueId++; - auto &hsa_pp = device->hsaPacketProc(); - hsa_pp.setDeviceQueueDesc(args->read_pointer_address, - args->ring_base_address, args->queue_id, - args->ring_size); - args.copyOut(mem_proxy); -} diff --git a/src/dev/hsa/hsa_packet_processor.cc b/src/dev/hsa/hsa_packet_processor.cc index 76da30e29c..bd050163bb 100644 --- a/src/dev/hsa/hsa_packet_processor.cc +++ b/src/dev/hsa/hsa_packet_processor.cc @@ -127,7 +127,7 @@ HSAPacketProcessor::write(Packet *pkt) "%s: write of size %d to reg-offset %d (0x%x)\n", __FUNCTION__, pkt->getSize(), daddr, daddr); - uint32_t doorbell_reg = pkt->get(); + uint32_t doorbell_reg = pkt->getLE(); DPRINTF(HSAPacketProcessor, "%s: write data 0x%x to offset %d (0x%x)\n", @@ -152,9 +152,8 @@ HSAPacketProcessor::translateOrDie(Addr vaddr, Addr &paddr) // new extensions, it will likely be wrong to just arbitrarily grab context // zero. auto process = sys->getThreadContext(0)->getProcessPtr(); - auto mem_state = process->getMemState(); - if (!mem_state->translate(vaddr, paddr)) + if (!process->pTable->translate(vaddr, paddr)) fatal("failed translation: vaddr 0x%x\n", vaddr); } @@ -395,9 +394,7 @@ HSAPacketProcessor::processPkt(void* pkt, uint32_t rl_idx, Addr host_pkt_addr) * not support atomic operations. */ auto tc = sys->getThreadContext(0); - auto process = tc->getProcessPtr(); - auto mem_state = process->getMemState(); - auto &virt_proxy = mem_state->getVirtProxy(); + auto &virt_proxy = tc->getVirtProxy(); TypedBufferArg prev_signal(signal_addr); prev_signal.copyIn(virt_proxy); diff --git a/src/dev/hsa/hsa_packet_processor.hh b/src/dev/hsa/hsa_packet_processor.hh index 5558d4eb69..206d9ab848 100644 --- a/src/dev/hsa/hsa_packet_processor.hh +++ b/src/dev/hsa/hsa_packet_processor.hh @@ -52,11 +52,6 @@ // HSA runtime supports only 5 signals per barrier packet #define NumSignalsPerBarrier 5 -// This define is copied from hsa runtime (libhsakmt/src/libhsakmt.h) -// This is the mapping function used by runtime for mapping -// queueID to dooorbell address -#define VOID_PTR_ADD32(ptr,n) (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ - class HSADevice; class HWScheduler; diff --git a/src/dev/hsa/hw_scheduler.cc b/src/dev/hsa/hw_scheduler.cc index 6b371551bd..57cf6d1b18 100644 --- a/src/dev/hsa/hw_scheduler.cc +++ b/src/dev/hsa/hw_scheduler.cc @@ -90,7 +90,12 @@ HWScheduler::registerNewQueue(uint64_t hostReadIndexPointer, // Map queue ID to doorbell. // We are only using offset to pio base address as doorbell // We use the same mapping function used by hsa runtime to do this mapping - Addr db_offset = (Addr)(VOID_PTR_ADD32(0, queue_id)); + // + // Originally + // #define VOID_PTR_ADD32(ptr,n) \ + // (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ + // (Addr)VOID_PTR_ADD32(0, queue_id) + Addr db_offset = queue_id; if (dbMap.find(db_offset) != dbMap.end()) { panic("Creating an already existing queue (queueID %d)", queue_id); } @@ -333,7 +338,15 @@ HWScheduler::write(Addr db_addr, uint32_t doorbell_reg) void HWScheduler::unregisterQueue(uint64_t queue_id) { - Addr db_offset = (Addr)(VOID_PTR_ADD32(0, queue_id)); + // Pointer arithmetic on a null pointer is undefined behavior. Clang + // compilers therefore complain if the following reads: + // `(Addr)(VOID_PRT_ADD32(0, queue_id))` + // + // Originally + // #define VOID_PTR_ADD32(ptr,n) \ + // (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ + // (Addr)VOID_PTR_ADD32(0, queue_id) + Addr db_offset = queue_id; auto dbmap_iter = dbMap.find(db_offset); if (dbmap_iter == dbMap.end()) { panic("Destroying a non-existing queue (db_offset %x)", diff --git a/src/dev/storage/disk_image.cc b/src/dev/storage/disk_image.cc index 1578ea30f8..319bccf138 100644 --- a/src/dev/storage/disk_image.cc +++ b/src/dev/storage/disk_image.cc @@ -444,7 +444,7 @@ CowDiskImage::unserialize(CheckpointIn &cp) { string cowFilename; UNSERIALIZE_SCALAR(cowFilename); - cowFilename = cp.cptDir + "/" + cowFilename; + cowFilename = cp.getCptDir() + "/" + cowFilename; open(cowFilename); } diff --git a/src/doxygen/group_definitions.hh b/src/doxygen/group_definitions.hh new file mode 100644 index 0000000000..40069e0acd --- /dev/null +++ b/src/doxygen/group_definitions.hh @@ -0,0 +1,29 @@ +/** + * @defgroup api_drain The Drain API. + * + * These methods relate to the "Drainable" interface. + */ + +/** + * @defgroup api_serialize The Serialize API. + * + * These methods related to the "Serialize" interface. + */ + +/** + * @defgroup api_eventq The Event Queue API. + * + * These methods relate to the event queue interface. + */ + +/** + * @defgroup api_stats The Stats API. + * + * These methods relate to the statistics I/O interface. + */ + +/** + * @defgroup api_simobject The SimObject API. + * + * These methods relate to the SimObject interface. + */ diff --git a/src/gpu-compute/gpu_tlb.cc b/src/gpu-compute/gpu_tlb.cc index 2ae40dadf2..37a8b03a28 100644 --- a/src/gpu-compute/gpu_tlb.cc +++ b/src/gpu-compute/gpu_tlb.cc @@ -314,7 +314,7 @@ namespace X86ISA return std::make_shared(0); req->setLocalAccessor( - [read,regNum,vaddr](ThreadContext *tc, PacketPtr pkt) + [read,regNum](ThreadContext *tc, PacketPtr pkt) { return localMiscRegAccess(read, regNum, tc, pkt); } diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index 0a8479eb89..5f0fcc77a2 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -716,7 +716,7 @@ DRAMCtrl::processRespondEvent() accessAndRespond(dram_pkt->pkt, frontendLatency + backendLatency); } - delete respQueue.front(); + assert(respQueue.front() == dram_pkt); respQueue.pop_front(); if (!respQueue.empty()) { @@ -738,6 +738,8 @@ DRAMCtrl::processRespondEvent() } } + delete dram_pkt; + // We have made a location in the queue available at this point, // so if there is a read that was forced to wait, retry now if (retryRdReq) { diff --git a/src/mem/physical.cc b/src/mem/physical.cc index b4246a3024..4bd812c212 100644 --- a/src/mem/physical.cc +++ b/src/mem/physical.cc @@ -401,7 +401,7 @@ PhysicalMemory::unserializeStore(CheckpointIn &cp) string filename; UNSERIALIZE_SCALAR(filename); - string filepath = cp.cptDir + "/" + filename; + string filepath = cp.getCptDir() + "/" + filename; // mmap memoryfile gzFile compressed_mem = gzopen(filepath.c_str(), "rb"); diff --git a/src/mem/ruby/SConscript b/src/mem/ruby/SConscript index 8c22ae495f..fc90f8a624 100644 --- a/src/mem/ruby/SConscript +++ b/src/mem/ruby/SConscript @@ -126,7 +126,7 @@ MakeInclude('structures/CacheMemory.hh') MakeInclude('structures/DirectoryMemory.hh') MakeInclude('structures/PerfectCacheMemory.hh') MakeInclude('structures/PersistentTable.hh') -MakeInclude('structures/Prefetcher.hh') +MakeInclude('structures/RubyPrefetcher.hh') MakeInclude('structures/TBETable.hh') MakeInclude('structures/TimerTable.hh') MakeInclude('structures/WireBuffer.hh') diff --git a/src/mem/ruby/network/garnet2.0/OutputUnit.hh b/src/mem/ruby/network/garnet2.0/OutputUnit.hh index c720888c12..dbb35eeed6 100644 --- a/src/mem/ruby/network/garnet2.0/OutputUnit.hh +++ b/src/mem/ruby/network/garnet2.0/OutputUnit.hh @@ -35,6 +35,7 @@ #include #include +#include "base/compiler.hh" #include "mem/ruby/common/Consumer.hh" #include "mem/ruby/network/garnet2.0/CommonTypes.hh" #include "mem/ruby/network/garnet2.0/NetworkLink.hh" @@ -91,7 +92,7 @@ class OutputUnit : public Consumer private: Router *m_router; - int m_id; + int M5_CLASS_VAR_USED m_id; PortDirection m_direction; int m_vc_per_vnet; NetworkLink *m_out_link; diff --git a/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm b/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm index 3639ef2c59..4de4a293e0 100644 --- a/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm +++ b/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm @@ -46,7 +46,7 @@ machine(MachineType:L0Cache, "MESI Directory L0 Cache") Cycles response_latency := 2; bool send_evictions; - Prefetcher * prefetcher; + RubyPrefetcher * prefetcher; bool enable_prefetch := "False"; // From this node's L0 cache to the network diff --git a/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm b/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm index 7c83478db5..3e07e03024 100644 --- a/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm +++ b/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm @@ -1,4 +1,16 @@ /* + * Copyright (c) 2020 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 1999-2013 Mark D. Hill and David A. Wood * All rights reserved. * @@ -30,7 +42,7 @@ machine(MachineType:L1Cache, "MESI Directory L1 Cache CMP") : Sequencer * sequencer; CacheMemory * L1Icache; CacheMemory * L1Dcache; - Prefetcher * prefetcher; + RubyPrefetcher * prefetcher; int l2_select_num_bits; Cycles l1_request_latency := 2; Cycles l1_response_latency := 2; @@ -816,11 +828,6 @@ machine(MachineType:L1Cache, "MESI Directory L1 Cache CMP") } } - action(dg_invalidate_sc, "dg", - desc="Invalidate store conditional as the cache lost permissions") { - sequencer.invalidateSC(address); - } - action(h_load_hit, "hd", desc="Notify sequencer the load completed.") { @@ -1394,7 +1401,6 @@ machine(MachineType:L1Cache, "MESI Directory L1 Cache CMP") transition(SM, Inv, IM) { forward_eviction_to_cpu; fi_sendInvAck; - dg_invalidate_sc; l_popRequestQueue; } diff --git a/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm b/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm index a29fb5c4f3..15bbdd3f28 100644 --- a/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm +++ b/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited + * Copyright (c) 2019-2020 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -1191,6 +1191,7 @@ machine(MachineType:L1Cache, "L1 cache protocol") // transition(OM, Fwd_GETX, OMF) { transition(OM, Fwd_GETX, IM) { ee_sendDataExclusive; + forward_eviction_to_cpu; l_popForwardQueue; } diff --git a/src/mem/ruby/protocol/RubySlicc_Types.sm b/src/mem/ruby/protocol/RubySlicc_Types.sm index ff574b5e28..831a322af9 100644 --- a/src/mem/ruby/protocol/RubySlicc_Types.sm +++ b/src/mem/ruby/protocol/RubySlicc_Types.sm @@ -131,7 +131,6 @@ structure (Sequencer, external = "yes") { void evictionCallback(Addr); void recordRequestType(SequencerRequestType); bool checkResourceAvailable(CacheResourceType, Addr); - void invalidateSC(Addr); } structure (GPUCoalescer, external = "yes") { @@ -244,7 +243,7 @@ structure (TimerTable, inport="yes", external = "yes") { bool isSet(Addr); } -structure (Prefetcher, external = "yes") { +structure (RubyPrefetcher, external = "yes") { void observeMiss(Addr, RubyRequestType); void observePfHit(Addr); void observePfMiss(Addr); diff --git a/src/mem/ruby/structures/Prefetcher.cc b/src/mem/ruby/structures/RubyPrefetcher.cc similarity index 99% rename from src/mem/ruby/structures/Prefetcher.cc rename to src/mem/ruby/structures/RubyPrefetcher.cc index 06021159c9..8646b99323 100644 --- a/src/mem/ruby/structures/Prefetcher.cc +++ b/src/mem/ruby/structures/RubyPrefetcher.cc @@ -38,7 +38,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "mem/ruby/structures/Prefetcher.hh" +#include "mem/ruby/structures/RubyPrefetcher.hh" #include "base/bitfield.hh" #include "debug/RubyPrefetcher.hh" @@ -46,7 +46,7 @@ #include "mem/ruby/system/RubySystem.hh" RubyPrefetcher* -PrefetcherParams::create() +RubyPrefetcherParams::create() { return new RubyPrefetcher(this); } diff --git a/src/mem/ruby/structures/Prefetcher.hh b/src/mem/ruby/structures/RubyPrefetcher.hh similarity index 99% rename from src/mem/ruby/structures/Prefetcher.hh rename to src/mem/ruby/structures/RubyPrefetcher.hh index 4d2513f78d..b691d3d866 100644 --- a/src/mem/ruby/structures/Prefetcher.hh +++ b/src/mem/ruby/structures/RubyPrefetcher.hh @@ -51,7 +51,7 @@ #include "mem/ruby/slicc_interface/AbstractController.hh" #include "mem/ruby/slicc_interface/RubyRequest.hh" #include "mem/ruby/system/RubySystem.hh" -#include "params/Prefetcher.hh" +#include "params/RubyPrefetcher.hh" #include "sim/sim_object.hh" #include "sim/system.hh" @@ -93,7 +93,7 @@ class PrefetchEntry class RubyPrefetcher : public SimObject { public: - typedef PrefetcherParams Params; + typedef RubyPrefetcherParams Params; RubyPrefetcher(const Params *p); ~RubyPrefetcher(); diff --git a/src/mem/ruby/structures/RubyPrefetcher.py b/src/mem/ruby/structures/RubyPrefetcher.py index d762ba5308..38397c3342 100644 --- a/src/mem/ruby/structures/RubyPrefetcher.py +++ b/src/mem/ruby/structures/RubyPrefetcher.py @@ -42,10 +42,10 @@ from m5.proxy import * from m5.objects.System import System -class Prefetcher(SimObject): - type = 'Prefetcher' +class RubyPrefetcher(SimObject): + type = 'RubyPrefetcher' cxx_class = 'RubyPrefetcher' - cxx_header = "mem/ruby/structures/Prefetcher.hh" + cxx_header = "mem/ruby/structures/RubyPrefetcher.hh" num_streams = Param.UInt32(4, "Number of prefetch streams to be allocated") @@ -58,3 +58,7 @@ class Prefetcher(SimObject): cross_page = Param.Bool(False, """True if prefetched address can be on a page different from the observed address""") sys = Param.System(Parent.any, "System this prefetcher belongs to") + +class Prefetcher(RubyPrefetcher): + """DEPRECATED""" + pass diff --git a/src/mem/ruby/structures/SConscript b/src/mem/ruby/structures/SConscript index 9e2bde924a..0cf05598f8 100644 --- a/src/mem/ruby/structures/SConscript +++ b/src/mem/ruby/structures/SConscript @@ -40,6 +40,6 @@ Source('DirectoryMemory.cc') Source('CacheMemory.cc') Source('WireBuffer.cc') Source('PersistentTable.cc') -Source('Prefetcher.cc') +Source('RubyPrefetcher.cc') Source('TimerTable.cc') Source('BankedArray.cc') diff --git a/src/mem/ruby/system/RubySystem.cc b/src/mem/ruby/system/RubySystem.cc index c9da20656b..9fa47362bc 100644 --- a/src/mem/ruby/system/RubySystem.cc +++ b/src/mem/ruby/system/RubySystem.cc @@ -330,7 +330,7 @@ RubySystem::unserialize(CheckpointIn &cp) UNSERIALIZE_SCALAR(cache_trace_file); UNSERIALIZE_SCALAR(cache_trace_size); - cache_trace_file = cp.cptDir + "/" + cache_trace_file; + cache_trace_file = cp.getCptDir() + "/" + cache_trace_file; readCompressedTrace(cache_trace_file, uncompressed_trace, cache_trace_size); diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py index 0904ac63fc..8e3a1f84b6 100644 --- a/src/mem/slicc/symbols/StateMachine.py +++ b/src/mem/slicc/symbols/StateMachine.py @@ -61,7 +61,7 @@ python_class_map = { "MemoryControl": "MemoryControl", "MessageBuffer": "MessageBuffer", "DMASequencer": "DMASequencer", - "Prefetcher":"Prefetcher", + "RubyPrefetcher":"RubyPrefetcher", "Cycles":"Cycles", } @@ -458,6 +458,31 @@ void unset_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr); ident = self.ident c_ident = "%s_Controller" % self.ident + # Unfortunately, clang compilers will throw a "call to function ... + # that is neither visible in the template definition nor found by + # argument-dependent lookup" error if "mem/ruby/common/BoolVec.hh" is + # included after "base/cprintf.hh". This is because "base/cprintf.hh" + # utilizes a "<<" operator in "base/cprintf_formats.hh" that is + # defined in "mem/ruby/common/BoolVec.hh". While GCC compilers permit + # the operator definition after usage in this case, clang compilers do + # not. + # + # The reason for this verbose solution below is due to the gem5 + # style-checker, which will complain if "mem/ruby/common/BoolVec.hh" + # is included above "base/cprintf.hh" in this file, despite it being + # necessary in this case. This is therefore a bit of a hack to keep + # both clang and our style-checker happy. + base_include = ''' +#include "base/compiler.hh" +#include "base/cprintf.hh" + +''' + + boolvec_include = ''' +#include "mem/ruby/common/BoolVec.hh" + +''' + code(''' /** \\file $c_ident.cc * @@ -473,11 +498,11 @@ void unset_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr); #include #include -#include "base/compiler.hh" -#include "base/cprintf.hh" -#include "mem/ruby/common/BoolVec.hh" - ''') + + code(boolvec_include) + code(base_include) + for f in self.debug_flags: code('#include "debug/${{f}}.hh"') code(''' diff --git a/src/mem/token_port.hh b/src/mem/token_port.hh index 3d74315b02..7112a41e7f 100644 --- a/src/mem/token_port.hh +++ b/src/mem/token_port.hh @@ -94,7 +94,7 @@ class TokenSlavePort : public SlavePort std::deque respQueue; - void recvRespRetry(); + void recvRespRetry() override; public: TokenSlavePort(const std::string& name, ClockedObject *owner, diff --git a/src/python/m5/ticks.py b/src/python/m5/ticks.py index 64b7cb8118..047116ac78 100644 --- a/src/python/m5/ticks.py +++ b/src/python/m5/ticks.py @@ -25,6 +25,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import print_function +from math import ceil import six if six.PY3: long = int @@ -73,7 +74,7 @@ def fromSeconds(value): # convert the value from time to ticks value *= _m5.core.getClockFrequency() - int_value = int(round(value)) + int_value = int(ceil(value)) err = (value - int_value) / value if err > frequency_tolerance: warn("rounding error > tolerance\n %f rounded to %d", value, diff --git a/src/python/m5/util/__init__.py b/src/python/m5/util/__init__.py index 98a7a08dd2..c59f40a811 100644 --- a/src/python/m5/util/__init__.py +++ b/src/python/m5/util/__init__.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 ARM Limited +# Copyright (c) 2016, 2020 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -177,9 +177,16 @@ def printList(items, indent=4): line += item print(line) -def readCommand(cmd, **kwargs): - """run the command cmd, read the results and return them - this is sorta like `cmd` in shell""" +def readCommandWithReturn(cmd, **kwargs): + """ + run the command cmd, read the results and return them + this is sorta like `cmd` in shell + + :param cmd: command to run with Popen + :type cmd: string, list + :returns: pair consisting on Popen retcode and the command stdout + :rtype: (int, string) + """ from subprocess import Popen, PIPE, STDOUT if isinstance(cmd, str): @@ -196,10 +203,23 @@ def readCommand(cmd, **kwargs): subp = Popen(cmd, **kwargs) except Exception as e: if no_exception: - return exception + return -1, exception raise - return subp.communicate()[0].decode('utf-8') + output = subp.communicate()[0].decode('utf-8') + return subp.returncode, output + +def readCommand(cmd, **kwargs): + """ + run the command cmd, read the results and return them + this is sorta like `cmd` in shell + + :param cmd: command to run with Popen + :type cmd: string, list + :returns: command stdout + :rtype: string + """ + return readCommandWithReturn(cmd, **kwargs)[1] def makeDir(path): """Make a directory if it doesn't exist. If the path does exist, diff --git a/src/python/m5/util/dot_writer.py b/src/python/m5/util/dot_writer.py index e6de3f3219..c66108d21b 100644 --- a/src/python/m5/util/dot_writer.py +++ b/src/python/m5/util/dot_writer.py @@ -267,7 +267,7 @@ def dot_gen_colour(simNode, isPort = False): return dot_rgb_to_html(r, g, b) def dot_rgb_to_html(r, g, b): - return "#%.2x%.2x%.2x" % (r, g, b) + return "#%.2x%.2x%.2x" % (int(r), int(g), int(b)) # We need to create all of the clock domains. We abuse the alpha channel to get # the correct domain colouring. diff --git a/src/sim/drain.hh b/src/sim/drain.hh index a775c068e8..0d74923713 100644 --- a/src/sim/drain.hh +++ b/src/sim/drain.hh @@ -65,6 +65,8 @@ class Drainable; * the world through Drainable::getState()) could be used to determine * if all objects have entered the Drained state, the protocol is * actually a bit more elaborate. See Drainable::drain() for details. + * + * @ingroup api_drain */ enum class DrainState { Running, /** Running normally */ @@ -113,11 +115,15 @@ class DrainManager * * @return true if all objects were drained successfully, false if * more simulation is needed. + * + * @ingroup api_drain */ bool tryDrain(); /** * Resume normal simulation in a Drained system. + * + * @ingroup api_drain */ void resume(); @@ -131,18 +137,30 @@ class DrainManager * state since the state isn't stored in checkpoints. This method * performs state fixups on all Drainable objects and the * DrainManager itself. + * + * @ingroup api_drain */ void preCheckpointRestore(); - /** Check if the system is drained */ + /** + * Check if the system is drained + * + * @ingroup api_drain + */ bool isDrained() const { return _state == DrainState::Drained; } - /** Get the simulators global drain state */ + /** + * Get the simulators global drain state + * + * @ingroup api_drain + */ DrainState state() const { return _state; } /** * Notify the DrainManager that a Drainable object has finished * draining. + * + * @ingroup api_drain */ void signalDrainDone(); @@ -246,11 +264,15 @@ class Drainable * @return DrainState::Drained if the object is drained at this * point in time, DrainState::Draining if it needs further * simulation. + * + * @ingroup api_drain */ virtual DrainState drain() = 0; /** * Resume execution after a successful drain. + * + * @ingroup api_drain */ virtual void drainResume() {}; @@ -261,6 +283,8 @@ class Drainable * into a state where it is ready to be drained. The method is * safe to call multiple times and there is no need to check that * draining has been requested before calling this method. + * + * @ingroup api_drain */ void signalDrainDone() const { switch (_drainState) { @@ -276,7 +300,11 @@ class Drainable } public: - /** Return the current drain state of an object. */ + /** + * Return the current drain state of an object. + * + * @ingroup api_drain + */ DrainState drainState() const { return _drainState; } /** @@ -290,6 +318,8 @@ class Drainable * * This method is only called in the child of the fork. The call * takes place in a drained system. + * + * @ingroup api_drain */ virtual void notifyFork() {}; diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh index 2976e11cb5..522b394f7e 100644 --- a/src/sim/eventq.hh +++ b/src/sim/eventq.hh @@ -111,6 +111,9 @@ class EventBase static const FlagsType InitMask = 0xffc0; // mask for init bits public: + /** + * @ingroup api_eventq + */ typedef int8_t Priority; /// Event priorities, to provide tie-breakers for events scheduled @@ -118,61 +121,117 @@ class EventBase /// priority; these values are used to control events that need to /// be ordered within a cycle. - /// Minimum priority + /** + * Minimum priority + * + * @ingroup api_eventq + */ static const Priority Minimum_Pri = SCHAR_MIN; - /// If we enable tracing on a particular cycle, do that as the - /// very first thing so we don't miss any of the events on - /// that cycle (even if we enter the debugger). + /** + * If we enable tracing on a particular cycle, do that as the + * very first thing so we don't miss any of the events on + * that cycle (even if we enter the debugger). + * + * @ingroup api_eventq + */ static const Priority Debug_Enable_Pri = -101; - /// Breakpoints should happen before anything else (except - /// enabling trace output), so we don't miss any action when - /// debugging. + /** + * Breakpoints should happen before anything else (except + * enabling trace output), so we don't miss any action when + * debugging. + * + * @ingroup api_eventq + */ static const Priority Debug_Break_Pri = -100; - /// CPU switches schedule the new CPU's tick event for the - /// same cycle (after unscheduling the old CPU's tick event). - /// The switch needs to come before any tick events to make - /// sure we don't tick both CPUs in the same cycle. + /** + * CPU switches schedule the new CPU's tick event for the + * same cycle (after unscheduling the old CPU's tick event). + * The switch needs to come before any tick events to make + * sure we don't tick both CPUs in the same cycle. + * + * @ingroup api_eventq + */ static const Priority CPU_Switch_Pri = -31; - /// For some reason "delayed" inter-cluster writebacks are - /// scheduled before regular writebacks (which have default - /// priority). Steve? + /** + * For some reason "delayed" inter-cluster writebacks are + * scheduled before regular writebacks (which have default + * priority). Steve? + * + * @ingroup api_eventq + */ static const Priority Delayed_Writeback_Pri = -1; - /// Default is zero for historical reasons. + /** + * Default is zero for historical reasons. + * + * @ingroup api_eventq + */ static const Priority Default_Pri = 0; - /// DVFS update event leads to stats dump therefore given a lower priority - /// to ensure all relevant states have been updated + /** + * DVFS update event leads to stats dump therefore given a lower priority + * to ensure all relevant states have been updated + * + * @ingroup api_eventq + */ static const Priority DVFS_Update_Pri = 31; - /// Serailization needs to occur before tick events also, so - /// that a serialize/unserialize is identical to an on-line - /// CPU switch. + /** + * Serailization needs to occur before tick events also, so + * that a serialize/unserialize is identical to an on-line + * CPU switch. + * + * @ingroup api_eventq + */ static const Priority Serialize_Pri = 32; - /// CPU ticks must come after other associated CPU events - /// (such as writebacks). + /** + * CPU ticks must come after other associated CPU events + * (such as writebacks). + * + * @ingroup api_eventq + */ static const Priority CPU_Tick_Pri = 50; - /// If we want to exit a thread in a CPU, it comes after CPU_Tick_Pri + /** + * If we want to exit a thread in a CPU, it comes after CPU_Tick_Pri + * + * @ingroup api_eventq + */ static const Priority CPU_Exit_Pri = 64; - /// Statistics events (dump, reset, etc.) come after - /// everything else, but before exit. + /** + * Statistics events (dump, reset, etc.) come after + * everything else, but before exit. + * + * @ingroup api_eventq + */ static const Priority Stat_Event_Pri = 90; - /// Progress events come at the end. + /** + * Progress events come at the end. + * + * @ingroup api_eventq + */ static const Priority Progress_Event_Pri = 95; - /// If we want to exit on this cycle, it's the very last thing - /// we do. + /** + * If we want to exit on this cycle, it's the very last thing + * we do. + * + * @ingroup api_eventq + */ static const Priority Sim_Exit_Pri = 100; - /// Maximum priority + /** + * Maximum priority + * + * @ingroup api_eventq + */ static const Priority Maximum_Pri = SCHAR_MAX; }; @@ -246,7 +305,6 @@ class Event : public EventBase, public Serializable } protected: - /// Accessor for flags. Flags getFlags() const { @@ -260,7 +318,6 @@ class Event : public EventBase, public Serializable return flags.isSet(_flags); } - /// Accessor for flags. void setFlags(Flags _flags) { @@ -281,7 +338,11 @@ class Event : public EventBase, public Serializable flags.clear(PublicWrite); } - // This function isn't really useful if TRACING_ON is not defined + /** + * This function isn't really useful if TRACING_ON is not defined + * + * @ingroup api_eventq + */ virtual void trace(const char *action); //!< trace event activity /// Return the instance number as a string. @@ -341,6 +402,8 @@ class Event : public EventBase, public Serializable /* * Event constructor * @param queue that the event gets scheduled on + * + * @ingroup api_eventq */ Event(Priority p = Default_Pri, Flags f = 0) : nextBin(nullptr), nextInBin(nullptr), _when(0), _priority(p), @@ -357,6 +420,10 @@ class Event : public EventBase, public Serializable #endif } + /** + * @ingroup api_eventq + * @{ + */ virtual ~Event(); virtual const std::string name() const; @@ -367,6 +434,7 @@ class Event : public EventBase, public Serializable /// Dump the current event data void dump() const; + /** @}*/ //end of api group public: /* @@ -378,29 +446,63 @@ class Event : public EventBase, public Serializable * * If the AutoDestroy flag is set, the object is deleted once it * is processed. + * + * @ingroup api_eventq */ virtual void process() = 0; - /// Determine if the current event is scheduled + /** + * Determine if the current event is scheduled + * + * @ingroup api_eventq + */ bool scheduled() const { return flags.isSet(Scheduled); } - /// Squash the current event + /** + * Squash the current event + * + * @ingroup api_eventq + */ void squash() { flags.set(Squashed); } - /// Check whether the event is squashed + /** + * Check whether the event is squashed + * + * @ingroup api_eventq + */ bool squashed() const { return flags.isSet(Squashed); } - /// See if this is a SimExitEvent (without resorting to RTTI) + /** + * See if this is a SimExitEvent (without resorting to RTTI) + * + * @ingroup api_eventq + */ bool isExitEvent() const { return flags.isSet(IsExitEvent); } - /// Check whether this event will auto-delete + /** + * Check whether this event will auto-delete + * + * @ingroup api_eventq + */ bool isManaged() const { return flags.isSet(Managed); } + + /** + * @ingroup api_eventq + */ bool isAutoDelete() const { return isManaged(); } - /// Get the time that the event is scheduled + /** + * Get the time that the event is scheduled + * + * @ingroup api_eventq + */ Tick when() const { return _when; } - /// Get the event priority + /** + * Get the event priority + * + * @ingroup api_eventq + */ Priority priority() const { return _priority; } //! If this is part of a GlobalEvent, return the pointer to the @@ -412,6 +514,9 @@ class Event : public EventBase, public Serializable void unserialize(CheckpointIn &cp) override; }; +/** + * @ingroup api_eventq + */ inline bool operator<(const Event &l, const Event &r) { @@ -419,6 +524,9 @@ operator<(const Event &l, const Event &r) (l.when() == r.when() && l.priority() < r.priority()); } +/** + * @ingroup api_eventq + */ inline bool operator>(const Event &l, const Event &r) { @@ -426,12 +534,19 @@ operator>(const Event &l, const Event &r) (l.when() == r.when() && l.priority() > r.priority()); } +/** + * @ingroup api_eventq + */ inline bool operator<=(const Event &l, const Event &r) { return l.when() < r.when() || (l.when() == r.when() && l.priority() <= r.priority()); } + +/** + * @ingroup api_eventq + */ inline bool operator>=(const Event &l, const Event &r) { @@ -439,12 +554,18 @@ operator>=(const Event &l, const Event &r) (l.when() == r.when() && l.priority() >= r.priority()); } +/** + * @ingroup api_eventq + */ inline bool operator==(const Event &l, const Event &r) { return l.when() == r.when() && l.priority() == r.priority(); } +/** + * @ingroup api_eventq + */ inline bool operator!=(const Event &l, const Event &r) { @@ -552,6 +673,9 @@ class EventQueue class ScopedMigration { public: + /** + * @ingroup api_eventq + */ ScopedMigration(EventQueue *_new_eq, bool _doMigrate = true) :new_eq(*_new_eq), old_eq(*curEventQueue()), doMigrate((&new_eq != &old_eq)&&_doMigrate) @@ -590,6 +714,9 @@ class EventQueue class ScopedRelease { public: + /** + * @group api_eventq + */ ScopedRelease(EventQueue *_eq) : eq(*_eq) { @@ -605,33 +732,71 @@ class EventQueue EventQueue &eq; }; + /** + * @ingroup api_eventq + */ EventQueue(const std::string &n); + /** + * @ingroup api_eventq + * @{ + */ virtual const std::string name() const { return objName; } void name(const std::string &st) { objName = st; } + /** @}*/ //end of api_eventq group - //! Schedule the given event on this queue. Safe to call from any - //! thread. + /** + * Schedule the given event on this queue. Safe to call from any thread. + * + * @ingroup api_eventq + */ void schedule(Event *event, Tick when, bool global = false); - //! Deschedule the specified event. Should be called only from the - //! owning thread. + /** + * Deschedule the specified event. Should be called only from the owning + * thread. + * @ingroup api_eventq + */ void deschedule(Event *event); - //! Reschedule the specified event. Should be called only from - //! the owning thread. + /** + * Reschedule the specified event. Should be called only from the owning + * thread. + * + * @ingroup api_eventq + */ void reschedule(Event *event, Tick when, bool always = false); Tick nextTick() const { return head->when(); } void setCurTick(Tick newVal) { _curTick = newVal; } + + /** + * While curTick() is useful for any object assigned to this event queue, + * if an object that is assigned to another event queue (or a non-event + * object) need to access the current tick of this event queue, this + * function is used. + * + * @return Tick The current tick of this event queue. + * @ingroup api_eventq + */ Tick getCurTick() const { return _curTick; } Event *getHead() const { return head; } Event *serviceOne(); - // process all events up to the given timestamp. we inline a - // quick test to see if there are any events to process; if so, - // call the internal out-of-line version to process them all. + /** + * process all events up to the given timestamp. we inline a quick test + * to see if there are any events to process; if so, call the internal + * out-of-line version to process them all. + * + * Notes: + * - This is only used for "instruction" event queues. Instead of counting + * ticks, this is actually counting instructions. + * - This updates the current tick value to the value of the entry at the + * head of the queue. + * + * @ingroup api_eventq + */ void serviceEvents(Tick when) { @@ -650,14 +815,26 @@ class EventQueue setCurTick(when); } - // return true if no events are queued + /** + * Returns true if no events are queued + * + * @ingroup api_eventq + */ bool empty() const { return head == NULL; } + /** + * This is a debugging function which will print everything on the event + * queue. + * + * @ingroup api_eventq + */ void dump() const; bool debugVerify() const; - //! Function for moving events from the async_queue to the main queue. + /** + * Function for moving events from the async_queue to the main queue. + */ void handleAsyncInsertions(); /** @@ -672,6 +849,8 @@ class EventQueue * can be used by an implementation to schedule a wakeup in the * future if it is sure it will remain active until then. * Or it can be ignored and the event queue can be woken up now. + * + * @ingroup api_eventq */ virtual void wakeup(Tick when = (Tick)-1) { } @@ -730,52 +909,81 @@ class EventManager EventQueue *eventq; public: + /** + * @ingroup api_eventq + * @{ + */ EventManager(EventManager &em) : eventq(em.eventq) {} EventManager(EventManager *em) : eventq(em->eventq) {} EventManager(EventQueue *eq) : eventq(eq) {} + /** @}*/ //end of api_eventq group + /** + * @ingroup api_eventq + */ EventQueue * eventQueue() const { return eventq; } + /** + * @ingroup api_eventq + */ void schedule(Event &event, Tick when) { eventq->schedule(&event, when); } + /** + * @ingroup api_eventq + */ void deschedule(Event &event) { eventq->deschedule(&event); } + /** + * @ingroup api_eventq + */ void reschedule(Event &event, Tick when, bool always = false) { eventq->reschedule(&event, when, always); } + /** + * @ingroup api_eventq + */ void schedule(Event *event, Tick when) { eventq->schedule(event, when); } + /** + * @ingroup api_eventq + */ void deschedule(Event *event) { eventq->deschedule(event); } + /** + * @ingroup api_eventq + */ void reschedule(Event *event, Tick when, bool always = false) { eventq->reschedule(event, when, always); } + /** + * @ingroup api_eventq + */ void wakeupEventQueue(Tick when = (Tick)-1) { eventq->wakeup(when); @@ -823,6 +1031,9 @@ class EventFunctionWrapper : public Event std::string _name; public: + /** + * @ingroup api_eventq + */ EventFunctionWrapper(const std::function &callback, const std::string &name, bool del = false, @@ -833,14 +1044,23 @@ class EventFunctionWrapper : public Event setFlags(AutoDelete); } + /** + * @ingroup api_eventq + */ void process() { callback(); } + /** + * @ingroup api_eventq + */ const std::string name() const { return _name + ".wrapped_function_event"; } + /** + * @ingroup api_eventq + */ const char *description() const { return "EventFunctionWrapped"; } }; diff --git a/src/sim/mem_state.cc b/src/sim/mem_state.cc index 42d37819fa..f998fffe9a 100644 --- a/src/sim/mem_state.cc +++ b/src/sim/mem_state.cc @@ -369,6 +369,7 @@ MemState::remapRegion(Addr start_addr, Addr new_start_addr, Addr length) new_start_addr); start_addr += _pageBytes; + new_start_addr += _pageBytes; /** * The regions need to always be page-aligned otherwise the while diff --git a/src/sim/power/mathexpr_powermodel.hh b/src/sim/power/mathexpr_powermodel.hh index 1edb800ef6..37ea1901de 100644 --- a/src/sim/power/mathexpr_powermodel.hh +++ b/src/sim/power/mathexpr_powermodel.hh @@ -64,14 +64,14 @@ class MathExprPowerModel : public PowerModelState * * @return Power (Watts) consumed by this object (dynamic component) */ - double getDynamicPower() const { return eval(dyn_expr); } + double getDynamicPower() const override { return eval(dyn_expr); } /** * Get the static power consumption. * * @return Power (Watts) consumed by this object (static component) */ - double getStaticPower() const { return eval(st_expr); } + double getStaticPower() const override { return eval(st_expr); } /** * Get the value for a variable (maps to a stat) diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc index da19168ddc..2d87b05951 100644 --- a/src/sim/pseudo_inst.cc +++ b/src/sim/pseudo_inst.cc @@ -1,5 +1,6 @@ /* * Copyright (c) 2010-2012, 2015, 2017 ARM Limited + * Copyright (c) 2020 Barkhausen Institut * All rights reserved * * The license below extends only to copyright in the software and shall @@ -288,7 +289,7 @@ initParam(ThreadContext *tc, uint64_t key_str1, uint64_t key_str2) char key[len]; memset(key, '\0', len); - std::array key_regs = { key_str1, key_str2 }; + std::array key_regs = {{ key_str1, key_str2 }}; key_regs = letoh(key_regs); memcpy(key, key_regs.data(), sizeof(key_regs)); @@ -429,8 +430,10 @@ writefile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset, if (!os) panic("could not open file %s\n", filename); - // seek to offset - os->seekp(offset); + if (offset != 0) { + // seek to offset + os->seekp(offset); + } // copy out data and write to file char *buf = new char[len]; diff --git a/src/sim/serialize.cc b/src/sim/serialize.cc index 6a71dd2d41..4bb2ab5ff2 100644 --- a/src/sim/serialize.cc +++ b/src/sim/serialize.cc @@ -66,9 +66,9 @@ using namespace std; -int Serializable::ckptMaxCount = 0; -int Serializable::ckptCount = 0; -int Serializable::ckptPrevCount = -1; +int ckptMaxCount = 0; +int ckptCount = 0; +int ckptPrevCount = -1; std::stack Serializable::path; ///////////////////////////// @@ -266,9 +266,9 @@ CheckpointIn::dir() } CheckpointIn::CheckpointIn(const string &cpt_dir, SimObjectResolver &resolver) - : db(new IniFile), objNameResolver(resolver), cptDir(setDir(cpt_dir)) + : db(new IniFile), objNameResolver(resolver), _cptDir(setDir(cpt_dir)) { - string filename = cptDir + "/" + CheckpointIn::baseFilename; + string filename = getCptDir() + "/" + CheckpointIn::baseFilename; if (!db->load(filename)) { fatal("Can't load checkpoint file '%s'\n", filename); } diff --git a/src/sim/serialize.hh b/src/sim/serialize.hh index 92b14a9fff..1f31dd2033 100644 --- a/src/sim/serialize.hh +++ b/src/sim/serialize.hh @@ -72,11 +72,17 @@ class CheckpointIn SimObjectResolver &objNameResolver; + const std::string _cptDir; + public: CheckpointIn(const std::string &cpt_dir, SimObjectResolver &resolver); ~CheckpointIn(); - const std::string cptDir; + /** + * @ingroup api_serialize + * @{ + */ + const std::string getCptDir() { return _cptDir; } bool find(const std::string §ion, const std::string &entry, std::string &value); @@ -84,9 +90,9 @@ class CheckpointIn bool findObj(const std::string §ion, const std::string &entry, SimObject *&value); - bool entryExists(const std::string §ion, const std::string &entry); bool sectionExists(const std::string §ion); + /** @}*/ //end of api_checkout group // The following static functions have to do with checkpoint // creation rather than restoration. This class makes a handy @@ -99,16 +105,28 @@ class CheckpointIn // current directory we're serializing into. static std::string currentDirectory; + public: - // Set the current directory. This function takes care of - // inserting curTick() if there's a '%d' in the argument, and - // appends a '/' if necessary. The final name is returned. + /** + * Set the current directory + * + * This function takes care of inserting curTick() if there's a '%d' in the + * argument, and appends a '/' if necessary. The final name is returned. + * + * @ingroup api_serialize + */ static std::string setDir(const std::string &base_name); - // Export current checkpoint directory name so other objects can - // derive filenames from it (e.g., memory). The return value is - // guaranteed to end in '/' so filenames can be directly appended. - // This function is only valid while a checkpoint is being created. + /** + * Get the current checkout directory name + * + * This function exports the current checkout point directory name so other + * objects can derive filenames from it (e.g., memory). The return value is + * guaranteed to end in '/' so filenames can be directly appended. This + * function is only valid while a checkpoint is being created. + * + * @ingroup api_serialize + */ static std::string dir(); // Filename for base checkpoint file within directory. @@ -167,6 +185,10 @@ class Serializable */ class ScopedCheckpointSection { public: + /** + * @ingroup api_serialize + * @{ + */ template ScopedCheckpointSection(CP &cp, const char *name) { pushName(name); @@ -178,6 +200,7 @@ class Serializable pushName(name.c_str()); nameOut(cp); } + /** @}*/ //end of api_serialize group ~ScopedCheckpointSection(); @@ -195,6 +218,9 @@ class Serializable }; public: + /** + * @ingroup api_serialize + */ Serializable(); virtual ~Serializable(); @@ -204,6 +230,8 @@ class Serializable * Output an object's state into the current checkpoint section. * * @param cp Checkpoint state + * + * @ingroup api_serialize */ virtual void serialize(CheckpointOut &cp) const = 0; @@ -213,6 +241,8 @@ class Serializable * Read an object's state from the current checkpoint section. * * @param cp Checkpoint state + * + * @ingroup api_serialize */ virtual void unserialize(CheckpointIn &cp) = 0; @@ -226,9 +256,14 @@ class Serializable * * @param cp Checkpoint state * @param name Name to append to the active path + * + * @ingroup api_serialize */ void serializeSection(CheckpointOut &cp, const char *name) const; + /** + * @ingroup api_serialize + */ void serializeSection(CheckpointOut &cp, const std::string &name) const { serializeSection(cp, name.c_str()); } @@ -242,37 +277,54 @@ class Serializable * * @param cp Checkpoint state * @param name Name to append to the active path + * + * @ingroup api_serialize */ void unserializeSection(CheckpointIn &cp, const char *name); + /** + * @ingroup api_serialize + */ void unserializeSection(CheckpointIn &cp, const std::string &name) { unserializeSection(cp, name.c_str()); } - /** Get the fully-qualified name of the active section */ + /** + * Gets the fully-qualified name of the active section + * + * @ingroup api_serialize + */ static const std::string ¤tSection(); - static int ckptCount; - static int ckptMaxCount; - static int ckptPrevCount; + /** + * @ingroup api_serialize + */ static void serializeAll(const std::string &cpt_dir); + + /** + * @ingroup api_serialize + */ static void unserializeGlobals(CheckpointIn &cp); private: static std::stack path; }; -// -// The base implementations use to_number for parsing and '<<' for -// displaying, suitable for integer types. -// +/** + * @ingroup api_serialize + */ template bool parseParam(const std::string &s, T &value) { + // The base implementations use to_number for parsing and '<<' for + // displaying, suitable for integer types. return to_number(s, value); } +/** + * @ingroup api_serialize + */ template void showParam(CheckpointOut &os, const T &value) @@ -280,6 +332,9 @@ showParam(CheckpointOut &os, const T &value) os << value; } +/** + * @ingroup api_serialize + */ template bool parseParam(const std::string &s, BitUnionType &value) @@ -291,6 +346,9 @@ parseParam(const std::string &s, BitUnionType &value) return res; } +/** + * @ingroup api_serialize + */ template void showParam(CheckpointOut &os, const BitUnionType &value) @@ -304,14 +362,20 @@ showParam(CheckpointOut &os, const BitUnionType &value) static_cast(storage) : storage); } -// Treat 8-bit ints (chars) as ints on output, not as chars +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const char &value) { + // Treat 8-bit ints (chars) as ints on output, not as chars os << (int)value; } +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const signed char &value) @@ -319,6 +383,9 @@ showParam(CheckpointOut &os, const signed char &value) os << (int)value; } +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const unsigned char &value) @@ -326,6 +393,9 @@ showParam(CheckpointOut &os, const unsigned char &value) os << (unsigned int)value; } +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, float &value) @@ -333,6 +403,9 @@ parseParam(const std::string &s, float &value) return to_number(s, value); } +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, double &value) @@ -340,6 +413,9 @@ parseParam(const std::string &s, double &value) return to_number(s, value); } +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, bool &value) @@ -347,23 +423,32 @@ parseParam(const std::string &s, bool &value) return to_bool(s, value); } -// Display bools as strings +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const bool &value) { + // Display bools as strings os << (value ? "true" : "false"); } -// String requires no processing to speak of +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, std::string &value) { + // String requires no processing to speak of value = s; return true; } +/** + * @ingroup api_serialize + */ template void paramOut(CheckpointOut &os, const std::string &name, const T ¶m) @@ -373,6 +458,9 @@ paramOut(CheckpointOut &os, const std::string &name, const T ¶m) os << "\n"; } +/** + * @ingroup api_serialize + */ template void paramIn(CheckpointIn &cp, const std::string &name, T ¶m) @@ -384,6 +472,9 @@ paramIn(CheckpointIn &cp, const std::string &name, T ¶m) } } +/** + * @ingroup api_serialize + */ template bool optParamIn(CheckpointIn &cp, const std::string &name, @@ -400,6 +491,9 @@ optParamIn(CheckpointIn &cp, const std::string &name, } } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -416,6 +510,9 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -435,6 +532,9 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -454,6 +554,9 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -477,6 +580,8 @@ arrayParamOut(CheckpointOut &os, const std::string &name, * @param name Name of the container. * @param param The array container. * @param size The expected number of entries to be extracted. + * + * @ingroup api_serialize */ template void @@ -523,6 +628,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, } } +/** + * @ingroup api_serialize + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, std::vector ¶m) @@ -565,6 +673,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, std::vector ¶m) } } +/** + * @ingroup api_serialize + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, std::list ¶m) @@ -595,6 +706,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, std::list ¶m) } } +/** + * @ingroup api_serialize + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, std::set ¶m) @@ -628,6 +742,10 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, std::set ¶m) void debug_serialize(const std::string &cpt_dir); + +/** + * @ingroup api_serialize + */ void objParamIn(CheckpointIn &cp, const std::string &name, SimObject * ¶m); @@ -635,14 +753,43 @@ objParamIn(CheckpointIn &cp, const std::string &name, SimObject * ¶m); // These macros are streamlined to use in serialize/unserialize // functions. It's assumed that serialize() has a parameter 'os' for // the ostream, and unserialize() has parameters 'cp' and 'section'. + + +/** + * \def SERIALIZE_SCALER(scaler) + * + * @ingroup api_serialize + */ #define SERIALIZE_SCALAR(scalar) paramOut(cp, #scalar, scalar) +/** + * \def UNSERIALIZE_SCALER(scalar) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_SCALAR(scalar) paramIn(cp, #scalar, scalar) + +/** + * \def UNSERIALIZE_OPT_SCALAR(scalar) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_OPT_SCALAR(scalar) optParamIn(cp, #scalar, scalar) // ENUMs are like SCALARs, but we cast them to ints on the way out + +/** + * \def SERIALIZE_ENUM(scalar) + * + * @ingroup api_serialize + */ #define SERIALIZE_ENUM(scalar) paramOut(cp, #scalar, (int)scalar) +/** + * \def UNSERIALIZE_ENUM(scaler) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_ENUM(scalar) \ do { \ int tmp; \ @@ -650,31 +797,82 @@ objParamIn(CheckpointIn &cp, const std::string &name, SimObject * ¶m); scalar = static_cast(tmp); \ } while (0) +/** + * \def SERIALIZE_ARRAY(member, size) + * + * @ingroup api_serialize + */ #define SERIALIZE_ARRAY(member, size) \ arrayParamOut(cp, #member, member, size) +/** + * \def UNSERIALIZE_ARRAY(member, size) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_ARRAY(member, size) \ arrayParamIn(cp, #member, member, size) +/** + * \def SERIALIZE_CONTAINER(member) + * + * @ingroup api_serialize + */ #define SERIALIZE_CONTAINER(member) \ arrayParamOut(cp, #member, member) +/** + * \def UNSERIALIZE_CONTAINER(member) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_CONTAINER(member) \ arrayParamIn(cp, #member, member) +/** + * \def SERIALIZE_EVENT(event) + * + * @ingroup api_serialize + */ #define SERIALIZE_EVENT(event) event.serializeSection(cp, #event); +/** + * \def UNSERIALIZE_EVENT(event) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_EVENT(event) \ do { \ event.unserializeSection(cp, #event); \ eventQueue()->checkpointReschedule(&event); \ } while (0) +/** + * \def SERIALIZE_OBJ(obj) + * + * @ingroup api_serialize + */ #define SERIALIZE_OBJ(obj) obj.serializeSection(cp, #obj) + +/** + * \def UNSERIALIZE_OBJ(obj) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_OBJ(obj) obj.unserializeSection(cp, #obj) +/** + * \def SERIALIZE_OBJPTR(objptr) + * + * @ingroup api_serialize + */ #define SERIALIZE_OBJPTR(objptr) paramOut(cp, #objptr, (objptr)->name()) +/** + * \def UNSERIALIZE_OBJPTR(objptr) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_OBJPTR(objptr) \ do { \ SimObject *sptr; \ diff --git a/src/sim/sim_object.hh b/src/sim/sim_object.hh index 05c1b3e0ac..de89fbff22 100644 --- a/src/sim/sim_object.hh +++ b/src/sim/sim_object.hh @@ -103,17 +103,29 @@ class SimObject : public EventManager, public Serializable, public Drainable, ProbeManager *probeManager; protected: - /** Cached copy of the object parameters. */ + /** + * Cached copy of the object parameters. + * + * @ingroup api_simobject + */ const SimObjectParams *_params; public: typedef SimObjectParams Params; + /** + * @ingroup api_simobject + * @{ + */ const Params *params() const { return _params; } SimObject(const Params *_params); + /** @}*/ //end of the api_simobject group virtual ~SimObject(); public: + /** + * @ingroup api_simobject + */ virtual const std::string name() const { return params()->name; } /** @@ -121,6 +133,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * all ports are connected. Initializations that are independent * of unserialization but rely on a fully instantiated and * connected SimObject graph should be done here. + * + * @ingroup api_simobject */ virtual void init(); @@ -134,6 +148,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * found. * * @param cp Checkpoint to restore the state from. + * + * @ingroup api_serialize */ virtual void loadState(CheckpointIn &cp); @@ -141,21 +157,29 @@ class SimObject : public EventManager, public Serializable, public Drainable, * initState() is called on each SimObject when *not* restoring * from a checkpoint. This provides a hook for state * initializations that are only required for a "cold start". + * + * @ingroup api_serialize */ virtual void initState(); /** * Register probe points for this object. + * + * @ingroup api_simobject */ virtual void regProbePoints(); /** * Register probe listeners for this object. + * + * @ingroup api_simobject */ virtual void regProbeListeners(); /** * Get the probe manager for this object. + * + * @ingroup api_simobject */ ProbeManager *getProbeManager(); @@ -167,6 +191,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * @param idx Index in the case of a VectorPort * * @return A reference to the given port + * + * @ingroup api_simobject */ virtual Port &getPort(const std::string &if_name, PortID idx=InvalidPortID); @@ -176,6 +202,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * All state is initialized (including unserialized state, if any, * such as the curTick() value), so this is the appropriate place to * schedule initial event(s) for objects that need them. + * + * @ingroup api_simobject */ virtual void startup(); @@ -192,6 +220,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * written all its dirty data back to memory. This method is * typically used to prepare a system with caches for * checkpointing. + * + * @ingroup api_simobject */ virtual void memWriteback() {}; @@ -205,6 +235,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * * @warn This does not cause any dirty state to be written * back to memory. + * + * @ingroup api_simobject */ virtual void memInvalidate() {}; @@ -226,6 +258,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * Find the SimObject with the given name and return a pointer to * it. Primarily used for interactive debugging. Argument is * char* rather than std::string to make it callable from gdb. + * + * @ingroup api_simobject */ static SimObject *find(const char *name); }; @@ -241,7 +275,11 @@ class SimObjectResolver public: virtual ~SimObjectResolver() { } - // Find a SimObject given a full path name + /** + * Find a SimObject given a full path name + * + * @ingroup api_serialize + */ virtual SimObject *resolveSimObject(const std::string &name) = 0; }; diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh index 247a98ca0f..5b966cd787 100644 --- a/src/sim/syscall_emul.hh +++ b/src/sim/syscall_emul.hh @@ -1181,7 +1181,6 @@ mremapFunc(SyscallDesc *desc, ThreadContext *tc, warn("returning %08p as start\n", new_start); p->memState->remapRegion(start, new_start, old_length); - p->memState->mapRegion(new_start, new_length, "remapped"); return new_start; } } diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh index c9ca161cf1..31cc35e8e9 100644 --- a/src/systemc/core/scheduler.hh +++ b/src/systemc/core/scheduler.hh @@ -36,7 +36,7 @@ #include "base/logging.hh" #include "sim/core.hh" -#include "sim/eventq.hh" +#include "sim/eventq_impl.hh" #include "systemc/core/channel.hh" #include "systemc/core/list.hh" #include "systemc/core/process.hh" diff --git a/tests/configs/base_config.py b/tests/configs/base_config.py index 0f7993875b..b124a132b0 100644 --- a/tests/configs/base_config.py +++ b/tests/configs/base_config.py @@ -43,9 +43,11 @@ from common import FSConfig from common import Options from common.Caches import * from ruby import Ruby +from six import add_metaclass _have_kvm_support = 'BaseKvmCPU' in globals() +@add_metaclass(ABCMeta) class BaseSystem(object): """Base system builder. @@ -55,8 +57,6 @@ class BaseSystem(object): the initialization process. """ - __metaclass__ = ABCMeta - def __init__(self, mem_mode='timing', mem_class=SimpleMemory, cpu_class=TimingSimpleCPU, num_cpus=1, num_threads=1, checker=False, mem_size=None, use_ruby=False): diff --git a/tests/gem5/.testignore b/tests/gem5/.testignore index cc61aa6133..b8cfc7f508 100644 --- a/tests/gem5/.testignore +++ b/tests/gem5/.testignore @@ -20,12 +20,7 @@ test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-x86_64-debug test-insttest-rv64i-linux-DerivO3CPU-RISCV-x86_64-debug test-insttest-linux-AtomicSimpleCPU-SPARC-x86_64-debug test-insttest-linux-TimingSimpleCPU-SPARC-x86_64-debug -test-insttest-rv64a-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64c-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64d-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64f-linux-MinorCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64m-linux-MinorCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-DerivO3CPU-RISCV-x86_64-fast diff --git a/tests/gem5/__init__.py b/tests/gem5/__init__.py index 614165a482..0955469d08 100644 --- a/tests/gem5/__init__.py +++ b/tests/gem5/__init__.py @@ -24,8 +24,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import suite -import fixture +import testlib.suite +import testlib.fixture -from suite import * -from fixture import * +from .suite import * +from .fixture import * diff --git a/tests/gem5/cpu_tests/test.py b/tests/gem5/cpu_tests/test.py index 339d15aae0..a21c4b9656 100644 --- a/tests/gem5/cpu_tests/test.py +++ b/tests/gem5/cpu_tests/test.py @@ -70,11 +70,11 @@ for isa in valid_isas: binary = joinpath(workload_binary.path, workload) for cpu in valid_isas[isa]: - gem5_verify_config( + gem5_verify_config( name='cpu_test_{}_{}'.format(cpu,workload), verifiers=verifiers, config=joinpath(getcwd(), 'run.py'), config_args=['--cpu={}'.format(cpu), binary], valid_isas=(isa.upper(),), fixtures=[workload_binary] - ) + ) diff --git a/tests/gem5/fixture.py b/tests/gem5/fixture.py index fc31b30c67..f28201b046 100644 --- a/tests/gem5/fixture.py +++ b/tests/gem5/fixture.py @@ -42,11 +42,11 @@ import shutil import sys import socket import threading -import urllib -import urllib2 + +from six.moves import urllib from testlib.fixture import Fixture -from testlib.config import config, constants +from testlib.configuration import config, constants from testlib.helper import log_call, cacheresult, joinpath, absdirpath import testlib.log as log from testlib.state import Result @@ -271,15 +271,16 @@ class DownloadedProgram(UniqueFixture): except OSError as e: if e.errno != errno.EEXIST: raise - urllib.urlretrieve(self.url, self.filename) + urllib.request.urlretrieve(self.url, self.filename) def _getremotetime(self): import datetime, time import _strptime # Needed for python threading bug - u = urllib2.urlopen(self.url, timeout=10) + u = urllib.request.urlopen(self.url, timeout=10) + return time.mktime(datetime.datetime.strptime( \ - u.info().getheaders("Last-Modified")[0], + u.info()["Last-Modified"], "%a, %d %b %Y %X GMT").timetuple()) def _setup(self, testitem): @@ -289,7 +290,7 @@ class DownloadedProgram(UniqueFixture): else: try: t = self._getremotetime() - except (urllib2.URLError, socket.timeout): + except (urllib.error.URLError, socket.timeout): # Problem checking the server, use the old files. log.test_log.debug("Could not contact server. Binaries may be old.") return @@ -315,7 +316,7 @@ class DownloadedArchive(DownloadedProgram): else: try: t = self._getremotetime() - except (urllib2.URLError, socket.timeout): + except (urllib.error.URLError, socket.timeout): # Problem checking the server, use the old files. log.test_log.debug("Could not contact server. " "Binaries may be old.") diff --git a/tests/gem5/memory/memtest-run.py b/tests/gem5/memory/memtest-run.py index 74f4543d64..0cae42d873 100644 --- a/tests/gem5/memory/memtest-run.py +++ b/tests/gem5/memory/memtest-run.py @@ -32,7 +32,7 @@ from common.Caches import * #MAX CORES IS 8 with the fals sharing method nb_cores = 8 cpus = [MemTest(max_loads = 1e5, progress_interval = 1e4) - for i in xrange(nb_cores) ] + for i in range(nb_cores) ] # system simulated system = System(cpu = cpus, diff --git a/tests/gem5/memory/test.py b/tests/gem5/memory/test.py index 5b6294e466..beed08405a 100644 --- a/tests/gem5/memory/test.py +++ b/tests/gem5/memory/test.py @@ -28,6 +28,8 @@ Test file for simple memory test TODO: Add stats checking ''' +import six + from testlib import * gem5_verify_config( @@ -48,7 +50,7 @@ simple_mem_params = [ for name, params in simple_mem_params: - args = ['--' + key + '=' + val for key,val in params.iteritems()] + args = ['--' + key + '=' + val for key,val in six.iteritems(params)] gem5_verify_config( name='simple_mem_' + name, diff --git a/tests/gem5/suite.py b/tests/gem5/suite.py index 25e652e840..4cf0f81a25 100644 --- a/tests/gem5/suite.py +++ b/tests/gem5/suite.py @@ -41,12 +41,13 @@ import copy import subprocess import sys -from testlib.test import TestFunction +from testlib.test_util import TestFunction from testlib.suite import TestSuite from testlib.helper import log_call -from testlib.config import constants, config -from fixture import TempdirFixture, Gem5Fixture, VariableFixture -import verifier +from testlib.configuration import constants, config +from .fixture import TempdirFixture, Gem5Fixture, VariableFixture + +from . import verifier def gem5_verify_config(name, config, @@ -190,6 +191,7 @@ def _create_test_run_gem5(config, config_args, gem5_args): command.append(config) # Config_args should set up the program args. command.extend(config_args) - returncode.value = log_call(params.log, command, stderr=sys.stderr) + returncode.value = log_call(params.log, command, stdout=sys.stdout, + stderr=sys.stderr) return test_run_gem5 diff --git a/tests/gem5/verifier.py b/tests/gem5/verifier.py index c955c407df..815b9bbafb 100644 --- a/tests/gem5/verifier.py +++ b/tests/gem5/verifier.py @@ -29,8 +29,8 @@ Built in test cases that verify particular details about a gem5 run. ''' import re -from testlib import test -from testlib.config import constants +from testlib import test_util as test +from testlib.configuration import constants from testlib.helper import joinpath, diff_out_file class Verifier(object): diff --git a/tests/gem5/x86-boot-tests/system/system.py b/tests/gem5/x86-boot-tests/system/system.py index c55664e97f..bffd08a725 100755 --- a/tests/gem5/x86-boot-tests/system/system.py +++ b/tests/gem5/x86-boot-tests/system/system.py @@ -118,7 +118,8 @@ class MySystem(System): else: m5.fatal("No CPU type {}".format(cpu_type)) - map(lambda c: c.createThreads(), self.cpu) + for c in self.cpu: + c.createThreads() def setDiskImages(self, img_path_1, img_path_2): disk0 = CowDisk(img_path_1) diff --git a/tests/main.py b/tests/main.py index 5cd68e91d1..3287ef14c4 100755 --- a/tests/main.py +++ b/tests/main.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python ''' The main source for testlib. Ties together the default test runners and loaders. @@ -10,6 +10,8 @@ from __future__ import print_function import sys import os +os.environ["PYTHONUNBUFFERED"] = "1" + base_dir = os.path.dirname(os.path.abspath(__file__)) ext_path = os.path.join(base_dir, os.pardir, 'ext') @@ -17,7 +19,7 @@ sys.path.insert(0, base_dir) sys.path.insert(0, ext_path) import testlib.main as testlib -import testlib.config as config +import testlib.configuration as config import testlib.helper as helper config.basedir = helper.absdirpath(__file__) diff --git a/tests/testing/__init__.py b/tests/testing/__init__.py index 4f97291d5c..5dcc684da7 100644 --- a/tests/testing/__init__.py +++ b/tests/testing/__init__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved diff --git a/tests/testing/helpers.py b/tests/testing/helpers.py index 6fc1e28a08..f46915c8f8 100755 --- a/tests/testing/helpers.py +++ b/tests/testing/helpers.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved diff --git a/tests/testing/results.py b/tests/testing/results.py index 42ec24524e..eb88d4c238 100644 --- a/tests/testing/results.py +++ b/tests/testing/results.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved @@ -40,6 +40,7 @@ from __future__ import print_function from abc import ABCMeta, abstractmethod import inspect import pickle +from six import add_metaclass import string import sys @@ -141,8 +142,8 @@ class TestResult(object): def __nonzero__(self): return all([ r for r in self.results ]) +@add_metaclass(ABCMeta) class ResultFormatter(object): - __metaclass__ = ABCMeta def __init__(self, fout=sys.stdout, verbose=False): self.verbose = verbose diff --git a/tests/testing/tests.py b/tests/testing/tests.py index 29bfa78b66..042180d796 100755 --- a/tests/testing/tests.py +++ b/tests/testing/tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016-2017 ARM Limited # All rights reserved @@ -38,9 +38,15 @@ from abc import ABCMeta, abstractmethod import os from collections import namedtuple -from .units import * -from .helpers import FileIgnoreList -from .results import TestResult + +from six import add_metaclass + +import sys +sys.path.append(os.path.dirname(__file__)) + +from units import * +from helpers import FileIgnoreList +from results import TestResult import shutil _test_base = os.path.join(os.path.dirname(__file__), "..") @@ -172,6 +178,7 @@ def get_default_protocol(arch): all_categories = ("quick", "long") all_modes = ("fs", "se") +@add_metaclass(ABCMeta) class Test(object): """Test case base class. @@ -182,8 +189,6 @@ class Test(object): """ - __metaclass__ = ABCMeta - def __init__(self, name): self.test_name = name diff --git a/tests/testing/units.py b/tests/testing/units.py index 9c9c1e5bf4..d1fa6b227c 100644 --- a/tests/testing/units.py +++ b/tests/testing/units.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved @@ -41,15 +41,18 @@ import difflib import functools import os import re +from six import add_metaclass import subprocess import sys import traceback -from .results import UnitResult -from .helpers import * +sys.path.append(os.path.dirname(__file__)) +from results import UnitResult +from helpers import * _test_base = os.path.join(os.path.dirname(__file__), "..") +@add_metaclass(ABCMeta) class TestUnit(object): """Base class for all test units. @@ -64,8 +67,6 @@ class TestUnit(object): """ - __metaclass__ = ABCMeta - def __init__(self, name, ref_dir, test_dir, skip=False): self.name = name self.ref_dir = ref_dir diff --git a/tests/tests.py b/tests/tests.py index b23cb5a1df..df46b414cc 100755 --- a/tests/tests.py +++ b/tests/tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved diff --git a/util/cpt_upgrader.py b/util/cpt_upgrader.py index 4ac7dbf548..96dcaf6fd4 100755 --- a/util/cpt_upgrader.py +++ b/util/cpt_upgrader.py @@ -1,6 +1,6 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python -# Copyright (c) 2012-2013,2015-2016 ARM Limited +# Copyright (c) 2012-2013,2015-2016, 2020 ARM Limited # All rights reserved # # The license below extends only to copyright in the software and shall @@ -68,8 +68,9 @@ # upgrader. This can be especially valuable when maintaining private # upgraders in private branches. +from __future__ import print_function -import ConfigParser +from six.moves import configparser import glob, types, sys, os import os.path as osp @@ -79,8 +80,8 @@ def verboseprint(*args): if not verbose_print: return for arg in args: - print arg, - print + print(arg, end=' ') + print("\n") class Upgrader: tag_set = set() @@ -89,7 +90,7 @@ class Upgrader: legacy = {} def __init__(self, filename): self.filename = filename - execfile(filename, {}, self.__dict__) + exec(open(filename).read(), {}, self.__dict__) if not hasattr(self, 'tag'): self.tag = osp.basename(filename)[:-3] @@ -99,7 +100,7 @@ class Upgrader: self.depends = [self.depends] if not isinstance(self.depends, list): - print "Error: 'depends' for %s is the wrong type" % self.tag + print("Error: 'depends' for {} is the wrong type".format(self.tag)) sys.exit(1) if hasattr(self, 'fwd_depends'): @@ -109,23 +110,25 @@ class Upgrader: self.fwd_depends = [] if not isinstance(self.fwd_depends, list): - print "Error: 'fwd_depends' for %s is the wrong type" % self.tag + print("Error: 'fwd_depends' for {} is the wrong type".format( + self.tag)) sys.exit(1) if hasattr(self, 'upgrader'): if not isinstance(self.upgrader, types.FunctionType): - print "Error: 'upgrader' for %s is %s, not function" \ - % (self.tag, type(self)) + print("Error: 'upgrader' for {} is {}, not function".format( + self.tag, type(self))) sys.exit(1) Upgrader.tag_set.add(self.tag) elif hasattr(self, 'downgrader'): if not isinstance(self.downgrader, types.FunctionType): - print "Error: 'downgrader' for %s is %s, not function" \ - % (self.tag, type(self)) + print("Error: 'downgrader' for {} is {}, not function".format( + self.tag, type(self))) sys.exit(1) Upgrader.untag_set.add(self.tag) else: - print "Error: no upgrader or downgrader method for", self.tag + print("Error: no upgrader or downgrader method for".format( + self.tag)) sys.exit(1) if hasattr(self, 'legacy_version'): @@ -170,14 +173,14 @@ class Upgrader: for tag, upg in Upgrader.by_tag.items(): for fd in upg.fwd_depends: if fd not in Upgrader.by_tag: - print "Error: '%s' cannot (forward) depend on "\ - "nonexistent tag '%s'" % (fd, tag) + print("Error: '{}' cannot (forward) depend on " + "nonexistent tag '{}'".format(fd, tag)) sys.exit(1) Upgrader.by_tag[fd].depends.append(tag) for dep in upg.depends: if dep not in Upgrader.by_tag: - print "Error: '%s' cannot depend on "\ - "nonexistent tag '%s'" % (tag, dep) + print("Error: '{}' cannot depend on " + "nonexistent tag '{}'".format(tag, dep)) sys.exit(1) def process_file(path, **kwargs): @@ -191,7 +194,7 @@ def process_file(path, **kwargs): import shutil shutil.copyfile(path, path + '.bak') - cpt = ConfigParser.SafeConfigParser() + cpt = configparser.SafeConfigParser() # gem5 is case sensitive with paramaters cpt.optionxform = str @@ -219,7 +222,7 @@ def process_file(path, **kwargs): elif cpt.has_option('Globals','version_tags'): tags = set((''.join(cpt.get('Globals','version_tags'))).split()) else: - print "fatal: no version information in checkpoint" + print("fatal: no version information in checkpoint") exit(1) verboseprint("has tags", ' '.join(tags)) @@ -228,8 +231,8 @@ def process_file(path, **kwargs): # simulator support for its changes. unknown_tags = tags - (Upgrader.tag_set | Upgrader.untag_set) if unknown_tags: - print "warning: upgrade script does not recognize the following "\ - "tags in this checkpoint:", ' '.join(unknown_tags) + print("warning: upgrade script does not recognize the following " + "tags in this checkpoint:", ' '.join(unknown_tags)) # Apply migrations for tags not in checkpoint and tags present for which # downgraders are present, respecting dependences @@ -237,8 +240,8 @@ def process_file(path, **kwargs): while to_apply: ready = set([ t for t in to_apply if Upgrader.get(t).ready(tags) ]) if not ready: - print "could not apply these upgrades:", ' '.join(to_apply) - print "update dependences impossible to resolve; aborting" + print("could not apply these upgrades:", ' '.join(to_apply)) + print("update dependences impossible to resolve; aborting") exit(1) for tag in ready: @@ -278,14 +281,14 @@ if __name__ == '__main__': Upgrader.load_all() if options.get_cc_file: - print "// this file is auto-generated by util/cpt_upgrader.py" - print "#include " - print "#include " + print("// this file is auto-generated by util/cpt_upgrader.py") + print("#include ") + print("#include ") print - print "std::set version_tags = {" + print("std::set version_tags = {") for tag in Upgrader.tag_set: - print " \"%s\"," % tag - print "};" + print(" \"{}\",".format(tag)) + print("};") exit(0) elif len(args) != 1: parser.error("You must specify a checkpoint file to modify or a "\ @@ -312,8 +315,8 @@ if __name__ == '__main__': elif osp.isfile(cpt_file): process_file(cpt_file, **vars(options)) else: - print "Error: checkpoint file not found at in %s " % path, - print "and recurse not specified" + print("Error: checkpoint file not found in {} ".format(path)) + print("and recurse not specified") sys.exit(1) sys.exit(0) diff --git a/util/cpt_upgraders/arm-hdlcd-upgrade.py b/util/cpt_upgraders/arm-hdlcd-upgrade.py index ce4b073803..dbddc567ff 100644 --- a/util/cpt_upgraders/arm-hdlcd-upgrade.py +++ b/util/cpt_upgraders/arm-hdlcd-upgrade.py @@ -94,8 +94,8 @@ def upgrader(cpt): cpt.set(sec_dma, "buffer", "") - print "Warning: Assuming that the HDLCD pixel clock and global frequency " \ - "are still using their default values." + print("Warning: Assuming that the HDLCD pixel clock and global frequency " + "are still using their default values.") sec_osc = "system.realview.realview_io.osc_pxl" global_tick = 1E12 pxl_freq = 137E6 diff --git a/util/cpt_upgraders/arm-miscreg-teehbr.py b/util/cpt_upgraders/arm-miscreg-teehbr.py index 70359ddfad..f0174d5985 100644 --- a/util/cpt_upgraders/arm-miscreg-teehbr.py +++ b/util/cpt_upgraders/arm-miscreg-teehbr.py @@ -7,7 +7,7 @@ def upgrader(cpt): if re.search('.*sys.*\.cpu.*\.isa$', sec): mr = cpt.get(sec, 'miscRegs').split() if len(mr) == 161: - print "MISCREG_TEEHBR already seems to be inserted." + print("MISCREG_TEEHBR already seems to be inserted.") else: mr.insert(51,0); # Add dummy value for MISCREG_TEEHBR cpt.set(sec, 'miscRegs', ' '.join(str(x) for x in mr)) diff --git a/util/cpt_upgraders/arm-sve.py b/util/cpt_upgraders/arm-sve.py index 53fab7fd98..aa66045c88 100644 --- a/util/cpt_upgraders/arm-sve.py +++ b/util/cpt_upgraders/arm-sve.py @@ -23,7 +23,8 @@ def upgrader(cpt): # Updating SVE misc registers (dummy values) mr = cpt.get(sec, 'miscRegs').split() if len(mr) == 820: - print "MISCREG_SVE registers already seems to be inserted." + print("MISCREG_SVE registers already seems " + "to be inserted.") else: # Replace MISCREG_FREESLOT_1 with MISCREG_ID_AA64ZFR0_EL1 mr[-1] = 0; diff --git a/util/cpt_upgraders/armv8.py b/util/cpt_upgraders/armv8.py index 4e4e2a3766..1bb4c2bdd8 100644 --- a/util/cpt_upgraders/armv8.py +++ b/util/cpt_upgraders/armv8.py @@ -3,10 +3,10 @@ def upgrader(cpt): if cpt.get('root','isa') != 'arm': return import re - print "Warning: The size of the FP register file has changed. "\ - "To get similar results you need to adjust the number of "\ - "physical registers in the CPU you're restoring into by "\ - "NNNN." + print("Warning: The size of the FP register file has changed. " + "To get similar results you need to adjust the number of " + "physical registers in the CPU you're restoring into by " + "NNNN.") # Find the CPU context's and upgrade their registers for sec in cpt.sections(): re_xc_match = re.match('^.*?sys.*?\.cpu(\d+)*\.xc\.*', sec) diff --git a/util/cpt_upgraders/x86-add-tlb.py b/util/cpt_upgraders/x86-add-tlb.py index bd07a100d2..db465d512c 100644 --- a/util/cpt_upgraders/x86-add-tlb.py +++ b/util/cpt_upgraders/x86-add-tlb.py @@ -12,6 +12,6 @@ def upgrader(cpt): cpt.set(sec, '_size', '0') cpt.set(sec, 'lruSeq', '0') else: - print "ISA is not x86" + print("ISA is not x86") legacy_version = 6 diff --git a/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile b/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile index 95923f5d9a..95511a8a83 100644 --- a/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile +++ b/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile @@ -30,5 +30,5 @@ RUN apt -y update RUN apt -y upgrade RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \ libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ - python-dev python python-pip doxygen -RUN pip install six + python-dev python python-six doxygen libboost-all-dev libhdf5-serial-dev \ + python-pydot libpng-dev diff --git a/util/dockerfiles/python3/Dockerfile b/util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile similarity index 90% rename from util/dockerfiles/python3/Dockerfile rename to util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile index 2529f364cf..814ef75d6f 100644 --- a/util/dockerfiles/python3/Dockerfile +++ b/util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile @@ -24,14 +24,12 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -FROM ubuntu:18.04 +FROM ubuntu:20.04 +ENV DEBIAN_FRONTEND=noninteractive RUN apt -y update RUN apt -y upgrade RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \ libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ - python-dev python python3-dev python3.6 python-six python3-venv - -ENV VIRTUAL_ENV "/venv" -RUN python3 -m venv $VIRTUAL_ENV -ENV PATH "$VIRTUAL_ENV/bin:$PATH" + python3-dev python3-six python-is-python3 doxygen libboost-all-dev \ + libhdf5-serial-dev python3-pydot libpng-dev diff --git a/util/git-commit-msg.py b/util/git-commit-msg.py index 23270bcadf..92e8100be3 100755 --- a/util/git-commit-msg.py +++ b/util/git-commit-msg.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2019 Inria # All rights reserved diff --git a/util/git-pre-commit.py b/util/git-pre-commit.py index 15109498ea..b6d124abba 100755 --- a/util/git-pre-commit.py +++ b/util/git-pre-commit.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved @@ -35,6 +35,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +from __future__ import print_function + from tempfile import TemporaryFile import os import subprocess @@ -66,7 +68,7 @@ staged_mismatch = set() for status, fname in git.status(filter="MA", cached=True): if args.verbose: - print "Checking %s..." % fname + print("Checking {}...".format(fname)) if check_ignores(fname): continue if status == "M": @@ -77,7 +79,7 @@ for status, fname in git.status(filter="MA", cached=True): # Show they appropriate object and dump it to a file status = git.file_from_index(fname) f = TemporaryFile() - f.write(status) + f.write(status.encode()) verifiers = [ v(ui, opts, base=repo_base) for v in all_verifiers ] for v in verifiers: @@ -93,22 +95,25 @@ for status, fname in git.status(filter="MA", cached=True): if failing_files: if len(failing_files) > len(staged_mismatch): - print >> sys.stderr - print >> sys.stderr, "Style checker failed for the following files:" + print("\n", file=sys.stderr) + print("Style checker failed for the following files:", file=sys.stderr) for f in failing_files: if f not in staged_mismatch: - print >> sys.stderr, "\t%s" % f - print >> sys.stderr - print >> sys.stderr, \ - "Please run the style checker manually to fix the offending files.\n" \ - "To check your modifications, run: util/style.py -m" + print("\t{}".format(f), file=sys.stderr) + print("\n", file=sys.stderr) + print( + "Please run the style checker manually to fix " + "the offending files.\n" + "To check your modifications, run: util/style.py -m", + file=sys.stderr) - print >> sys.stderr + print("\n", file=sys.stderr) if staged_mismatch: - print >> sys.stderr, \ - "It looks like you have forgotten to stage your fixes for commit in\n"\ - "the following files: " + print( + "It looks like you have forgotten to stage your " + "fixes for commit in\n" + "the following files: ", file=sys.stderr) for f in staged_mismatch: - print >> sys.stderr, "\t%s" % f - print >> sys.stderr, "Please `git --add' them" + print("\t%s".format(f), file=sys.stderr) + print("Please `git --add' them", file=sys.stderr) sys.exit(1) diff --git a/util/style/file_types.py b/util/style/file_types.py index 4ffa7e0281..40d0c6f28d 100644 --- a/util/style/file_types.py +++ b/util/style/file_types.py @@ -77,7 +77,7 @@ hash_bang = ( ) # the list of all languages that we detect -all_languages = frozenset(lang_types.itervalues()) +all_languages = frozenset(lang_types.values()) all_languages |= frozenset(lang for start,lang in lang_prefixes) all_languages |= frozenset(lang for start,lang in hash_bang) @@ -104,7 +104,7 @@ def lang_type(filename, firstline=None, openok=True): # if a first line was not provided but the file is ok to open, # grab the first line of the file. if firstline is None and openok: - handle = file(filename, 'r') + handle = open(filename, 'r') firstline = handle.readline() handle.close() @@ -173,7 +173,7 @@ def update_file(dst, src, language, mutator): mode = 'r+' else: mode = 'r' - src = file(src, mode) + src = open(src, mode) orig_lines = [] @@ -196,7 +196,7 @@ def update_file(dst, src, language, mutator): elif isinstance(dst, str): # if we're not updating in place and a destination file name # was provided, create a file object - dst = file(dst, 'w') + dst = open(dst, 'w') for line in new_lines: dst.write(line) diff --git a/util/style/region.py b/util/style/region.py index f4e12c52ad..ce00680357 100644 --- a/util/style/region.py +++ b/util/style/region.py @@ -57,8 +57,8 @@ class Region(tuple): args = tuple(arg) if len(args) != 2: - raise AttributeError, \ - "Only one or two arguments allowed, %d provided" % (alen, ) + raise(AttributeError, \ + "Only one or two arguments allowed, %d provided" % (alen, )) return tuple.__new__(cls, args) @@ -239,13 +239,13 @@ if __name__ == '__main__': n = Region(9,10) def test(left, right): - print "%s == %s: %s" % (left, right, left == right) - print "%s != %s: %s" % (left, right, left != right) - print "%s < %s: %s" % (left, right, left < right) - print "%s <= %s: %s" % (left, right, left <= right) - print "%s > %s: %s" % (left, right, left > right) - print "%s >= %s: %s" % (left, right, left >= right) - print + print("%s == %s: %s" % (left, right, left == right)) + print("%s != %s: %s" % (left, right, left != right)) + print("%s < %s: %s" % (left, right, left < right)) + print("%s <= %s: %s" % (left, right, left <= right)) + print("%s > %s: %s" % (left, right, left > right)) + print("%s >= %s: %s" % (left, right, left >= right)) + print("\n") test(neg_inf, neg_inf) test(neg_inf, pos_inf) @@ -268,14 +268,14 @@ if __name__ == '__main__': test(-11111, pos_inf) test(11111, pos_inf) - print x - print y - print x & y - print z + print(x) + print(y) + print(x & y) + print(z) - print 4 in x - print 4 in z - print 5 not in x - print 6 not in z - print z in y - print n in y, n not in y + print(4 in x) + print(4 in z) + print(5 not in x) + print(6 not in z) + print(z in y) + print(n in y, n not in y) diff --git a/util/style/repo.py b/util/style/repo.py index acf59ce80f..a0eee98fac 100644 --- a/util/style/repo.py +++ b/util/style/repo.py @@ -39,8 +39,8 @@ from abc import * import os import subprocess -from region import * -from style import modified_regions +from .region import * +from .style import modified_regions class AbstractRepo(object): __metaclass__ = ABCMeta @@ -118,7 +118,8 @@ class GitRepo(AbstractRepo): def repo_base(self): if self._repo_base is None: self._repo_base = subprocess.check_output( - [ self.git, "rev-parse", "--show-toplevel" ]).rstrip("\n") + [ self.git, "rev-parse", "--show-toplevel" ]) \ + .decode().rstrip("\n") return self._repo_base @@ -159,7 +160,7 @@ class GitRepo(AbstractRepo): try: self._head_revision = subprocess.check_output( [ self.git, "rev-parse", "--verify", "HEAD" ], - stderr=subprocess.PIPE).rstrip("\n") + stderr=subprocess.PIPE).decode().rstrip("\n") except subprocess.CalledProcessError: # Assume that the repo is empty and use the semi-magic # empty tree revision if git rev-parse returned an error. @@ -185,7 +186,7 @@ class GitRepo(AbstractRepo): if filter: cmd += [ "--diff-filter=%s" % filter ] cmd += [ self.head_revision(), "--" ] + files - status = subprocess.check_output(cmd).rstrip("\n") + status = subprocess.check_output(cmd).decode().rstrip("\n") if status: return [ f.split("\t") for f in status.split("\n") ] @@ -194,11 +195,12 @@ class GitRepo(AbstractRepo): def file_from_index(self, name): return subprocess.check_output( - [ self.git, "show", ":%s" % (name, ) ]) + [ self.git, "show", ":%s" % (name, ) ]).decode() def file_from_head(self, name): return subprocess.check_output( - [ self.git, "show", "%s:%s" % (self.head_revision(), name) ]) + [ self.git, "show", "%s:%s" % (self.head_revision(), name) ]) \ + .decode() class MercurialRepo(AbstractRepo): def __init__(self): @@ -208,7 +210,7 @@ class MercurialRepo(AbstractRepo): def repo_base(self): if self._repo_base is None: self._repo_base = subprocess.check_output( - [ self.hg, "root" ]).rstrip("\n") + [ self.hg, "root" ]).decode().rstrip("\n") return self._repo_base @@ -233,14 +235,16 @@ class MercurialRepo(AbstractRepo): return modified_regions(old, new, context=context) def status(self, filter=None): - files = subprocess.check_output([ self.hg, "status" ]).rstrip("\n") + files = subprocess.check_output([ self.hg, "status" ]) \ + .decode().rstrip("\n") if files: return [ f.split(" ") for f in files.split("\n") ] else: return [] def file_from_tip(self, name): - return subprocess.check_output([ self.hg, "cat", name ]) + return subprocess.check_output([ self.hg, "cat", name ]) \ + .decode() def detect_repo(path="."): """Auto-detect the revision control system used for a source code diff --git a/util/style/sort_includes.py b/util/style/sort_includes.py index f2f929c09b..ab0bb5fea5 100644 --- a/util/style/sort_includes.py +++ b/util/style/sort_includes.py @@ -42,7 +42,7 @@ import os import re import sys -from file_types import * +from .file_types import * cpp_c_headers = { 'assert.h' : 'cassert', @@ -314,6 +314,6 @@ if __name__ == '__main__': for filename,language in find_files(base, languages=opts.languages, file_ignore=opts.file_ignore, dir_ignore=opts.dir_ignore): if opts.dry_run: - print "%s: %s" % (filename, language) + print("{}: {}".format(filename, language)) else: update_file(filename, filename, language, SortIncludes()) diff --git a/util/style/style.py b/util/style/style.py index 68c77a7c02..c505dafeaf 100644 --- a/util/style/style.py +++ b/util/style/style.py @@ -44,7 +44,7 @@ import difflib import re import sys -from region import * +from .region import * tabsize = 8 lead = re.compile(r'^([ \t]+)') diff --git a/util/style/verifiers.py b/util/style/verifiers.py index c2217d56b9..00cf0705ca 100644 --- a/util/style/verifiers.py +++ b/util/style/verifiers.py @@ -47,10 +47,12 @@ import os import re import sys -import style -import sort_includes -from region import * -from file_types import lang_type +from six import add_metaclass + +from . import style +from . import sort_includes +from .region import * +from .file_types import lang_type def safefix(fix_func): @@ -100,6 +102,7 @@ def _modified_regions(old, new): return regions +@add_metaclass(ABCMeta) class Verifier(object): """Base class for style verifiers @@ -117,7 +120,6 @@ class Verifier(object): """ - __metaclass__ = ABCMeta def __init__(self, ui, opts, base=None): self.ui = ui @@ -144,9 +146,9 @@ class Verifier(object): def open(self, filename, mode): try: - f = file(filename, mode) - except OSError, msg: - print 'could not open file %s: %s' % (filename, msg) + f = open(filename, mode) + except OSError as msg: + print('could not open file {}: {}'.format(filename, msg)) return None return f @@ -222,11 +224,12 @@ class Verifier(object): """ pass +@add_metaclass(ABCMeta) class LineVerifier(Verifier): def check(self, filename, regions=all_regions, fobj=None, silent=False): close = False if fobj is None: - fobj = self.open(filename, 'r') + fobj = self.open(filename, 'rb') close = True lang = lang_type(filename) @@ -236,13 +239,13 @@ class LineVerifier(Verifier): for num,line in enumerate(fobj): if num not in regions: continue - line = line.rstrip('\n') - if not self.check_line(line, language=lang): + s_line = line.decode().rstrip('\n') + if not self.check_line(s_line, language=lang): if not silent: self.ui.write("invalid %s in %s:%d\n" % \ (self.test_name, filename, num + 1)) if self.ui.verbose: - self.ui.write(">>%s<<\n" % line[:-1]) + self.ui.write(">>%s<<\n" % s_line[:-1]) errors += 1 if close: fobj.close() @@ -348,7 +351,7 @@ class SortedIncludes(Verifier): close = True norm_fname = self.normalize_filename(filename) - old = [ l.rstrip('\n') for l in fobj.xreadlines() ] + old = [ l.decode().rstrip('\n') for l in fobj ] if close: fobj.close() @@ -428,14 +431,14 @@ class ControlCharacters(LineVerifier): test_name = 'control character' opt_name = 'ascii' - valid = ('\n', '\t') - invalid = "".join([chr(i) for i in range(0, 0x20) if chr(i) not in valid]) + invalid = "".join([chr(i) for i in range(0, 0x20) \ + if chr(i) not in ('\n', '\t')]) def check_line(self, line, **kwargs): return self.fix_line(line) == line def fix_line(self, line, **kwargs): - return line.translate(None, ControlCharacters.invalid) + return ''.join(c for c in line if c not in ControlCharacters.invalid) class BoolCompare(LineVerifier): languages = set(('C', 'C++', 'python'))