Commit graph

132 commits

Author SHA1 Message Date
Dmitriy Ivanov
4637f3d66d Do not adjust PT_GNU_STACK segment
Bug: http://b/20687795
Bug: http://b/18051137
Change-Id: Ie8af3892cfbebcc0249e7981284c4ad97ff40317
(cherry picked from commit 064a9800f3)
2015-05-04 12:34:42 -07:00
Dmitriy Ivanov
18c935ceab Adjust DT_MIPS_RLD_MAP2 value
DT_MIPS_RLD_MAP2 stores the difference between dynamic
  entry address and the address of the _r_debug (used by GDB)
  since the dynamic section and target address are on the
  different sides of the hole it needs to be adjusted accordingly

Bug: http://b/20658994
Bug: http://b/18051137
Change-Id: I4c5e379e8a4c68f029467df6dc660f81a7013a09
2015-04-29 19:53:31 -07:00
Dmitriy Ivanov
b293969c6d Reduce p_align for program header to page size.
Having p_align > page_size leads to the situation when striping
 packed executables results in unnecessary p_vaddr adjustments.
 And it also may result (with probability 1 - 1/sizeof(uintptr_t)) in
 misaligned segments following .dynstr

Bug: http://b/20629834
Bug: http://b/18051137
Change-Id: I1c5da4911e4409d63cb09f6b6b0a16ef54f6501b
2015-04-27 20:37:17 -07:00
Dmitriy Ivanov
b0b9338ff8 Exit normally when relocations are already packed.
Bug: http://b/18051137
Change-Id: Idfffac5fe965e3cdeabe6d3b2dcd8c275c6ae5df
2015-04-24 12:39:14 -07:00
Dmitriy Ivanov
adfcb97317 Exit normally when packing relocs saves no space.
Bug: http://b/18051137
Change-Id: I43ea5678a677e5d39fb54fafcf3a2f3a252c79b0
2015-04-23 22:54:25 +00:00
Dmitriy Ivanov
f15ceeb784 Always use signed leb128 encoding
According to runs on /system/lib there using
 unsigned leb128 does not save us any additional
 space. In order to keep packing as simple as
 possible switch to using signed leb128 for
 everything.

Bug: http://b/18051137
Change-Id: I1a47cb9eb2175895b3c3f7c13b4c6b1060de86c0
2015-04-22 12:58:38 -07:00
Dmitriy Ivanov
2a6342187a Statically link libc++ for prebuilts
Statically link libc++ to relocation_packer in
 order to make it work from prebuilts

Bug: http://b/18051137
Change-Id: I933ed6a0e48780a26b261069eb6a293432824fe7
2015-04-22 10:43:12 -07:00
Dmitriy Ivanov
bb25bbe19e Adjust DT_VERSYM/VERNEED/VERDEF dynamic sections
This is recent addition to bionic linker. The symbol
  versioning was not supported before therefore this bug
  went unnoticed.

  Also normal exit when there is not enought relocations
  to pack. This is to enable integration of relocation_packer
  to android build system.

Bug: http://b/20139821
Bug: http://b/18051137
Change-Id: Iaf36ae11c8e4b15cf785b6dd1712a3bdcf47cc45
2015-04-21 12:28:21 -07:00
Dan Albert
21988a3b16 Also send bionicbb logs to a file.
Change-Id: If9a6fdbe004e3b4bb7d868b7255f83c232759f80
2015-04-17 17:57:15 -07:00
Dan Albert
d3fe4f1229 Merge the two bionicbb services into one.
Change-Id: I6490da1ec96b2e24b330296950be84424e11bd35
2015-04-17 17:39:36 -07:00
Dan Albert
a4061cddbe Clean up "logging".
Print is bad and I should feel bad. Use the logging module instead.
Will follow up by adding a persistent log destination instead of just
the console.

Change-Id: I396ff10712f88a03f8d8183b6de29ea273815962
2015-04-16 14:20:13 -07:00
Dan Albert
a0ecd5b2b4 Skip merge-failed messages from Gerrit.
Change-Id: I2d8055a44cd78f95e64d6cf88e9efdd610a4fa88
2015-04-13 17:33:51 -07:00
Dan Albert
d032378790 Don't build any changes that touch bionicbb.
Right now any changes in here would be innocuous because I manually
update bionicbb, but I'd like to check in the various job
configurations. Once I have we don't want anyone to be able to make
the buildbot run any untrusted code.

Change-Id: Ic050859cd5017615f71c75f995ba21bb45407b05
2015-04-09 17:18:53 -07:00
Dan Albert
dadac10fcc Reject changes with cleanspecs.
Cleanspecs must not be removed once they have been built. This means
they can't be reverted, or reliably cherry-picked. Just skip any
changes that include them since they make such a mess.

Change-Id: I3df8d81f93651d573485de7a75ecf5c6278c0001
2015-04-06 14:22:37 -07:00
Simon Baldwin
569a752689 Fix comment drift in assorted relocation packer modules.
Some of the commentary in relocation packer code is relevant
only to the packing strategy employed by chromium, and no
longer applies here.  This change fixes or deletes it.

Code comment change only; no functional effect.

Change-Id: Id229ee1d802bba608be15b79bc75bf90df557dab
Signed-off-by: Simon Baldwin <simonb@google.com>
2015-03-26 17:13:19 +00:00
Simon Baldwin
d2bd5739ed Remove unused/unusable relocation packer files.
Removes:
- src/run_length_encoder.h
    artifact of the original packing tool, not used here
- test_data/generate_elf_file_unittest_relocs.sh
- test_data/generate_elf_file_unittest_relocs.py
    test data generation for chromium/gyp, not usable here
- README.TXT
    because it is now almost entirely outdated

Change-Id: Ic4cd372647d9a365dc52833a6cc1cf66f0c95ec9
2015-03-25 16:23:01 +00:00
Dan Albert
7d57623755 Convert result of a call to JSON.
I still had the service that was relying on this running on top of
local changes, so this hadn't been a problem yet.

Change-Id: I63b45b8c7cf81972dbb7128013c1c777a2342d4c
2015-03-24 11:43:55 -07:00
Dan Albert
c889f13493 Work around a bug in the Jenkins queue API.
https://issues.jenkins-ci.org/browse/JENKINS-27256

1.601 broke the ability to get a build's URL before the build had
actually started. The bug is pseudo-fixed, but would require
installing a new plugin and fixing the python jenkinsapi plugin for
the time being to use /queuefix/ rather than /queue/.

Just avoiding logging a URL for now.

Change-Id: Ibf90e5887fc4532dac688082ad7729787897da11
2015-03-23 13:29:15 -07:00
Dmitriy Ivanov
f8ff6b103b Generalize compression tool
1. One binary for all architectures
 2. Generalize (and slightly improve) compression
 2.1 works on all relocation types (rela?.dyn section only so far)
 2.2 Uses same format to encode ElfW(Rel) as well as ElfW(Rela) tables

Bug: 18051137
Change-Id: I66c95d9076954ca115816fc577d0f5ef274e5e72
2015-03-06 13:01:08 -08:00
Dmitriy Ivanov
87a0617ebe Import relocation packer from chromium repo
Bug: 18051137
Change-Id: Ia67fa11da8247e3f86f70a8ce99e6695f2c05423
2015-03-06 13:01:08 -08:00
Dan Albert
d280675405 Merge "Add support for building other architectures." 2015-01-22 22:00:37 +00:00
Dan Albert
2b87351063 Report 404 errors from Gerrit and continue.
Currently, we get a 404 from Gerrit in the event that two projects
have the same Change-Id. We should be able to handle this and actually
cherry-pick each change so we can check multi-project changes, but for
now just skip these changes.

Change-Id: I7bc63208998d58beec83b71b302450d9be3ea026
2015-01-21 09:56:28 -08:00
Dan Albert
b4060330aa Check the committer rather than the Gerrit owner.
Guarding based on the Gerrit owner can be circumvented by an arbitrary
user uploading a different patch with a Change-Id that is non-unique,
with the other copy being owned by a Googler.

Change-Id: I5414b679e361d4c38d70bf9c4516c122f668fc49
2015-01-12 16:33:17 -08:00
Dan Albert
ad248b7c00 Guard against @google.com.example.com.
Begin adding some unit tests. Testing the Jenkins interface will
probably be difficult, but testing that we can properly handle
messages from Gerrit is easy enough.

Change-Id: Id7e8e175e0f064fd10715febe40040a65564c701
2015-01-12 13:48:46 -08:00
Dan Albert
f988da4730 Oops. Fix dict key.
Change-Id: Ia8295417d4097f38eef633089cb4539b849f3c74
2015-01-12 11:58:09 -08:00
Dan Albert
29be129342 Only build changes that come from @google.com.
Googlers should be able to tell the buildbot to launch builds for an
external contributor's change, but Gerrit is determined to make this
hard for us. The email sent by Gerrit for comments doesn't actually
contain the email address of the commenter in any clear way, only the
name. It does however contain a list of `Gerrit-Reviewer: Name
<email>` entries that could be used for this though.

Change-Id: Iee61f06dcd8f0024f16b535ea9a34765bf01b2e7
2015-01-12 11:48:04 -08:00
Dan Albert
64390f940c Add support for building other architectures.
Since we often make changes that might break on other architectures,
let the buildbot deal with some of these for us. They can be invoked
by `bionicbb:ARCH`, where `ARCH` is one of:

 * arm
 * aarch64
 * mips
 * mips64
 * x86
 * x86_64

Specifying arm isn't particularly interesting (since the default
target for the buildbot is hammerhead), but there are some differences
in the math instructions available for the default ARM target, so it
could be helpful for testing changes to the compiler-rt builtins.

Change-Id: I94018fd3c30d26fcf405e747fc633cbdd08ff4e5
2015-01-09 22:45:33 -08:00
Dan Albert
c02df47f20 Make indentation match the style guide.
Apparently Google abandoned the 2 space indent for Python long ago.
Helps to actually read the style guide before trying to adhere to it.

Change-Id: I4feb019f0916f9d8e4f78c0dbeafbe45d8a46bfd
2015-01-09 17:22:00 -08:00
Dan Albert
8a15a4e5c4 Use relative imports.
Making `bionicbb` its own package required `PYTHONPATH=..`, which we
don't want. Just use a relative import instead.

Change-Id: I59b9852522118ece89829288a4921902e756e4aa
2015-01-09 16:53:09 -08:00
Dan Albert
eb85ff0aba Add JSON files and oauth storage to .gitignore.
The only JSON file is the client secret file, which we really don't
want leaking. Same goes for the oauth storage file.

Change-Id: Ie860704574ec37ccfc50ff7c9d59717a7b9b443b
2015-01-09 16:24:17 -08:00
Dan Albert
691e809edb Make service URLs configurable.
Change-Id: I91df77b7e0294be5e6180460b0ef26d7ead2ea7d
2015-01-09 16:18:48 -08:00
Dan Albert
7c78d24011 Check in bionicbb code.
These have been sitting around in a git repo on my machine for a
while. They're now big an important enough that I'd like to both keep
them securely backed up, and also have my changes reviewed.

Change-Id: Ic4545149b4b07f0d57b21cac32aab8553dceb567
2015-01-09 15:12:48 -08:00