History log of /build/core/combo/TARGET_linux-x86.mk
Revision Date Author Comments
4ee006e012ad376e99d4c2a1e225be9f396fc9eb 09-Sep-2014 Alexander Ivchenko <alexander.ivchenko@intel.com> Refine TARGET_GLOBAL_CFLAGS for x86 and x86_64:

Remove -msse2 for x86 (-mssse3 should be provided by the compiler).
Remove -fPIC (compiler provides by default).
Remove -fno-inline-functions-called-once.

Change-Id: Ibb29934224c4eedfff926dc72c3b6342c1861ac9
(cherry picked from commit 388dce3192b6cecf7424e9d745c3147cc7335c24)
04cf31597021af3cd045dd9c50d94a87d0394023 05-Aug-2014 Dan Albert <danalbert@google.com> Inhibit implicit -Bsymolic in -shared.

Bug: 16853291

Change-Id: Id70488b077256a70137c4417f21be2c2d1d4341c
(cherry picked from commit b6bb71b85d506dcc4763290d72c4168afd541f7d)
908ab54fda172baa9a646259fafd8af35290f0a6 06-Aug-2014 Dan Albert <danalbert@google.com> Fix uses of -fPIC and -fPIE.

We've been using -fPIC and -fPIE together in the global cflags all this
time. These options are incompatible. The only reason we haven't been
hit by this before is because of the forced -Bsymbolic in GCC. To fix
this, pass -fpic when compiling objects for shared libraries and -fpie
when compiling objects for executables. For static libraries, also use
-fpic. We have to do this because static libraries might be included in
either a shared library or an executable. Code compiled with -fpie
cannot be included in a shared library, but code compiled with -fpic
may be included in an executable.

We've also been using -fpic and -fPIC together. These are different
options, and only the latter will take effect.
http://stackoverflow.com/a/967010

The final thing this fixes is that we had -f(PIC|PIE) flags being passed
to link commands. These are compile time flags, and don't do anything at
link time.

Bug: 16823325
Change-Id: Ic76f47e63dc2c81b7e1a8058bae1b3dc8565d606
(cherry picked from commit 4803ce2696950f8c27c83de4fe46ae196f35af16)
5f5c48f0f1b6bef252410575d9225507e5608c0b 31-Jul-2014 Dehao Chen <dehao@google.com> Update the FDO support:

* Explicitly check BUILD_FDO_INSTRUMENT and BUILD_FDO_OPTIMIZE with true
* Remove unnecessary target_libgcov
* Update the profile collection path on device so that most app can have write access

Change-Id: I5c1915a12ea37b2cb3c76a27e7104e47ad636928
25671e15cc1b199ca693f95864ab93a63909a526 23-Jul-2014 Dehao Chen <dehao@google.com> Refactor FDO support code to ensure arm64 can also be built with FDO.

Change-Id: I752c9f411b0a046a15c72b4837efc1fb0503b470
f6771f631b814189d83b9b16cfa73d1466f932af 15-Jul-2014 Ed Heyl <edheyl@google.com> reconcile aosp (8689b90bcfdc92c94475901935b5f6efae0c9abc) after branching. Please do not merge.

Change-Id: I0e4c55cc5a04d4593c3cd200c08c48d18c08a161
e68ec719039406bfcc6cd8b1cab4890afbeb66a8 02-Jul-2014 Ying Wang <wangying@google.com> [DO NOT MERGE] Workaround to fix klp-modular-dev-plus-aosp build.

Change-Id: I8042b045f20b870de84ea7c4c060c3cbe1cdfe69
50031de36ee77128b00e1ea77bcbb5a48628cfa3 13-Jun-2014 Dan Albert <danalbert@google.com> Remove -Bsymbolic from builds.

This is causing issues when tools like asan try to wrap calls like
malloc. See the referenced bug for more details.

Bug: 15432753
Change-Id: I15e8eab5b773afd02dc14c78500cf8246a617718
0c87f3d733f289978dd2fa6fd4df324a52f0a4f4 29-May-2014 Andrew Hsieh <andrewhsieh@google.com> Add -latomic to all target builds

Projects using stdatomic.h needs libatomic.a in case compiler can't
expand all __atomic* intrinsics. eg, __atomic_is_lock_free in
armeabi/mips.

Adding libatomic.a globally makes more sense than adding
"LOCAL_LDLIB += -latomic " in each project including <stdatomic.h>.
Projects don't need atomic operations won't get redundant DT_NEEDED
entry because libatomic.a is not a shared library.

Change-Id: I81dbf524544c848e667e18ab5eeabff75b5063ef
4c952d72b7aca4801e0ee4070cf54e3de57b98b5 29-May-2014 Andrew Hsieh <andrewhsieh@google.com> Add -latomic to all target builds

Projects using stdatomic.h needs libatomic.a in case compiler can't
expand all __atomic* intrinsics. eg, __atomic_is_lock_free in
armeabi/mips.

Adding libatomic.a globally makes more sense than adding
"LOCAL_LDLIB += -latomic " in each project including <stdatomic.h>.
Projects don't need atomic operations won't get redundant DT_NEEDED
entry because libatomic.a is not a shared library.

Change-Id: I81dbf524544c848e667e18ab5eeabff75b5063ef
d90de32951835818a12b5fbb29871722ec1a7b1d 24-May-2014 Ying Wang <wangying@google.com> Exclude libstdc++ and libgcc if libc++ is requested.

Bug: 15174002
Change-Id: I24fe428c3520f76cd61f0660b59ba18a1f2d2dad
48f239c94faca140427afc9aa06cf356b1b6b0de 09-May-2014 Andrew Hsieh <andrewhsieh@google.com> Disable canonical prefixes of system headers

GCC know a few pre-defined paths (relative to its location) to
search for headers, libraries, program, etc. By default GCC prefixes
its own path(argv[0]) and calls realpath() which result in absolute
path with all symlink, . and .. removed.

It's usually good to have canonicalised paths, but absolute paths
in *.d file can cause unnecessary relinking when stale entries
in ccache cache hit

Add -no-canonical-prefixes (gcc>=4.6) and
-fno-canonical-system-headers (gcc>4.6) to disable realpath() on
prefixed paths

Change-Id: I58d739e61fb013015fb05a9c98b2132b307f915a
de36cd72e8e5a154c1fedf63e1ea83af9d5288aa 07-May-2014 Ying Wang <wangying@google.com> Apply LOCAL_LDLIBS to target build rules too.

Use LOCAL_LDLIBS to link against prebuilt libraries (such as NDK
libraries).
Previously LOCAL_LDLIBS only applies to host modules and the behaviour
confuses users.

Change-Id: I515546d7b59ef54e8ef09050eb58ec63534c9291
2c8e95528c450008c79795b4539f735444264d6e 24-Apr-2014 Elliott Hughes <enh@google.com> Leave 'linux' defined on x86/x86-64, like arm.

Change-Id: I53013a45c19a643a985de3f339b8b3f8f4dc39d2
4de6fa4069407607813dfdd1993114c79194d337 11-Apr-2014 Ben Cheng <bccheng@google.com> Decouple platform compiler and NDK library versioning.

TARGET_GCC_VERSION: select compiler from prebuilts/gcc/...
TARGET_NDK_GCC_VERSION: select libraries from prebuilts/ndk/...

Change-Id: I4422a42cdc97aa92b40798014cba82c3c123bbd2
ce1c596e1507295f3037e9fa7bf163fb2ab95a11 29-Mar-2014 Ying Wang <wangying@google.com> Remove the unnecessary indirection of TARGET_STRIP_COMMAND

Now all archs use the same strip command which can be put just in
transform-to-stripped.

Change-Id: Ief79697d47ea142fc9e63e63a7e2dace9e839165
a6e2f9322c47ac02546aa436341fa42afd0000c5 18-Mar-2014 Christopher Ferris <cferris@google.com> Add a method to leave the symbol table in a library.

When LOCAL_STRIP_MODULE := keep_symbols is set, then the normal strip rules
will be modified so that only the .debug_* sections are removed. The original
symbol table is left alone.

This allows the compilation of certain libraries so that libbacktrace library
can provide meaningful names to functions.

Bug: 12958251
Change-Id: I82bdc304a463012e29086325ccb51163464cb4a9
9fb3526648a08d8d8c1e6325aeb3c6500bcd44c2 22-Feb-2014 Ying Wang <wangying@google.com> Make -rpath-link work with multilib.

Change-Id: If69ea6ed6cdbb657ed4005f8217d653e29626783
b47c863ec7d7b0d6806d7ea85887c662893a2c70 19-Feb-2014 C. Sean Young <csyoung@google.com> Strip all symbols on x86

Strip all of the non-dynamic symbols on x86 targets,
instead of just the debug symbols.

Change-Id: Id799a6a8c8b0e8bf70977328e42e5efa23762f25
4aa263f2bea8ba98755096efef95fb32be2d409c 19-Feb-2014 Colin Cross <ccross@android.com> x86: set -msse2 for all builds

All supported x86 processors have SSE2.

Change-Id: Ib4a0511c456fe3185b0b902390860ad557aeedcf
310324d28a5f64094a2bd047d683b43cf7aaa81d 17-Feb-2014 Qiming Shi <qiming.shi@intel.com> Fix x86 config file to support 2nd ARCH build

Change-Id: I5f6091c555b9e742303f294b7c07a981ae5c6026
Signed-off-by: Qiming Shi <qiming.shi@intel.com>
6d5dd2367ae19357a92e545652c10ba02928b103 13-Feb-2014 Stephen Hines <srhines@google.com> Fix incorrect x86 build rules.

combo/TARGET_x86*.mk mistakenly added TARGET_GLOBAL_CFLAGS to their
linker command lines. This results in clang builds not working properly,
since they strip some unknown flags from TARGET_GLOBAL_CFLAGS.

Change-Id: I60a1ff5df70305323134435e4ae107ea7acfe8ea
171e940c7a565e651cf7d0f2edb84d9d92df7f39 28-Jan-2014 Elliott Hughes <enh@google.com> Fix KERNEL_HEADERS_ARCH for mips and x86.

arm and arm64 have distinct headers, but mips and mip64, and x86 and x86_64
use headers that work for both widths. So where arm/arm64 need to handle the
second architecture case specially, all we need to do for the others is
hard-code the name. (x86_64.mk already hard-codes x86; we need to change
x86.mk for the case where we're building the 32-bit binaries for a mixed
system. mips64.mk doesn't exist yet, but when it does, it'll hard-code
just plain "mips" too.)

Change-Id: Ia6b9f77b4eb2c78729b454045875c409e0ea8197
2f8dcdd96114274d9c689caebd546d01176e3c6b 28-Jan-2014 Elliott Hughes <enh@google.com> Remove libthread_db from the default include path.

This should never have been on the default include path.

The NDK statically links its own libthread_db, so I'm removing
bionic's unused copy from devices.

Bug: 11882807
Change-Id: I49a67fe0902cc4bc178360f6c993959774d74e3a
1d274d26869bfe6881d503b2d24f87cc40cf2727 27-Dec-2013 Ying Wang <wangying@google.com> Load compiler environment for a second arch.

This is the first step to build 32-bit libraries in a 64-bit product.
It will work like this:
1) In the product's BoardConfig.mk, define:
TARGET_2ND_ARCH, TARGET_2ND_ARCH_VARIANT, TARGET_2ND_CPU_VARIANT.
The build system uses those variables to set up an additional compiler
environment for the second arch.

2) When parsing Android.mks, the build system sets up rules to build a
module for both the 1st arch and the 2nd arch, unless it's explicitly
asked to skip so.
Android.mk will be adapted if there is additional rule of generating
source files.
The build system will accept arch-specific LOCAL_ variables, such as
LOCAL_CFLAGS_arm, LOCAL_CFLAGS_armv7-a-neon, LOCAL_CFLAGS_cortex-a15,
LOCAL_CFLAGS_aarch64 etc. Modules use such variables to set up build for
various archs at the same time.

3) Install binary of the 2nd arch by adding "<module_name>:32" to
PRODUCT_PACKAGES. All 2nd-arch libraries linked in by "<module_name>:32"
will be installed automatically.

Bug: 11654773
Change-Id: I2df63cd5463a07bf5358bee2a109f8fb9590fe30

Conflicts:
core/combo/TARGET_linux-arm.mk
e1d44c3b4acef1319c34514e8d4ee78127b895ef 27-Dec-2013 Ying Wang <wangying@google.com> Load compiler environment for a second arch.

This is the first step to build 32-bit libraries in a 64-bit product.
It will work like this:
1) In the product's BoardConfig.mk, define:
TARGET_2ND_ARCH, TARGET_2ND_ARCH_VARIANT, TARGET_2ND_CPU_VARIANT.
The build system uses those variables to set up an additional compiler
environment for the second arch.

2) When parsing Android.mks, the build system sets up rules to build a
module for both the 1st arch and the 2nd arch, unless it's explicitly
asked to skip so.
Android.mk will be adapted if there is additional rule of generating
source files.
The build system will accept arch-specific LOCAL_ variables, such as
LOCAL_CFLAGS_arm, LOCAL_CFLAGS_armv7-a-neon, LOCAL_CFLAGS_cortex-a15,
LOCAL_CFLAGS_aarch64 etc. Modules use such variables to set up build for
various archs at the same time.

3) Install binary of the 2nd arch by adding "<module_name>:32" to
PRODUCT_PACKAGES. All 2nd-arch libraries linked in by "<module_name>:32"
will be installed automatically.

Bug: 11654773
Change-Id: I2df63cd5463a07bf5358bee2a109f8fb9590fe30
dddb566eba8cd666b6f3b70067e77acb4e1656de 11-Jan-2014 Elliott Hughes <enh@google.com> Remove obsolete CUSTOM_KERNEL_HEADERS.

Change-Id: Id260dd351b90f065eee56e231d4c341b18c1b27f
e5df095b76baf5b7e3cbbeeed307ba214d90ec2c 26-Nov-2013 Elliott Hughes <enh@google.com> Switch x86 over to uapi-only.

Bug: 11559337
Change-Id: I95aa40ec2094acdaef1d4b4d9f0dd6278cf558d1
2d9dc899626072bef785ac0f471d5fbb19d8bf82 20-Nov-2013 Elliott Hughes <enh@google.com> Switch x86 to uapi headers.

We still need the 'aux' hack, but this is a good step forward.

Bug: 11559337
Change-Id: Ib3d79317293e1cd3d2620c38e6b472a5994ee554
8baaca5f97330a358de5633843af2b8bc51a28b1 15-Nov-2013 Andrew Hsieh <andrewhsieh@google.com> Switch AOSP X86/MIPS compiler to gcc4.8

Change-Id: Ifeee2c7d696c8a8e96e52c6ca51434260bdae5f8
46ed4aa58b9674aadf75b4c35d0394831bbe6bad 24-Oct-2013 Nick Kralevich <nnk@google.com> x86: turn on -Wl,--fatal-warnings

In 4f2f16da143fede94a1124ee79efccee78442b90, we added
-Wl,--warn-shared-textrel to TARGET_GLOBAL_LDFLAGS. This generated
a warning whenever we created a shared library with a text
relocation. At the time, we wrote:

=====
Emit a warning when the static linker detects a shared library
has text relocations. Text relocations make it harder to
share pages across processes, and make it harder to use
certain memory protection features in, for example, SELinux.

This warning will turn into an error in a future change
(via --fatal-warnings)
=====

All code which uses text relocations has either been fixed, or
we've temporarily worked around the issue so the code can still
compile.

Enable --fatal-warnings.

Bug: 11353056
Change-Id: I2f2c65352166ef0a96f54858de1556f0290fe306
f0a48555744ce9ae74ae34df8cb061aa0d0cf9d3 10-Oct-2013 Pavel Chupin <pavel.v.chupin@intel.com> Cleanup x86 and x86_64 flags

-mandroid, -D__ANDROID__ is on by the toolchain;
-msse3 moved to llvm_config, it seems it's required only there;
__cxa_atexit is provided by libc now;
USE_SSE2 should not be used anywhere, it's always true;
remove -mstackreallign and -mfpmath=sse as useless for x86_64;

Change-Id: Ib7739f6522c375c09de10d22616c48a493841c4c
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
fde3c164208a4e4aebc10bb56e56580f1219114f 08-Oct-2013 Pavel Chupin <pavel.v.chupin@intel.com> Remove explicit passing of dynamic loader name

We should trust toolchain on that.

Change-Id: I20dd882d167cc84c262aef245ea2d86c17bc1785
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
d3f00c162b39406725b6200315a1e4f2a5f34ae1 04-Oct-2013 Elliott Hughes <enh@google.com> Remove useless x86 options that were always hardcoded on.

ARCH_X86_HAVE_MMX, ARCH_X86_HAVE_SSE, ARCH_X86_HAVE_SSE2,
and ARCH_X86_HAVE_SSE3 were all always on. There are no longer any makefiles
or code that are conditional on any of these, so let's just remove them
rather than encourage anyone to mess with knobs that don't work.

Change-Id: I5ee095e8041eecff4554ad4801894fbfca69093f
d5dcd57d522fe855e1d1f7a1e21b979f16821b4f 27-Sep-2013 Andrew Hsieh <andrewhsieh@google.com> Switch default GCC to 4.8 for X86/MIPS

Change-Id: Ic40c2cf25c701dda468c1d1cc0058b94a308f2cd
fd82a49e04adb5513977acd0f616ddac421c715b 26-Nov-2012 Pavel Chupin <pavel.v.chupin@intel.com> x86_64: Adding new target

Add x86_64 Android builds. Compiler is expected to be able to understand
-m64 code generation option.

Change-Id: I99e7337c5a5766afc5e528a481bd21631ff44dd5
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
ae5c0ab2726ed4b9ca7b08f9b29e3393aa0a5d40 28-Sep-2011 Negreanu Marius Adrian <adrian.m.negreanu@intel.com> Extend x86 to have different arch variants

Author: Negreanu Marius Adrian <adrian.m.negreanu@intel.com>
Author: Andrew Boie <andrew.p.boie@intel.com>
Author: Daniel Leung <daniel.leung@intel.com>

Currently, x86 target only has generic i686 and x86-atom
as arch variants. This patch adds the ability to have
more than two arch variants. Defining a new arch variant
is similiar to ARM targets, by adding a new file in
core/combo/arch/x86. These files also define what
capabilities the targeting CPU has (e.g. having SSE2,
SSE3, etc.).

We define arch variants for Sandy Bridge, Ivy Bridge,
Haswell; upcoming arches can be easily added to this
set with future patches.

Change-Id: Iafbce10d205e860738db4a216ff603f9a84d7311
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
c1a5664ea3882800dfc538a9591828f9c429f6d7 23-Aug-2013 Pavel Chupin <pavel.v.chupin@intel.com> Switch x86 default compiler to multilib version

Switch from gcc-4.7 32-bit only to gcc-4.7 multilib (32/x32/64) compiler.
Tested x86 image build on Linux and Darwin.

This bionic patch is required:
https://android-review.googlesource.com/#/c/64183

Change-Id: Ifc2c6c5d6a4a1b71a00a87af072bb7f67b1c284d
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
f4723fa49b6e61f727b6321a4006ee8ba3f393b9 15-Aug-2013 Ying Wang <wangying@google.com> No need to filter out AndroidConfig.h for unbundled build

for now we have all AndroidConfig.hs in the build project.

Change-Id: Id713fecba1378fad81688f5937f61c779b618ac2
6ecf0ef7447adbc1bd2f8b591f62d37bd8164255 08-Aug-2013 synergydev <synergye@codefi.re> FDO: support linux-x86 target

Change-Id: I4a3a1d298176da109df316cf9128f19e77490bc9
fb45baa7e7f7909fb58460194476e8f7ffd23cde 29-Apr-2013 Nick Kralevich <nnk@google.com> x86/mips: enable _FORTIFY_SOURCE=2

Enable _FORTIFY_SOURCE=2 for x86 and MIPS.

Currently, this change is a no-op, as Android's libc doesn't
support _FORTIFY_SOURCE > 1, yet.

The ARM change was made in 316f720b91f879c4e3972d6d595535de0ac707b2

Change-Id: Iafe90beadf9b6a41ea294b7107cf4f18141acf3a
8725b941b007adfdcb54e7c3aed4b1c21f4dc5ad 07-Mar-2013 Andrew Hsieh <andrewhsieh@google.com> Duplicate libgcc.a in front of *so

Also see 6c7bc550adb917157a9f53ebf8898110e37294b2

Change-Id: Iade6cd6b40cd4840a148098e1d8fc7a0c97e2f66
098a5968fabfa3b5f07f1041a97432a66ecb485a 21-Dec-2012 Andrew Hsieh <andrewhsieh@google.com> Switch to GCC 4.7 for X86 and MIPS

Change-Id: I1c2021a15f53e064baf69084894c114289ef7c54
ec4caba79cf805a21a7d705cb35ecd89bb598a7f 13-Dec-2012 Ben Cheng <bccheng@google.com> Enable lunch command to pick up new toolchain version.

Otherwise the previously exported value will be sticky and the value
defined in the TARGET makefile is ignored.

Change-Id: Icdacb8c46034b8a24a9875b7596b31d00861512a
914f7fd938ed8b1a9abcea57325010d464cdc55e 13-Dec-2012 Ben Cheng <bccheng@google.com> Enable lunch command to pick up new toolchain version.

Otherwise the previously exported value will be sticky and the value
defined in the TARGET makefile is ignored.

Change-Id: I13b9cca2d288f7ab09104c57e7cad9f23de2548a
054ffd2e7c3da585ab223518569e7436858ba5e0 11-Dec-2012 Ben Cheng <bccheng@google.com> Define TARGET_GCC_VERSION in target specific make files.

So that GCC refresh can be performed in a target specific way.

Change-Id: I867e8b8fd671bef8c5af300e657a6da4fface032
40febcad47d22c234b9dcc14391ccd936b895f8c 08-Dec-2012 Nick Kralevich <nnk@google.com> x86: enable FORTIFY_SOURCE

Enable FORTIFY_SOURCE for Android x86. This adds certain security
protections to Android programs, checking for common programming
mistakes and buffer overflows.

FORTIFY_SOURCE protections have been enabled for ARM since
a46c480e43cc61d0190569684f0a1e53a5da75b6 (Jun 4th 2012)

Change-Id: Idae6f93d37ddae605088867cd3029f12632456e1
06b63baedc769863f87ac0b789ac320b3cb0dc2a 22-Oct-2012 Andrew Hsieh <andrewhsieh@google.com> Add TARGET_GCC_VERSION

Default to 4.6, but can overwritten to something else in
prebuilts/gcc/$os/$arch/$arch-linux-android*-$ver

Change-Id: I16f99d642b8ff8e831d392261a0c536041107051
4f2f16da143fede94a1124ee79efccee78442b90 19-Oct-2012 Nick Kralevich <nnk@google.com> x86: add --warn-shared-textrel

Emit a warning when the static linker detects a shared library
has text relocations. Text relocations make it harder to
share pages across processes, and make it harder to use
certain memory protection features in, for example, SELinux.

This warning will turn into an error in a future change
(via --fatal-warnings)

Change-Id: I2d169c7ce3600d02e25591f3ec15aba363730298
References: http://www.akkadia.org/drepper/textrelocs.html
57ddcb1bbce7a980e677dfd212ce76229fe33f55 26-Sep-2012 Ying Wang <wangying@google.com> Support to build executables against the NDK

Use "LOCAL_SDK_VERSION := <number>" to build against the NDK when you
include $(BUILD_EXECUTABLE).
Cherry-picked from master.

Bug: 7170098
Change-Id: Ib35a294bd6aa4e969d46ecd8ebab8ca5d843e24b
91fd1231c3254bc9d0642e5a646b5657bdaedffa 26-Sep-2012 Ying Wang <wangying@google.com> Support to build executables against the NDK

Use "LOCAL_SDK_VERSION := <number>" to build against the NDK when you
include $(BUILD_EXECUTABLE).

Bug: 7170098
Change-Id: I4cebeae3355e79a4d2f2f5549ef0613ced77e3f0
c6ffc00b9fa7898564139558a025d865bac37a38 26-Sep-2012 Ying Wang <wangying@google.com> Support to build executables against the NDK

Use "LOCAL_SDK_VERSION := <number>" to build against the NDK when you
include $(BUILD_EXECUTABLE).

Bug: 7170098
Change-Id: I4cebeae3355e79a4d2f2f5549ef0613ced77e3f0
c2fb2391f459ad4ea2ce939dac02b4f4e33b9739 29-Aug-2012 Andrew Hsieh <andrewhsieh@google.com> Enable stack-protector for x86

Change-Id: I7a169075ca49ab831c37625d416c1d4b026bfec3
b205b461537ab2f935bdf84a3083b26360026f44 27-Aug-2012 Pavel Chupin <pavel.v.chupin@intel.com> Use gold linker on x86

Patch removes fallback -fuse-ld=bfd for x86 target and
--copy-dt-needed-entries which is not supported by gold linker.

Change-Id: Ie5603f98e3f2f9d4f81678c718e39b130a75d057
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
da4bf4251451d2da8883d636849b65fcc368a575 17-Aug-2012 Ying Wang <wangying@google.com> Don't include system/core/include/arch/<arch>/Android.mk for apps-only build.

Bug: 6994483
Change-Id: I76c4d96264cf94a79d59fdeb52bb37c07a9458dd
f116e9bc84411c4923ef42c3cdd4378de0610d1d 25-Jul-2012 Andrew Hsieh <andrewhsieh@google.com> Add -fuse-ld=bfd to x86 target

Add -fuse-ld=bfd because ld.gold doesn't support "--copy-dt-needed-entries".

Change-Id: I4e78967a076b3d093dd55366f7a54f0c9f9a45d1
bae121afcda8ffdca9cc03030f790121af251cea 25-Jul-2012 Andrew Hsieh <andrewhsieh@google.com> Add -fuse-ld=bfd to x86 target

Add -fuse-ld=bfd because ld.gold doesn't support "--copy-dt-needed-entries".

Change-Id: Ie6fa0a2ddfc57b650552c8cf0891f738a5be0dda
c3192b316474df4f01b635a50b8696f7821b781b 16-Feb-2012 Bruce Beare <bruce.j.beare@intel.com> x86: Clean up atom vs/ non-atom compiler flags, enable SSSE3

Change-Id: I0576514621affefea86a14d419f428761a60e067
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
52b63178d9e7da82301ecbc7d673154242b1c9a6 07-Feb-2012 Bruce Beare <bruce.j.beare@intel.com> gcc 4.6 requires --copy-dt-needed-entries

Change-Id: Icc62106e0f2e96f4cd871bb4b3c46c7ca83cabec
Author: Bruce Beare <bruce.j.beare@intel.com>
Reviewed-by: Lu, Hongjiu <hongjiu.lu@intel.com>
b968c85edf69025e7efc5886229f16982a9165f1 21-May-2012 Andrew Hsieh <andrewhsieh@google.com> Set generic_x86/BoardConfig.mk TARGET_ARCH_VARIANT to x86

Change TARGET_ARCH_VARIANT from x86-atom to x86, for the reason
that atom-specific instruciton like "movbe" isn't "generic" to
x86 Android devices and x86 host running emulator-x86, which may
crash non-atom host in VT because "movbe" isn't supported natively.

Also revert previous fix in TARGET_linux-x86.mk which conservatively
disable "movbe" across the board

Change-Id: Ief93a3585566ffae558fcdc29741e6213a048d7d
112a674798c58052ddce94418e34f3e5a084ed1a 18-May-2012 Andrew Hsieh <andrewhsieh@google.com> Add -mno-movbe to disable "movbe" instruction from code-gen

Intruction "movbe" (move data after swapping bytes) is only available in
Intel atom. Disable it for more general x86 devices and x86 hosts which
run emulator-x86. Although emulator-x86 can support "movbe", most of
the time we want to run emulator-x86 with VT support for speed (with KVM
in Linux, or HAXM in Windows/MacOSX). The presence of "movbe" can crash
emulator-x86 in VT because non-atom host doesn't have it natively.

Change-Id: I86e037900ddcb8d544f92b8d8464c8627347e560
b1a4e4e89e9989b292938c800d234ab1007b848c 16-May-2012 Ying Wang <wangying@google.com> Delete the misleading var TARGET_OUT_STATIC_LIBRARIES.

Which can be replaced by TARGET_OUT_INTERMEDIATE_LIBRARIES.

Change-Id: I965ff1ebe70fc3113c19e4896277c876dcedb6a5
402d7f3654cc3ad58b1df5d2ba12e908b57f861b 29-Apr-2012 H.J. Lu <hongjiu.lu@intel.com> Use i686-linux-android-4.6 for x86 build

Change-Id: Ibbb0a899f147013503d6830bb93050c5ae588539
Author: "H.J. Lu" <hongjiu.lu@intel.com>
ecb1a565849b40ab7aa45b7fe71e24e29a059376 09-May-2012 Nick Kralevich <nnk@google.com> x86: compile everything with relro / bind_now

Enable relro / bind_now when compiling Android applications.
This marks certain regions of memory as read-only after linking,
making memory corruption security vulnerabilities are harder
to exploit.

See:
* http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
* http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html

relro support has been enabled for ARM since 233d460f21d372f964f8078b8b0d5fd17af7c6b6.
This change enables it for x86.

Change-Id: Ib90704f2fecffcfdc3587607112804faa0e16385
61c37e7a4f929a79efb8abf4489bac0c1ffec8ff 20-Jan-2012 Kito Cheng <kito@0xlab.org> Update build rule for executable with PRIVATE_ALL_WHOLE_STATIC_LIBRARIES

Change-Id: I9ff53f51dcb57511a24765bdf6a61c000a7ce977

Signed-off-by: Kito Cheng <kito@0xlab.org>
a50ef1c12441d9eccfa75409c1392befaf2abed5 21-Apr-2012 Jean-Baptiste Queru <jbq@google.com> Switch to new locations of toolchains

Change-Id: I15a8be11b3d0f1985ffd97dd51a1af18e1ce7b67
ea91f0a40ee114588204b9912345d3d8305ee190 09-Jan-2012 Jean-Baptiste Queru <jbq@google.com> Reference x86 toolchain in its new location

Change-Id: I990b03107d1596a87a8d4cea6973735c60db4c64
c7a10ddd3115a40de10b34d7dbfe92134ce7ae8f 06-Jan-2012 Ying Wang <wangying@google.com> Include toolchain makefile based on the current config.

So we can have the same set of module names in different host arch
/ toolchain version combinations.

Change-Id: Iec66584bf3de92aedd71a59f9dbe74b6ed025b2e
6371da10f85471d9530e53367027078d305fe832 13-Dec-2011 David 'Digit' Turner <digit@google.com> x86: Refine the way we configure the x86 build.

This is the result of a recent conversation around the x86 ABI
and its relationship with how we build platform images. Briefly:

- We want to use feature-based macros like ARCH_X86_HAVE_$FEATURE
instead of relying on explicit compiler macros like -DUSE_$FEATURE

- We want to allow for other x86-based arch variants, e.g. if
someone wants to build Android for a CPU that doesn't support
the NDK x86 ABI. However, we need to ensure these are not
tagged compatible by mistake (see check at the end of TARGET_linux-x86.mk)

- There are several flags which use is dubious now that we have
a dedicated toolchain to build all the x86 stuff. Comment them
as 'to be considered for removal'. We'll do the proper checks
later.

Change-Id: I7768d7c34d73e274cbf4c09ae831b55280d6bb58
3343b27c534fb4ea238f2feaa0d9346840ee2f92 09-Dec-2011 Bruce Beare <bruce.j.beare@intel.com> x86: The default ATOM BSP flags need to be in sync with the NDK ABI

Change-Id: Ic741e1795c655ace1e33ae6708219f2708358090
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
d9d2e7a42c18a997ae47e4174713b5e2942044b5 04-Nov-2011 Nick Kralevich <nnk@google.com> x86: enable PIE for dynamically linked executables

Compile all x86 programs on Android with -fPIE and -pie. This enables
PIE (Position Independent Executables), which helps protect Android
applications from exploitation due to memory management bugs.

Note 1: PIE *static* executables are not supported at this time and
require additional linker changes.

Note 2: This change compliments 026a85b129e4540a4d8d40aace47aa0c69f609da,
which was the exact same change, except for ARM.

Testing: Rebuilt the tree completely from scratch, and verified
that the system boots and basic functionality works in the emulator.

Change-Id: I990064c37da3d857e663b27f31fee05f689a2824
aa1c321a58e3dcce72c144d7404ce7cef413586e 02-Aug-2011 Chih-Wei Huang <cwhuang@linux.org.tw> x86: remove obsolete comments

Change-Id: Ifb12892c17a50f85c7700d6413ea295a4dad7047
e33ba4c49ed461d608c65eb4e09d31ca81d167ff 12-Jul-2011 Jeff Brown <jeffbrown@google.com> Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: Ie814f4c8d3aa1e7cc7f5735822ab25542f36cf62
63152fd929265b73195492e64b29352e1d068287 08-Jul-2010 Bruce Beare <brucex.j.beare@intel.com> x86: Add proper gcc-4.4.3 x86 toolchain support.

This patch combines 7 AOSP patches to add proper support
to build x86 platform images using the 4.4.3 toolchain.

The Orig-Changed-Id fields below correspond to the change ids
of the original changes in the AOSP master branch history.

Define __ANDROID__ for x86 to be on par with ARM build requirements
Orig-Change-Id: I79c8f29af1f20b694f22a39f848216022809a5c6
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>

Enables x86-atom as a valid TARGET_ARCH_VARIANT for the simulator build.
Orig-Change-Id: Idbceb6c7d4117fbecd35e4261330e6405666189e

IA: enable SSE fpmath, Separate ARCH_VARIANT and ARCH makefile settings
Change-Id: I9ba661d68a3b375c21eb6b56442d8ba66a5369b3
Orig-Change-Id: I60b8121c92b39a60b513bc2496a1e0a21015c586
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>

x86: Use GCC 4.4.3
Orig-Change-Id: I083c1afcbb98cfeb48d7bcb7681e5c34db52e767
Author: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>

x86: the -mbionic flag is needed for IA builds.
Orig-Change-Id: I00c75f37d7ea46b9f8ad3d7b2ff7094477ff0916
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>

x86: Disable stack-protector until bionic is fixed
Orig-Change-Id: I2862de5c1b02490197704f4578a8a91d0565eef0
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>

Clean up of X86 build flags
Orig-Change-Id: Ife75c32cd49b32345712dee28fa5f2283069a90e
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
Author: Bruce Beare <bruce.j.beare@intel.com>

x86: Enable -fstack-protector
Orig-Change-Id: I1fe10159b7a29452ecfc6ba328164948cf9950d6
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
c101e27d547ee218337b2600e8158dedd0a064af 31-May-2011 Bruce Beare <bruce.j.beare@intel.com> Refactor Stripper. Allow a stripper other than SOSLIM to be specified

Orig-Change-Id: I61137f5bb123dc5f610af9928ed3debdf85ba74d
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
8f77c9ded3b64764ebe6f2cb1be45a2de0b7bec9 21-Jun-2011 Evgeniy Stepanov <eugenis@google.com> Add .gnu_debuglink when stripping DSOs.

This is used by debug tools to find symbols for the stripped binary.
Adds ~70 bytes to each DSO, ~25000 bytes total, which is about 0.01% of the
system image.

This change only affects -eng and -userdebug builds, and does not affect -user.

Change-Id: I0c92a9e09fbc97184dea66813923568cbcc2a3fe
3c22287c1b5560570173237acfd4e99d33266eb1 07-Jun-2011 Martijn Coenen <maco@google.com> Revert "x86: Enable -fstack-protector"

This reverts commit e397dcccbb1bb2ed52b4d6febaee8fb900154b3e.
e397dcccbb1bb2ed52b4d6febaee8fb900154b3e 04-May-2011 Bruce Beare <bruce.j.beare@intel.com> x86: Enable -fstack-protector

Change-Id: I1fe10159b7a29452ecfc6ba328164948cf9950d6
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
5812d7b4694d36b728ff142588861f82abffa49c 26-Apr-2011 Mark D Horn <mark.d.horn@intel.com> Clean up of X86 build flags

Review and clean-up of both compiler and linker flags
to ensure proper usage and consistency for images, toolchain,
SDK, and NDK.

Change-Id: Ife75c32cd49b32345712dee28fa5f2283069a90e
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
Author: Bruce Beare <bruce.j.beare@intel.com>
fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8 25-Apr-2011 Ying Wang <wangying@google.com> Add LOCAL_GROUP_STATIC_LIBRARIES

Set LOCAL_GROUP_STATIC_LIBRARIES := true to group the static libraries,
in case we need gcc flags "-Wl,--start-group" and "-Wl,--end-group" to
fix circular references.

Change-Id: I03c4901670112fcdd2bb0fe660b6924e5776fcf8
6ddd4ead924ac27c7e6655badeb6521dafd0a1ea 01-Apr-2011 Bruce Beare <bruce.j.beare@intel.com> x86: Disable stack-protector until bionic is fixed

Change-Id: I2862de5c1b02490197704f4578a8a91d0565eef0
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2e8283d9bcb3a4d92868b36f523e8dce2a851ddc 01-Feb-2011 Bruce Beare <bruce.j.beare@intel.com> x86: the -mbionic flag is needed for IA builds.

Change-Id: I00c75f37d7ea46b9f8ad3d7b2ff7094477ff0916
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
a17b91faa405acb3a162e9db4cf50b5addd231ae 27-Jan-2011 Bruce Beare <bruce.j.beare@intel.com> x86: Use GCC 4.4.3

Change-Id: I083c1afcbb98cfeb48d7bcb7681e5c34db52e767
Author: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
bd528a82a24e2230ea797ffc7d9a20d4d917747e 16-Feb-2011 Jeff Brown <jeffbrown@google.com> Build system tweaks for Valgrind.

Added LOCAL_NO_CRT to enable building executables that do not link
to the C runtime library.

Removed support for LOCAL_MODULE_SUBDIR since it was broken
and unused. (Was going to use it but ended up using LOCAL_MODULE_PATH
instead.)

Change-Id: Ifed4ffe17003d90370c711ea6606e2b75e841dee
703e7c6d50a5bddf0fb057a1a26618e2f7138c31 05-Feb-2011 Jeff Brown <jeffbrown@google.com> Build system tweaks for Valgrind.

Added LOCAL_NO_CRT to enable building executables that do not link
to the C runtime library.

Removed support for LOCAL_MODULE_SUBDIR since it was broken
and unused. (Was going to use it but ended up using LOCAL_MODULE_PATH
instead.)

Change-Id: I3b6f5ab7e5ae6aaa7119899adccece2b4ab1cbb3
3a7e4ccad9c910ac798a8c324f7718d137bd7692 28-Jan-2011 Ying Wang <wangying@google.com> Unify use of $(hide).

Change-Id: Ib7e17bbb4682caecce5812e63de872b676403d64
f5653d1cee10cd8995217e0831678a3610544b20 28-Jan-2011 Ying Wang <wangying@google.com> Regularize use of PRIVATE_CXX.

Change-Id: Ifc628c67b5fa142cec59187f89f2d39df81160b9
80e6cce93e36787be9123f9b5dc91da1a0d2f472 25-Jan-2011 Ying Wang <wangying@google.com> Correct misuse of target/host vars.

Change-Id: Ide41aeddc44ca05d85a36035c2d55ea453cfd216
ccec9c45d946d4a6fb3275469e39c4d7d203d9ab 14-Oct-2010 Bruce Beare <bruce.j.beare@intel.com> IA: enable SSE fpmath, Separate ARCH_VARIANT and ARCH makefile settings

Change-Id: I60b8121c92b39a60b513bc2496a1e0a21015c586
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
a4716b26187217ce8c4ad8f021080605a39943c6 02-Aug-2010 Johnnie Birch <johnnie.l.birch.jr@intel.com> Enables x86-atom as a valid TARGET_ARCH_VARIANT for the simulator build.

Change-Id: Idbceb6c7d4117fbecd35e4261330e6405666189e
2467fe24f0c447fcd59831ea1faecdf526889dea 26-Jul-2010 Chih-Wei Huang <cwhuang@linux.org.tw> Add atom optimization flags

To enable the optimization, set TARGET_ARCH_VARIANT := x86-atom.

Change-Id: I6b7798944bb8262bd83a76712419d8a77d3c34e9
1a08100fa9d92c25de32ba4d13fd3958bbcab894 13-Jul-2010 Ying Wang <wangying@google.com> Support to build native libraries with prebuilt NDK

Bug: http://b/issue?id=2811253
Change-Id: Iabd4ab8b3d7236dffe89f1939e1142e882944026
fe2ef85d5d41cfa28c9fe8ef86da3dbaaeec1aba 08-Jul-2010 Bruce Beare <brucex.j.beare@intel.com> Define __ANDROID__ for x86 to be on par with ARM build requirements

Change-Id: I79c8f29af1f20b694f22a39f848216022809a5c6
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
45ac4341515f7ff4d483cfb8e2fba8d3c2cb1f6e 24-Jun-2010 Bruce Beare <brucex.j.beare@intel.com> Refactor Stripper. Allow a stripper other than SOSLIM to be specified

Change-Id: I61137f5bb123dc5f610af9928ed3debdf85ba74d
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
99e087bc82c11d5909785acc7333176952a14032 08-Mar-2010 Andy McFadden <fadden@android.com> Added -lpthread to target LDFLAGS for sim-eng.

This adds "-lpthread" to TARGET_GLOBAL_LDFLAGS when TARGET_SIMULATOR
is true. This is much easier than inserting it into individual
makefiles as needed. Has no effect on other builds.

Should fix the sim-eng build breakage in libcameraservice.

Change-Id: I4dcd7d54b93d1be1622b8ce78a1662d28ca9f9f2
ef26218762945f6043d5c515ab601189ca7cc865 26-Feb-2010 Andy McFadden <fadden@android.com> Tweak default x86 target arch variant.

Simply set the arch variant for sim-eng to be "x86".
16e95bb99df4515ad37d73562bffb1a9fd21c162 24-Feb-2010 Andy McFadden <fadden@android.com> Build the target side of the simulator as 32-bit.

This detail got lost in my previous cleanup change 9b4a812.

Also add a comment explaining why the host side of the
simulator needs to be built in 64-bit (wxWidgets).

Change-Id: I2a867f7f80b43d53e73348b19f6ae834600295f9
9b4a81237be29b0aae50d1e370b63a07ea2b88b9 23-Feb-2010 Jean-Baptiste Queru <jbq@google.com> Get rid of $(combo_target)

The only OS-ARCH combo that would have benefited from it
is linux-x86, but it explicitly used separate configurations
for the HOST_ and TARGET_ side of things.

This makes is clear which files are related to the HOST_
configuration and which ones are related to the TARGET_
configuration, and expands $(combo_target) to the only
possible/reasonable value that it could have had in every
file.

This also cleans up the simulator, by moving it in a single
place in TARGET_linux_x86 (since the only part that's special
is to use HOST_ settings even when building TARGET_ modules).

Change-Id: I2420eeb8cfe539f5807ec99cb3177ffb9f2476d5