am 041ee6cc: Add timer mode in opcontrol.

Merge commit '041ee6ccda354960ebc1e1ccfff78685ec5326e1' into gingerbread-plus-aosp

* commit '041ee6ccda354960ebc1e1ccfff78685ec5326e1':
  Add timer mode in opcontrol.
am 44ce8454: am 041ee6cc: Add timer mode in opcontrol.

Merge commit '44ce8454876f33304daf17da83614acaf8c189c2'

* commit '44ce8454876f33304daf17da83614acaf8c189c2':
  Add timer mode in opcontrol.
oprofile fix for hashing backtraces.

Oprofile's hash function uses a 64-bit value for the
key where the high 32-bit are the 'from' address in a backtrace,
and the low 32-bits are the current PC. However, the hash
function was:

  uint32_t temp = (value >> 32) ^ value;
  return ((temp << 0) ^ (temp >> 8)) & data->hash_mask;

If 'from' and 'to' are the same (recursive function), this hashes
to 0, and you end up with lots of collisions, turning the
theoretically O(1) operation into O(n).

To fix it, I just drop the high 32-bits from the hash:

  uint32_t temp = value & 0xffffffff;
  return ((temp << 0) ^ (temp >> 8)) & data->hash_mask;

In testing, this drastically reduces the oprofile overhead
for some tracing.

Change-Id: I8ae65a8a73771c89b576c895f135efd7b730eaf5
oprofile 0.9.6

Copy in the rest of the oprofile 0.9.6 tree so we have a source
copy to match the prebuilt binaries that are checked into
external/.

Change-Id: Iaac327571d5d583594a4194973bf256569061048
x86: Fix oprofile compilation in pic mode.

This patch modifies the inline x86 assembly fragments to properly
save ebx when calling the cpuid instruction. Otherwise, the compiler
will error, complaining that the PIC register (ebx) is clobbered.

Change-Id: Ibc091484068dfb87812c59dbc3976d26d922eebc
Merge "x86: Fix oprofile compilation in pic mode."
Compile oprofile tools on the host.

Some of the new build targets are disabled for now because libbfd is
not currently provided by the prebuilt toolchain for all platforms.

Change-Id: Ie2c24bf997c9c5f15f6c3e2eaf949d73578890d8
Sync with oprofile CVS HEAD from Jan 11, 2011.

There have been a few patches to oprofile for newer ARM architectures
since 0.9.6.

Pruned out irrelevant auto-generated files from the previous dump
so this is closer to being a mirror of the actual oprofile repository.

Change-Id: I889053d30aae433a199a0a18585c66b88ff8de14
Improve oprofile wrapper commands.

Added a new wrapper script that will help automate more of the process
of setting up and running oprofile on a remote device.  There is
more work to be done here once the kernel perf event issues that hinder
reliability (bug: 2975913) are resolved.

Change-Id: I942ee74912f1e4c87b4c43aca9937b3f3f1780f6
x86: More fixing oprofile compilation in PIC mode

Change-Id: I4c58b95a9f6f13bdfa59a6b78248f97e86821e5a
Build oprofile tools on the host.

Change-Id: I9911afe75ad24b5d39aedee4cf4c27ce418d033c
Disable oprofile host tools builds.

Need host prebuilt for libiconv.a because libintl.a is linked with it.
Bug: 3439321

Change-Id: Ifabae6a0735f3d98287069e7b881a88c4933c56b
Completely disable building oprofile on host.

Was trying to build some components even when HAVE_LIBBFD was false.

Change-Id: Ied9aefcc42070ae2e6cd7cc64f7323f72e64dd82
This doesn't always build, so completely disable it.

Change-Id: Ie87d9459a98fbd45619bf1da83c2e68fb63b075a
Revert "This doesn't always build, so completely disable it."

This reverts commit 245b75880b4a7ad329b53ab9ee8a12d4fafee368.
Reenable oprofile host build.

Now taking into account differences in the library dependencies of
libintl on darwin vs. linux.  On darwin, we need to link with libiconv
which is provided as a shared library on the platform.  On linux,
iconv is included in libc so we don't need anything special.

Change-Id: Ide89061cce0352c83b7401d9f5d594e9625b1868
Improve oprofile scripts.

Now support importing dumps and running reports using a simple script.
Eliminated some spurious errors and warnings in the oprofile tools
when profiling Android libraries.

Change-Id: I618cf6f8937a6ab5f45b3d45bdf860792b6bebbe
Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: I4e916efded024ea68713dde817dd4bb7ec83c285
Fix a typo in oprofile_android

The typo (in specifying the --kernel-range argument) completely breaks
kernel profiling  because the kernel end address will always be 0
and < the start address. All kernel samples will therefore be discarded.

I've also added very basic support for turning on kernel profiling via
this script.

Change-Id: I64b4063cb994ca94a51ed5aa0159aa4ae1627969