As of Android API level 16 tgkill is declared in the NDK version of
signal.h, which conflicts with the static definition found in
src/client/linux/handler/exception_handler.cc. This change removes
the static tgkill definition and replaces its use with sys_tgkill
from the linux syscall support library.
Bug:
Change-Id: Ic70addd8a064cfa36345d86b7e36409e2089e909
Reviewed-on: https://chromium-review.googlesource.com/738912
Reviewed-by: Mike Frysinger <vapier@chromium.org>
C++ doesn't allow skipping initialization with a goto. This means that
this code is illegal:
void func(bool b) {
if(b) goto END;
int value = 0; //error C2362 with /permissive-
//... value used here
END:
return;
}
Adding an extra scope makes the code legal. This problem is only
detected with /permissive- but now that compiling with this
switch is practical we might as well stay /permissive- clean:
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
Note that compiling /permissive- clean only works with the 10.0.16299.0
SDK which currently has other issues...
Bug: 773476
Change-Id: I54e64aaef46d70a817cf7da272f76d9ae5f6a6f7
Reviewed-on: https://chromium-review.googlesource.com/740287
Reviewed-by: Mark Mentovai <mark@chromium.org>
This hides the need to provide mutable C strings, and unifies
existing basename calls and variations in a single location.
Change-Id: Idfb449c47b1421f1a751efc3d7404f15f8b369ca
Reviewed-on: https://chromium-review.googlesource.com/725731
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
If the mapping for the main executable needed to be merged (for
example, if it was linked with lld and therefore contains an r mapping
followed by an r/x mapping), we would never reach the code that makes
it the first module. Handle that situation by moving that code into
a separate loop.
This fixes an issue where breakpad_unittests fails on Android devices
when linked with lld. It appears that the glibc dynamic loader
happens to always load executables (or at least the executables that
we create) at a lower address than DSOs, so we never hit this bug on
desktop Linux.
Testing: "make check" with both gold and lld as linker. Also
breakpad_unittests when patched into Chromium on Linux (lld) and
Android (gold and lld).
Bug: chromium:469376
Change-Id: I6329e4afd2f1bf44c25a6c3e684495e21dba83a6
Reviewed-on: https://chromium-review.googlesource.com/722286
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
memory.h shadows a system header which normally isn't a problem
because of the include paths in Breakpad, but the Firefox build
system winds up with src/common in the include path so we've had
a workaround for this for years. Renaming the file lets us get
rid of that workaround and shouldn't hurt anything.
Change-Id: I3b7c4239dc77f3b2b7cf2b572a0cad88cd7e8522
Reviewed-on: https://chromium-review.googlesource.com/723261
Reviewed-by: Mark Mentovai <mark@chromium.org>
Note that the current MicrodumpProcessor::Process implementation has a
bug due to the fact that it creates a local Microdump instance, and then
holds onto a pointer to the object returned by microdump.GetMemory()
which is destroyed when microdump goes out of scope. This CL fixes the
crash by making Microdump outlive MicrodumpProcessor, which is the same
pattern that Minidump/MinidumpProcessor uses.
Bug: google-breakpad:748
Change-Id: I554b46d309649cf404523722bd9ee39e17a10139
Reviewed-on: https://chromium-review.googlesource.com/720809
Reviewed-by: Primiano Tucci <primiano@chromium.org>
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
This exception_handler_no_mach does not use Mach for exception handling
so that clients such as tvOS and watchOS that do not support mach
messages can handle POSIX signals.
Change-Id: I4a4574e58834bc590e110e6ecd1825f8af1437a2
Reviewed-on: https://chromium-review.googlesource.com/714276
Reviewed-by: Mark Mentovai <mark@chromium.org>
When using traditional headers, sys/types.h is needed to define __u64
for sys/user.h. Previously, we thought this would be provided by
stdint.h, but it is not.
Change-Id: I0e648712f4ef1e303104a5264d3d2d0b218f5d45
Reviewed-on: https://chromium-review.googlesource.com/705267
Reviewed-by: Mark Mentovai <mark@chromium.org>
This prevents GYP from running on macOS, where it would produce a bunch
of pointless .xcodeproj directories for Windows libraries and tools that
could never possibly build. Those would pollute “git status” output and
other operations.
Check in a new default.xml generated from DEPS too. It doesn’t
correspond to this change, but I should have done this in 26b988681d.
Change-Id: I034a5b30d13fdcc14911fc1354504375752d6144
Reviewed-on: https://chromium-review.googlesource.com/688045
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Mostly int<->size_t implicit conversions.
Warning 4366 (The result of the unary '&' operator may be unaligned)
appears in minidump.cc:907, but I don't know why. It looks aligned to me.
Change-Id: I641942adc324f8f9832b20662083dc83498688a8
Reviewed-on: https://chromium-review.googlesource.com/637390
Reviewed-by: Mike Frysinger <vapier@chromium.org>
This was lost in afa9c52715, but it turns out that it’s still
necessary.
Bug: google-breakpad:733
Change-Id: I4e0e4e4d2e80c22df1ff6b82e471905773c940a3
Reviewed-on: https://chromium-review.googlesource.com/675732
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
1. testing.gyp is a gyp file, not a gypi file. It is only referenced in
“dependencies” sections. The gypi extension is used for files that are
included by an “includes” section.
2. Update paths in testing.gyp to reflect the real locations of
googletest and googlemock following their merge into a single
repository.
Change-Id: If9c356d93aa5ffda54af46fbed648baa2274dac6
Reviewed-on: https://chromium-review.googlesource.com/673404
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Chrome uses API 16 for 32-bit builds and API 21 for 64-bit builds. The
NDK’s <link.h> provides r_debug and link_map structure definitions only
at API 21 and above. Breakpad used a custom <link.h> to define these
structures only during 64-bit builds, which worked for Chrome’s
purposes. However, other consumers may wish to build Breakpad at
arbitrary API levels without regard to bitness. This alters Breakpad’s
custom <link.h> to correctly check the NDK API level rather than target
CPU bitness.
Likewise for <sys/user.h> on 32-bit x86, which provided a typedef for
user_fpxregs_struct to user_fxsr_struct. API 21 and above, as well as
the unified headers at any API level, always name the structure
user_fpxregs_struct.
Definitions for 64-bit ARM’s user_regs_struct and user_fpsimd_struct
have been removed from Breakpad’s copy of <sys/user.h>. The header
claims that these fallback definitions are only necessary with NDK r10,
which should no longer be in use even by Chromium, which now uses NDK
r12b. This removes the Chromium-specific ANDROID_NDK_MAJOR_VERSION macro
from use entirely.
Fixes https://stackoverflow.com/questions/44141159/ and b/65630828.
Bug: google-breakpad:733
Change-Id: I5841906297cd15b15ce48b73fd8332fd40afc9a0
Reviewed-on: https://chromium-review.googlesource.com/665740
Reviewed-by: Primiano Tucci <primiano@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This should have been done as part of 2b3be5
Bug: google-breakpad:746
Change-Id: I7eae33166cff238d72293e659abc90e724b365dc
Reviewed-on: https://chromium-review.googlesource.com/667102
Reviewed-by: Mike Frysinger <vapier@chromium.org>
The only code using gflags is google_crash_report_sender, and nothing
builds or tests that code currently. Switch it over to using system
versions of gflags so we can drop the local prebuilts. Tested local
builds by hand of the tool.
Bug: google-breakpad:360
Change-Id: I75d79b176468c948773079a54d87e70709feaf87
Reviewed-on: https://chromium-review.googlesource.com/665799
Reviewed-by: Mark Mentovai <mark@chromium.org>
This is turned on in the gyp file, but not our automake build. Include
it there to make sure we don't break it and keep coverage up.
Bug: google-breakpad:360
Change-Id: If54ff04e62641b1c4a550db8a09f5ac09ff8765c
Reviewed-on: https://chromium-review.googlesource.com/665798
Reviewed-by: Mark Mentovai <mark@chromium.org>
Nothing appears to be using this anymore, so stop bundling it.
Bug: google-breakpad:360
Change-Id: Id95b36994379da92f8ef2a81754b3da5f1f79cae
Reviewed-on: https://chromium-review.googlesource.com/665503
Reviewed-by: Mark Mentovai <mark@chromium.org>
Breakpad’s DWARF line table reader only understood line tables at the
level of DWARF 2. This wasn’t a problem because LLVM only produced line
tables at this level, even when generating DWARF 4. But LLVM would like
to output DWARF 4 line tables when generating DWARF 4, and Breakpad
needs to understand this format. (Meanwhile, it seems that GCC has used
DWARF 4 line tables with DWARF 4 output since 4.5.0, 2010-04-14.)
DWARF 3 line tables are fully compatible with DWARF 2 (assuming that
nothing needs “prologue end,” “epilogue begin,” or “isa”, and opcodes
related to these fields are properly skipped). DWARF 4 changes the line
number program header slightly to include a “maximum operations per
instruction” field. This field must be recognized, but can safely be
ignored (and assumed to be always 1) if VLIW architectures are not
supported (they aren’t). DWARF 4 also introduces a “discriminator”,
whose opcode can also be skipped if these values are not needed (they
shouldn’t be).
This recognizes the “maximum operations per instruction” field when
processing DWARF 4 line tables, but asserts that its value is 1 and
otherwise ignores it.
This is not compatible with VLIW architectures that set this field to a
value other than 1. Such architectures are irrelevant to Breakpad, and
mainline GCC and the proposed LLVM patch always set this field to 1.
There are other things that could be extracted from DWARF 3 and 4 line
tables that aren’t currently extracted (although these are currently
irrelevant to Breakpad too).
Bug: google-breakpad:745
Change-Id: I5bf9c0b1aa654849c9cce64e60682447d10be8ba
Reviewed-on: https://chromium-review.googlesource.com/663441
Reviewed-by: Mike Frysinger <vapier@chromium.org>
This picks up 3½ years of changes, but 4ff48eb18307 is really what’s
needed to un-break “gclient sync” in Breakpad.
e16906f6a2db android: Add support for multiarch builds
d49e6fec9631 Adds xcode-ninja flavor for Xcode wrapper projects
a336035b6d4e Avoid duplicating non-configuration settings when merging
configurations
4e05c3342e09 Revert "Fix None target type with Ninja build."
d4779eb1916a Use context manager to manage OS environment in tests
5a8a04430afd Add MASM settings support to msvs_settings
9a184eea4849 Make test/cxxflags use a user define instead of
__OPTIMIZE__
56a70c5641bb gyp: use all processors instead of hard-coded 8
5fd7ce16426b gyp: 1% faster by optimizing IsPathSections
bf9a0ad1a214 gyp: fix O(n^2) in dependency calculations
1cd602be60dd gyp: use a set() in DeepDependencies for less O(n^2)
dc866c743496 gyp: cache conditional ASTs for 3 CPU seconds (5%) gain
aec8079bd717 Remove the default setting for clcompile_cmd in msvs-ninja
1fa63533989a win: disable two flaky tests on gyp-win32
b5dd37303a71 Show ASM output file instead of input file, just like CC
and CXX. R=scottmg@chromium.org
8929839ae384 gyp: avoid copying items that will be deleted
6d8eda691886 gyp: isinstance -> type for another 1-5% save
9f14141afe73 gyp performance: Another fixed O(n^2) in dependency calcs
f983231492d1 Test handling of empty RULE_INPUT_DIRNAME and fix this on
android
09af1810a11f 1-5% faster gyp: Use a simpler deepcopy
4e6d425104c2 gyp: Optimize IsStrCanonicalNumber for common case
fc1e3d52ccc5 android: only emit multilib variables for target builds
152521d7f307 Revert "gyp: use all processors instead of hard-coded 8."
c2f33dbfd5b1 Append src path to compiler path retrieved from build
configuration
11b270c9c7d5 Make the command cache use the directory name as part of
the cache key
03c3c47fb42e Add xcode_ninja_target_pattern to xcode-ninja generator
63de31e166cc Silence pylint for the imported OrderedSet class
6e8e8eb49ad1 Prefer MSVS 2013 over MSVS 2010
147a8aebd6cc Remove pylintrc and enable pylint checks for the Xcode
generator
54538a15d434 android: set GYP_VAR_PREFIX as a local variable in
actions/rules
1a622e23d0c3 ninja/mac: Update libtool noise filter for Xcode 5
9acbe0c6f78a Don't exclude sources for 'none' targets
3efe68d8cf67 Fix link step when specifying CLANG_CXX_LIBRARY
a981c9389d12 ninja win: filter 64 bit idl processing, and confirm in
test
dbcdbde823d2 Fix for some rules not being run if their trigger is also
an action dependency
482fd5de5c82 Use relative path/dir msbuild variables to map $(InputDir)
and $(InputPath)
fb36c3fe0124 msvs: Revert r1920 and add a test for excluded idl
11e243c9fd62 Fix msvs-ninja OutputDirectory path
0ff4e1aa1964 android: Handle inputs with spaces inside make functions
41f4de6e6db4 gyp: use all processors instead of hard-coded 8
23d664144f92 Fix msvs-ninja clean build command / target
3917682a16d5 Add option for link concurrency
018065bdc1a6 Add unittest for 'AR' in 'make_global_settings'
0c9a7aa9446f Override the user's language settings during tests
e97dbe88f23b ninja win: Remove obsolete comment, and make sure cc/cxx
are always overridden
f6d25e9ca24a Use context manager to manage OS environment in tests
f9242383d34e Teach Ninja generator about 'AR' in 'make_global_settings'
5a0658e560c0 First crack at adding a GYP_GENERATOR for determining
various things
133926d7f47e Add unittest for 'LD' in 'make_global_settings'
822a998ac082 Remove unused parameters from test code
466a82eba30e Revise unittest for 'LD' in 'make_global_settings'
e35391e5b016 Revise unittest for 'AR' in 'make_global_settings'
4d45bd7473c8 Teach Ninja generator about 'LD'/'LD.host' specified in
'make_global_settings_ld'
8746d8100e41 Teach Ninja generator about 'AR.host' specified in
'make_global_settings'
dacdd3802559 [gyp][Android] Implement
TestGypAndroid.run_built_executable
63a1f78eb0ec ninja: Pass .so files outside of --start-group/--end-group
c5c01bbc72f4 msvs: ensure that failing actions make the build fail with
multiple actions
796b58cddb84 Makes analyzer strip off a leading path separator
1c4be478a439 Introduce '--no-duplicate-basename-check' option to disable
the check of duplicate basenames
867a23f4b596 Xcode: Add xcdatamodeld = wrapper.xcdatamodeld in
extension_map
d1e5ccaf05ba Fixes two bugs in analyzer
80e01de623ed Fixes bug in path handling of analyzer
b886dac6179e Add test files for
https://codereview.chromium.org/406523005/
39fd3e8ea1c8 ninja/win: Put common msvs_system_include_dirs into
%INCLUDE%
f536bafefff9 This CL adds support for extension in GYP
a48744759a8a ninja: Add support for 'ninja_use_console' in actions/rules
b95cbeb2b4a5 Changes analyzer to search for targets
cb818ae005d8 Enable custom suffixes for Mac bundles
39bb8956231c Avoid infinite recursion with identity variables
ac2684beed6e Updates analyzer to output to a file
cd5d655d509f Guard against configurations without 'xcode_settings'
6bd80e4bba1e Pull in relevant targets when using xcode-ninja
93303ec2a58c Currently I've special cased gyp* file modifications higher
in the stack. By that I mean if a gyp* file has been
modified I don't run analyze and assume everything has
changed. This change adds support for modification to gyp*
files. If a gyp* file has changed it assumes all targets in
the file are modified. Similarly if an included file has
been modified all targets in the file that did the include
are considered modified. Lastly, if one of the modified
files is specified on the command line via -I the I early
out and assume everything needs to be recompiled
474e6f6c6772 Style changes for analyzer __ -> _ and lots of single
newlines to double newlines
ed274e3ea588 Provide a way to suppress implicit MIDL generation rules
for actions
8432ec2cc86f Removes old way to specify files to look for
ce177a087448 Makes the analyzer output the set of targets needing a
build
b38e5f2f93fa ninja win: don't expect pdb to be generated when
GenerateDebugInformation: false
07465a390fff android: Make buildbot able to use a custom manifest
fa401a9913d3 Makes analyzer output names of all executable target types
43a3b907eb20 android: Support host multilib builds
02717b7ddda2 Support for custom NM/readelf binaries in your toolchain
6760f5b1a485 Makes matching of build files work when absolute
1ff523f4eccd Changes the ninja generator to output phony targets for
uninteresting targets
94b57d39a88c Changes ninja generator to only output empty names if not
already output
80a221d3ac20 Fix indentation for emacs and add missing keyword
911f177ec4ce android: Don't emit useless info into generated makefiles
46282cedf40f android: Add a way to override build system variables
ce6c5076aa98 Don't return unfound VS version, raise instead
0eedec84850c Don't run windows tests on other platforms
c5aaab5e438b Adds swift file support to xcode generation
397b1c684b0b I need this change to create Windows 8.1/Windows Phone 8.1
projects that compile modules that can be consumed by
Windows Store Applications (WinRT)
d77f8ea48f8c Revert r1978 and r1979
825a7599122b Revert "I need this change to create Windows 8.1/Windows
Phone 8.1 projects that compile modules that can be
consumed by Windows Store Applications (WinRT)."
0f464a10fcfd ninja win: Add support for 'CallingConvention'
f79c48344324 Added msvs_enable_winrt to enable creating Windows Store
compatible projects for .dlls that are consumed by WinRT
applications
05c509393b3f Add support for MIDL include directories
55e3f25dfe2a ninja: Don't rerun actions/rules based on where gyp was
invoked
2be082cb9513 Add Ninja support for MSVS $(TargetExt), $(TargetFileName)
and $(TargetPath) macros
9e65902d3601 gypd: update with required default variables
9202573e476f android: Build against NDK prebuilts, not system libraries
a61e86088492 Add (partial) support for assets catalog
a79c3560865f Simplify and optimize FindCycles
540e4b1e665a Stop checking for duplicate basenames
b13d8f243da1 Moves warning about invalid targets into 'invalid_targets'
in result
a83e5acab1a8 Add indentation offset guess for gyp emacs mode
723d919ae70c Switch to 2013 now that it's what's on the bots
f491c0b3aae9 msvs: Fix rule dependencies for VS2013
487c0b6ae8b4 Set ZERO_AR_DATE=1 when running libtool
cb9f256d75f5 ninja win: Don't return unfound VS version, raise instead
9c58d52d6b6c Fix dependency broken on mac when building FAT binaries
f1c42f73e4cc Revert r1998, it breaks iOS builds
addc5ea33ab3 win: Use the _winreg module for registry access
0131edea33bb ninja win: Add msvs emulation for FloatingPointModel
fb8a7bd65062 Add support for "else if" in gyp conditions
66b3c809f3d9 Mechanical changes to cleanup pylint presubmit checks
acf3295fe144 Add back support for /Gv now that gyp-win64 has VS2013
4621f4d44814 Initialize struct flock for AIX with O_LARGEFILE used by
Python
0a381c067483 ninja/win: Let link-wrapper convert /s to \s in the linker
command
fe00999dfaee android: don't try to handle suppress_wildcard
fa59ed0b9a01 Fixed Gyp Xcode generator for libraries with identical
names
d75685990507 Cache data for included files in the multiprocess load
codepath
ce7a555f1c58 win: Add support for VS2015
201a8c83eb33 Add support for iOS WatchKit apps in GYP
32ca1cd8e010 Add support for generating an Eclipse .classpath file
8c31354f5e0c Fix mixed line endings warning
4f4c7cb5a63e Add TestGypXcodeNinja to run tests against the xcode-ninja
generator
f1dc682b70a6 Fix: xcode-ninja should generate Xcode workspace into
generator_output
cdf037c1edc0 Fix: xcode-ninja should copy the product extension to the
wrapper project
82b08049cc0b Set ZERO_AR_DATE=1 when running libtool
8b69f7d23df5 Add support for generating an Eclipse .classpath file (bug
fix)
789a019a8320 Don't serialize linking for the make generator by default
194ec65a55ed Revert 2011 'Fixed Gyp Xcode generator for libraries with
identical names.'
91a89564da3d Add 'depfile' option to actions
3dde7bfb50a6 don't assume bash is installed
28384e55a5c8 msvs/ninja win: Fix support for
ImageHasSafeExceptionHandlers
adb7d24b9fc1 Revert "msvs/ninja win: Fix support for
ImageHasSafeExceptionHandlers"
b28bd7ddd143 win: 'EnableEnhancedInstructionSet': '5' now enables
/arch:AVX2
104e21ecf6f2 mac: Followup to ZERO_AR_DATE, touch the -o archive, rather
than expecting only one
4d7c139b1820 win: Add NoImportLibrary flag for ninja generator
67000714d51e Reland "msvs/ninja win: Fix support for
ImageHasSafeExceptionHandlers"
16f9f4566f5d msvs: Prefer x64 toolset if we are running on 64-bit
6194e32f7fcb Make msvs-ninja work for target-arch=x64
34640080d08a ninja/posix: Introduce support for arflags variable
7cd601835636 Updating gyp repo for git, preparing for cq
dd831fd86e7a Fix script url
a5bd08f28629 Adds the ability for 'copies' in Xcode project files to
specify the 'Code Sign on Copy' option
002ebe4420a3 Fixed version of https://codereview.chromium.org/748793002
50ab31edc847 Fix typo in ternary operator
4a9b712d5cb4 Fix gyp analyzer generator on mac
d9823985797f Convert plist and strings to binary for iOS
28c00336a403 Bump Xcode compatibility version from 45 (Xcode 2.4-3.1) to
46 (Xcode 3.2)
2cd9d0633c96 [ninja-xcode] Include action inputs in hybrid builds
d174d75bf69c Export generator flavor to gyp scripts
2b44e5987d5a Add missing identity variables to gypd generator
e1c8fcf74b68 Assert when source is an absolute path
c5859a298166 Migrate GYP docs over from the wiki
69dfb493a22f LLVM_LTO support for make / ninja
2889664b9fa8 Address scottmg comments from
https://codereview.chromium.org/1003273007/
2a5511bd901f Improve generated Makefile rules for rules several outputs
2f66a3f94953 Whitespace change to test the new GYP waterfalls
3601f26003c6 Make dump_dependency_json.py write <| list files to the
output directory rather than the source tree
8866260996c0 win: prefer amd64_x86 compiler on >= 2013, not just 2013
0bb67471bca0 Slightly better docs for git instead of svn
f34b9aa7c9d6 Remove the Android generator
9f594095c5b1 Added msvs_application_type_revision for winrt compilation
c0cf1f22eb42 Revert "Stop checking for duplicate basenames"
4dd5d3c614fb Update shared_library test after c0cf1f22eb
29e94a3285ee Avoid lint presubmit error in dump_dependency_json
08429da7955a Update cmake generator to handle Skia Android build
aa537916dcb5 msvs: Make sure stdout/stderr from rule commands get logged
fdc7b812f99e Makes analyzer always output static_libraries that have
changed
79de4031069f Fix gyp->make translation of rules with several outputs
9b2b25aececd Correct braces in input format reference doc
b4781fc38236 MSVS: Normalize paths against gyp directory
127b311bf61d Adds some debugging output to analyzer
fdcd8bc10c93 More debugging for analyzer
acfc10d29072 Revert "MSVS: Normalize paths against gyp directory."
5122240c5e5c Fix support for iOS today extensions on latest Xcode beta
ae276266d580 Make DependencyGraph.DeepDependencies() depth-first
25ed9ac4ac2a Do not remote duplicate entries from ldflags when
generating ninja files as it changes behavior
6ee91ad86598 Reduce DefaultConcurrentLinks from phys/4GB to phys/5GB
658f3a81995b Disable currently failing gyp tests on win to make the bots
green
479dacf7be5f Disable GYP tests currently failing on the Mac bot
36d99ff23099 Disable test/win/gyptest-link-defrelink.py
d6adc48df899 Fix the default tryserver lists in PRESUBMIT.py
81c2e5ff92af Added msvs_target_platform_version and
msvs_target_platform_minversion for winrt compilation
010fb9d696e7 msvs_emulation: Add support for StackReserveSize and
StackCommitSize
edccc7bad7da Analyzer didn't match correctly targets that defined path
to inputs with '.' relative path values. So let normalize
path before matching
bae26e800c7f Inject pylib first in the path. This ensures that test load
the version of pylib in this repo, not elsewhere on the
system
008cf1c04393 Improve error messages when <!(commands) fail
121d89dfcd4f Make RelativePath use abspath rather than realpath for the
'path' variable. This allows gyp to work correctly in
symlink-heavy environments. Basically, this is because gyp
paths need to be in a consistent tree, so we need to
compute a path to the target within the *stated* tree, even
if it is not the real underlying path to the target. The
'relative_path' variable does need to be resolved using
realpath, since gyp or the underlying build system might cd
to it before looking for the 'path' target
2b17e0b26a93 Fix paths with different seperators being compared in the
analyzer on Windows
5d01a8cda53b Revert "Make RelativePath use abspath rather than realpath
for the 'path' variable."
1f374df95de1 Make sure GYP supports compiling managed code
cf3170e30578 Update gyp LINK_COMMANDS_AIX to support both 32-bit and
64-bit files. * cmd_alink: Add -X32_64 option. *
cmd_alink_thin: Add -X32_64 option
01528c724483 Fallback to '.tbd' for system missing '.dylib'
7904ce96fd01 Make the ninja generator handle symlinked paths correctly
741b7f1d257b Add support for a CPPFLAGS_host environment variable, and
update the cflags test to verify it
265f495cc3a3 Fix infinite loop on empty variable name
c3d861c8bca4 ninja win: Suppress noisy messages from link.exe when LTCG
is enabled
8f3918d7408f Promote documents in md-pages branch
b3cef028a51a AIX's cp command does not support -af which is the default,
so use -RPf which achives something similar
427a0406159c Adding framework path mapping for 'copies' action in gyp
files
3f21260b4340 Change analyzer to search for build_targets from supplied
targets
e2e928bacd07 Add support for Xcode LastUpgradeCheck project attributes,
allowing suppression of Xcode project configuration
warnings
68f268008844 Add support for kernel-extensions in GYP
ae2d73840216 Set optional LastSwiftUpdateCheck to Xcode project
attributes
f2c3cfc3b1df win: Fix missing loadable_module dependency in ULDI mode
2c1e6cced235 Revert of e2e928bacd07fead99a18cb08d64cb24e131d3e5
0f5bae131e58 Change CMAKE_SOURCE_DIR to CMAKE_CURRENT_LIST_DIR
2dd620e10329 Attempt again to upstream Xcode project version warning
suppression, from 1416453003 and 1430573009, and rolled
back in 1423583004
f54bd199e717 Adds back lookup of 'all' targets
70fa8bbeb292 Changes semantics of analyzer
33b351b2eda8 Fix bug in analyze were empty invalid_targets was
incorrectly written
e1133480da78 Changes analyzer to include test_targets in compile_targets
f06a5a0e46ce Remove deprecated code path from analyzer.py
567d084f2cb1 Add support for NetBSD (OS = netbsd)
c385ad654b30 Copy files with `cp -pPRf` on OpenBSD
f4d65e35719c Generate response files out of the source tree with xcode &
xcode-ninja
e2313c02ad7b Fix CalculateGeneratorInputInfo for "xcode-ninja" generator
6fb8bd829f0c Derive default for ar_host from ar
70ee80e82bac Error checking to clarify SYSTEMROOT errors
863d9a4f4119 Make ninja work with XCTests for iOS
b85ad3e578da ninja: Correctly handle copies steps in sourceless
shared_library targets
b362bbfbc877 mac: Extend libtool filter to also match fat builds
2b086540aeed Peter Kasting <pkasting@chromium.org>
4ff48eb18307 Switch the dependencies to their Git mirror
54b7dfc03f74 mac ninja&make: Use xcrun instead of xcodebuild where
possible
9e2ceaef5352 GYP: Make GYP build deterministic
6f83895e9622 Stop copying deprecated ResourceRules.plist
aa0301be5a24 Allow converting resource plists to binary
87ac4d0e63fc Add limited support for Mac to CMake generator
7ab6f482e87a [iOS] Preserve global symbols when calling strip (-x) on
today extensions
32cb1709adc3 Add timestamp=none to codesign flags
57190fa27868 [iOS] Update today_extension link flags
18ce4ecf6cf2 [iOS] Set --auto-activate-custom-fonts for ibtool compile
a230124f3834 Avoid gyp_chromium failures when vcvarsall.bat was run
66bbdf4c6b45 Revert "[iOS] Set --auto-activate-custom-fonts for ibtool
compile."
5170bfd38fe7 [Mac/iOS] Add custom fonts, target device and minimum
deployment target to _CopyXIBFile
51383232066a Update Xcode emulation extra plist items
7d29c3de1f5e Revert "Update Xcode emulation extra plist items."
b25bbc1f942d Re-land update Xcode emulation extra plist items for Xcode
7.2
2f9ffdc96135 Support sdk_version of None
ed163ce233f7 Don't recompute environment for mac bundles unnecessarily
0cd47bf6960e Make login.keychain and 'Provisioning Profiles' symlinks
d84fed246cd4 Fix tests with Xcode 7
1950f6761bdf Xcode-ninja: Add excluded files to the project
sources_for_indexing.xcodeproj
61259d585ce9 ninja/win: Use qualified paths for precompiled headers
5874a3cf9bac Adjust pretty_gyp to align comments with the appropriate
braces
fbcb317c7513 ninja: Add target_rpath generator flag
133eaf70b372 Add support for iOS Frameworks with header maps
8e8c3178d9d2 Detect and warn on missing vcvarsall.bat
28340b46df65 Support DEVELOPER_DIR in gyp-ninja for mac
3fa0c6038873 [GN] Use hard-link if possible when copying to bundle
697933c2e3b3 Fix mac_tool.py copy-bundle-resource errors
4ec6c4e3a94b [iOS/OS X] Copy file instead of hard-linking them
f9ac7a9ba1c4 gyp-win-tool: Let LinkWrapper only transmogrify / when the
host platform is Windows
34d3fba9d167 gyp-win-tool: Fix regression from my last change
6ea68631cdab gyp-win-tool: Don't use shell=True on non-Windows hosts
db72e9fcf55b Fix header map nextPowerOf2 method
4cf07e8d6167 [ios-ninja] Support xctests in devices in release
e24c83726b72 Adds support for a new target spec: 'mac_xcuitest_bundle'.
This allows us to create UI testing bundles
02b145a1a4f4 Enabling /ZW (CompileAsWinRT) option for msvs
bce1c7793010 ninja/mac: Add horrible workaround for horrible Xcode 7.3
ld bug
c61b0b35c839 [gyp-ninja] Set simulator and device SDKROOT for iOS
35eafcd93951 Ignore more Xcode stderr logging information
bac4680ec9a5 Only call CopyStringsFile if convert_to_binary is False
e7079f0e0e14 Fix :rfc1034identifier when the value contains underscore
1f989f652a30 Complete PBXCopyFilesBuildPhase TODO in xcodeproj_file.py
93cc6e2c23e4 Make the ninja backend transitively check for C++ sources
to use the C++ compiler for linking
702ac58e4772 Add new target type called windows_driver. * Modify GYP to
set the PlatformToolset, the DriverType and the
TargetVersion * Add msvs_target_version configuration
5dc5a5b1718e fix common "NameError"s
920ee58c3d31 Hash intermediate file name to avoid ENAMETOOLONG
ef2f29a7311b msvs: Allow target platform version without WinRT
940a15ee3f1c Update shared library extension on AIX to .a
9733aa652da4 Set up a CQ for gyp
a7055b3989c1 Make Gerrit the default code review system for gyp
aae1e3efb507 CQ config: add gerrit CQAbility verifier
95da7665b1a3 [win-test] loosen win-driver-target-type test
eb296f67da07 [win] Add support for MS VS2017 (via Registry)
19495aa28282 Update test/no-cpp/gyptest-no-cpp
a94b02ec68fb Disable a bunch of tests on Mac
ae76d9198630 Clean up gyptest.py
b62d04ff85e6 win,ninja: ninja generator better on windows
8dc77241251e Disable flaky test/copies/gyptest-all under msvs
e8850240a433 Fix MSVC++ 32-on-32 builds after b62d04ff85e6
ffd524cefaad win ninja/make: Always use a native compiler executable
with MSVS 2017
a478c1ab51ea win: mkdir even when copying directory
d61a9397e668 mac_tool.py: Handle non-zero ibtool return code
4801a5331ae6 gyp: update xml string encoding conversion
324dd166b7c0 gyp: show descriptive Windows SDK detection error
Change-Id: I7b9e9bf9098469e94e657aa46ff7f6f7001a60df
Reviewed-on: https://chromium-review.googlesource.com/638090
Reviewed-by: Mike Frysinger <vapier@chromium.org>
This will allow us to provide the right information for webview renderer
crashes. At the moment the crash information for the browser process is
captured (from the debuggerd output) instead.
BUG=754715
Change-Id: I409546311b6e38fe1cf804097c18d7bb2a015d83
Reviewed-on: https://chromium-review.googlesource.com/612381
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Change I361d8812df7b2977fe2630289059d31c3c9a4cc3 increased the maximum
number of threads for minidump_stackwalk. This change also increases the
maximum number of regions.
Change-Id: I61efd4453df8809bd9cd657546d1d6727cd10281
Reviewed-on: https://chromium-review.googlesource.com/588384
Reviewed-by: Mike Frysinger <vapier@chromium.org>
The main motivation for this change is to handle very large stack
traces, normally the result of infinite recursion. This part is
actually fairly simple, relaxing a few self-imposed limits on how
many frames we can unwind and the max size for stack memory.
Relaxing these limits requires stricter and more consistent checks for
stack unwinding. There are a number of unwinding invariants that apply
to all the platforms:
1. stack pointer (and frame pointer) must be within the stack memory
(frame pointer, if preset, must point to the right frame too)
2. unwinding must monotonically increase SP
(except for the first frame unwind, this must be a strict increase)
3. Instruction pointer (return address) must point to a valid location
4. stack pointer (and frame pointer) must be appropriately aligned
This change is focused on 2), which is enough to guarantee that the
unwinding doesn't get stuck in an infinite loop.
1) is implicitly validated part of accessing the stack memory
(explicit checks might be nice though).
4) is ABI specific and while it may be valuable in catching suspicious
frames is not in the scope of this change.
3) is also an interesting check but thanks to just-in-time compilation
it's more complex than just calling
StackWalker::InstructionAddressSeemsValid()
and we don't want to drop parts of the callstack due to an overly
conservative check.
Bug: chromium:735989
Change-Id: I9aaba77c7fd028942d77c87d51b5e6f94e136ddd
Reviewed-on: https://chromium-review.googlesource.com/563771
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
1. Fixing ExceptionHandlerTest.FirstChanceHandlerRuns:
exit() is not an async-signal-safe function (http://man7.org/linux/man-pages/man7/signal-safety.7.html)
2. Fixing entry point signature in minidump_dump
Changed "const char* argv[]" to "char* argv[]" to match the standard entry point signature
3. Updating .gitignore to exclude unit test artifacts
Change-Id: I9662898d0bd97769621fb6476a720105821c60f0
Reviewed-on: https://chromium-review.googlesource.com/562356
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
When rolling this into Chrome, we got compile failures due to
DoNullPointerDereference being undefined but the new FirstChanceHandlerRuns
tests depends on this and was still defined.
The fix is to only enable the FirstChanceHandlerRuns test on non-asan builds.
Bug:
Change-Id: I5a3da0a21e2d0dd663ffc01137496d16905293a6
Reviewed-on: https://chromium-review.googlesource.com/544186
Reviewed-by: Mark Mentovai <mark@chromium.org>
This change adds the option for Breakpad hosts to register a callback
that gets the first chance to handle an exception. The handler will
return true if it handled the exception and false otherwise.
The primary use case is V8's trap-based bounds checking support for
WebAssembly.
Bug:
Change-Id: I5aa5b87d1229f1cef905a00404fa2027ee86be56
Reviewed-on: https://chromium-review.googlesource.com/509994
Reviewed-by: Mark Mentovai <mark@chromium.org>
This should hopefully fix the ARMv8/IT fix to work on clang & gcc.
BUG=chromium:686903
Change-Id: Ib99f05a0cd8df2cb2d393e2ff951d3109cdb5f5b
Reviewed-on: https://chromium-review.googlesource.com/538213
Reviewed-by: Mark Mentovai <mark@chromium.org>
The bfd and gold linkers create segments like this: r/x, r/w where
the r/x segment covers the start of the ELF file.
lld's segments look like this: r, r/x, r/w where the r segment covers
the start of the ELF file.
So we cannot rely on the location of the r/x to tell where the start
of the ELF is. But we can still rely on the r and r/x mappings being
adjacent. So what we do is when we see an r segment followed by an r/x,
merge the r into the r/x and claim that it is executable. This way,
the minidump writer will continue to see a single executable segment
covering the entire executable.
Testing: "make check" passes when breakpad is compiled with
lld compiled from trunk (requires bug fix from LLVM r303689).
Also patched change into chromium and tested these builds:
$ cat args.gn
is_chrome_branded = true
is_debug = false
is_official_build = true
use_lld = true
allow_posix_link_time_opt = false
is_cfi = false
$ cat args.gn
target_os = "android"
target_cpu = "arm"
is_debug = false
is_official_build = true
is_chrome_branded = true
With both builds breakpad_unittests passes and
chrome/chrome_modern_public_apk create good minidumps after navigating
to chrome://inducebrowsercrashforrealz (checked that minidump contains
stack trace entry for content::HandleDebugURL).
Bug: chromium:716484
Change-Id: Ib6ed3a8420b83acf4a5962843930fb006734cb95
Reviewed-on: https://chromium-review.googlesource.com/513610
Reviewed-by: Primiano Tucci <primiano@chromium.org>
It is legal for an ELF to contain multiple PT_NOTEs, and that is in
fact what lld's output looks like.
Testing: "make check" and breakpad_unittests when patched into
chromium.
Bug: chromium:716484
Change-Id: I01d3f8679961e2cb7e789d4007de8914c6af357d
Reviewed-on: https://chromium-review.googlesource.com/513512
Reviewed-by: Primiano Tucci <primiano@chromium.org>
Reviewed-by: Ted Mielczarek <ted@mielczarek.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
x86_64h has a different cpusubtype from x86_64. The h is for Haswell.
BUG=
Change-Id: Icf884e5699fe120c12d13aa57cd62db5b69a2ce6
Reviewed-on: https://chromium-review.googlesource.com/457171
Reviewed-by: Ted Mielczarek <ted@mielczarek.org>
The layout of Elf32_Nhdr and Elf64_Nhdr is the same, so remove
templating and code that extracts the elfclass from the ELF file.
Testing: "make check" and breakpad_unittests when patched into
chromium.
Bug: chromium:716484
Change-Id: I41442cfff48afc6ae1a5b604d22b67550a910376
Reviewed-on: https://chromium-review.googlesource.com/514450
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Also adds waits for all child processes spawned in MinidumpWriterTest.
Bug: 725754
Change-Id: I3248925993dede2c113ab1989b322a9d9c8f24bd
Reviewed-on: https://chromium-review.googlesource.com/513480
Reviewed-by: Mark Mentovai <mark@chromium.org>
Change a9fca58 made use of the O_CLOEXEC flag, which is not supported on
older Linux kernels. This change makes the use contingent on kernel
support.
Testing: I manually compiled breakpad on CentOS 5.8 running kernel
2.6.18-308.8.2.el5.centos.plusxen.
Bug: 730
Change-Id: I21dff928cfba3c156a56708913f65a0c7b5396a6
Reviewed-on: https://chromium-review.googlesource.com/498528
Reviewed-by: Mike Frysinger <vapier@chromium.org>
When writing a minidump on Linux, we called clone() in
linux/handler/exception_handler.cc with the CLONE_FILES flag. If the
parent process died while the child waited for the continuation signal,
the write side of the pipe 'fdes' stayed open in the child. The child
would not receive a SIGPIPE and would wait forever.
To fix this, we clone without CLONE_FILES and then close the
read-side of fdes in the master before the ptrace call. That way, if the
master dies, the child will receive a SIGPIPE and will die, too.
To test this I added a sleep() call before SendContinueSignalToChild()
and then killed the master, manually observing that the child would die,
too.
Bug: 728
Change-Id: Ifd72de835a34e7d9852ae1a362e707fdc6c96c7e
Reviewed-on: https://chromium-review.googlesource.com/464708
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Try to read the trace's registers by PTRACE_GETREGS if kernel doesn't support PTRACE_GETREGSET.
Bug:
Change-Id: I881f3a868789747ca217f22a93370c6914881f9a
Reviewed-on: https://chromium-review.googlesource.com/484479
Reviewed-by: Mike Frysinger <vapier@chromium.org>
This patch ensures that two crashes taken within the same second have
different minidump names. The random characters used in the minidump
filename are now read from /dev/urandom where possible or generated via
arc4random(). If neither is available we fall back to regular rand() but
mixing the address of an object to the current time when generating the
random seed to make it slightly less predictable.
BUG=681
Change-Id: I2e97454859ed386e199b2628d6b7e87e16481b75
Reviewed-on: https://chromium-review.googlesource.com/445784
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Because we can't determine the top of userspace mappable memory
directly, we rely on the fact that the process stack is allocated at the
top of the address space (minus some randomization). Anything after that
should not count as free space.
BUG=695382
Change-Id: I68453aac9732c2bd4b87236b234518068dec6640
Reviewed-on: https://chromium-review.googlesource.com/446100
Reviewed-by: Primiano Tucci <primiano@chromium.org>