mirror of
https://github.com/chromium/crashpad.git
synced 2025-01-14 01:08:01 +08:00
mac: Drop apple_cctools and getsectiondata()/getsegmentdata() wrappers
These are present on 10.7 and later, and were only provided for the benefit of older systems that probably aren’t relevant to Crashpad any longer. Change-Id: If9d7222f7af05020d0ff57d5d9ed06355fa14a48 Reviewed-on: https://chromium-review.googlesource.com/827686 Commit-Queue: Mark Mentovai <mark@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org>
This commit is contained in:
parent
10ff56eee5
commit
8742051c60
@ -26,15 +26,27 @@ config("compat_config") {
|
||||
}
|
||||
}
|
||||
|
||||
static_library("compat") {
|
||||
template("compat_target") {
|
||||
if (is_mac) {
|
||||
# There are no sources to compile, which doesn’t mix will with a
|
||||
# static_library.
|
||||
group(target_name) {
|
||||
forward_variables_from(invoker, "*")
|
||||
}
|
||||
} else {
|
||||
static_library(target_name) {
|
||||
forward_variables_from(invoker, "*")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compat_target("compat") {
|
||||
sources = []
|
||||
|
||||
if (is_mac) {
|
||||
sources += [
|
||||
"mac/AvailabilityMacros.h",
|
||||
"mac/kern/exc_resource.h",
|
||||
"mac/mach-o/getsect.cc",
|
||||
"mac/mach-o/getsect.h",
|
||||
"mac/mach-o/loader.h",
|
||||
"mac/mach/mach.h",
|
||||
"mac/sys/resource.h",
|
||||
@ -73,9 +85,6 @@ static_library("compat") {
|
||||
|
||||
deps = []
|
||||
|
||||
if (is_mac) {
|
||||
deps += [ "../third_party/apple_cctools" ]
|
||||
}
|
||||
if (is_win) {
|
||||
deps += [ "../third_party/getopt" ]
|
||||
}
|
||||
|
@ -36,8 +36,6 @@
|
||||
'mac/kern/exc_resource.h',
|
||||
'mac/mach/i386/thread_state.h',
|
||||
'mac/mach/mach.h',
|
||||
'mac/mach-o/getsect.cc',
|
||||
'mac/mach-o/getsect.h',
|
||||
'mac/mach-o/loader.h',
|
||||
'mac/sys/resource.h',
|
||||
'non_mac/mach/mach.h',
|
||||
@ -60,9 +58,6 @@
|
||||
],
|
||||
'conditions': [
|
||||
['OS=="mac"', {
|
||||
'dependencies': [
|
||||
'../third_party/apple_cctools/apple_cctools.gyp:apple_cctools',
|
||||
],
|
||||
'include_dirs': [
|
||||
'mac',
|
||||
],
|
||||
|
@ -1,107 +0,0 @@
|
||||
// Copyright 2014 The Crashpad Authors. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include <mach-o/getsect.h>
|
||||
|
||||
// This is only necessary when building code that might run on systems earlier
|
||||
// than 10.7. When building for 10.7 or later, getsectiondata() and
|
||||
// getsegmentdata() are always present in libmacho and made available through
|
||||
// libSystem. When building for earlier systems, custom definitions of
|
||||
// these functions are needed.
|
||||
//
|
||||
// This file checks the deployment target instead of the SDK. The deployment
|
||||
// target is correct because it identifies the earliest possible system that
|
||||
// the code being compiled is expected to run on.
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "third_party/apple_cctools/cctools/include/mach-o/getsect.h"
|
||||
|
||||
namespace {
|
||||
|
||||
// Returns a dlopen() handle to the same library that provides the
|
||||
// getsectbyname() function. getsectbyname() is always present in libmacho.
|
||||
// getsectiondata() and getsegmentdata() are not always present, but when they
|
||||
// are, they’re in the same library as getsectbyname(). If the library cannot
|
||||
// be found or a handle to it cannot be returned, returns nullptr.
|
||||
void* SystemLibMachOHandle() {
|
||||
Dl_info info;
|
||||
if (!dladdr(reinterpret_cast<void*>(getsectbyname), &info)) {
|
||||
return nullptr;
|
||||
}
|
||||
return dlopen(info.dli_fname, RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
|
||||
}
|
||||
|
||||
// Returns a function pointer to a function in libmacho based on a lookup of
|
||||
// that function by symbol name. Returns nullptr if libmacho cannot be found or
|
||||
// opened, or if the named symbol cannot be found in libmacho.
|
||||
void* LookUpSystemLibMachOSymbol(const char* symbol) {
|
||||
static void* dl_handle = SystemLibMachOHandle();
|
||||
if (!dl_handle) {
|
||||
return nullptr;
|
||||
}
|
||||
return dlsym(dl_handle, symbol);
|
||||
}
|
||||
|
||||
#ifndef __LP64__
|
||||
using MachHeader = mach_header;
|
||||
#else
|
||||
using MachHeader = mach_header_64;
|
||||
#endif
|
||||
|
||||
using GetSectionDataType =
|
||||
uint8_t*(*)(const MachHeader*, const char*, const char*, unsigned long*);
|
||||
using GetSegmentDataType =
|
||||
uint8_t*(*)(const MachHeader*, const char*, unsigned long*);
|
||||
|
||||
} // namespace
|
||||
|
||||
extern "C" {
|
||||
|
||||
// These implementations look up their functions in libmacho at run time. If the
|
||||
// system libmacho provides these functions as it normally does on OS X 10.7 and
|
||||
// later, the system’s versions are used directly. Otherwise, the versions in
|
||||
// third_party/apple_cctools are used, which are actually just copies of the
|
||||
// system’s functions.
|
||||
|
||||
uint8_t* getsectiondata(const MachHeader* mhp,
|
||||
const char* segname,
|
||||
const char* sectname,
|
||||
unsigned long* size) {
|
||||
static GetSectionDataType system_getsectiondata =
|
||||
reinterpret_cast<GetSectionDataType>(
|
||||
LookUpSystemLibMachOSymbol("getsectiondata"));
|
||||
if (system_getsectiondata) {
|
||||
return system_getsectiondata(mhp, segname, sectname, size);
|
||||
}
|
||||
return crashpad_getsectiondata(mhp, segname, sectname, size);
|
||||
}
|
||||
|
||||
uint8_t* getsegmentdata(
|
||||
const MachHeader* mhp, const char* segname, unsigned long* size) {
|
||||
static GetSegmentDataType system_getsegmentdata =
|
||||
reinterpret_cast<GetSegmentDataType>(
|
||||
LookUpSystemLibMachOSymbol("getsegmentdata"));
|
||||
if (system_getsegmentdata) {
|
||||
return system_getsegmentdata(mhp, segname, size);
|
||||
}
|
||||
return crashpad_getsegmentdata(mhp, segname, size);
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
@ -1,69 +0,0 @@
|
||||
// Copyright 2014 The Crashpad Authors. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CRASHPAD_COMPAT_MAC_MACH_O_GETSECT_H_
|
||||
#define CRASHPAD_COMPAT_MAC_MACH_O_GETSECT_H_
|
||||
|
||||
#include_next <mach-o/getsect.h>
|
||||
|
||||
#include <AvailabilityMacros.h>
|
||||
|
||||
// This file checks the SDK instead of the deployment target. The SDK is correct
|
||||
// because this file is concerned with providing compile-time declarations,
|
||||
// which are either present in a specific SDK version or not.
|
||||
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
|
||||
|
||||
#include <mach-o/loader.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Don’t use a type alias to account for the mach_header/mach_header_64
|
||||
// difference between the 32-bit and 64-bit versions of getsectiondata() and
|
||||
// getsegmentdata(). This file should be faithfully equivalent to the native
|
||||
// SDK, and adding type aliases here would pollute the namespace in a way that
|
||||
// the native SDK does not.
|
||||
|
||||
#if !defined(__LP64__)
|
||||
|
||||
uint8_t* getsectiondata(const struct mach_header* mhp,
|
||||
const char* segname,
|
||||
const char* sectname,
|
||||
unsigned long* size);
|
||||
|
||||
uint8_t* getsegmentdata(
|
||||
const struct mach_header* mhp, const char* segname, unsigned long* size);
|
||||
|
||||
#else
|
||||
|
||||
uint8_t* getsectiondata(const struct mach_header_64* mhp,
|
||||
const char* segname,
|
||||
const char* sectname,
|
||||
unsigned long* size);
|
||||
|
||||
uint8_t* getsegmentdata(
|
||||
const struct mach_header_64* mhp, const char* segname, unsigned long* size);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
|
||||
|
||||
#endif // CRASHPAD_COMPAT_MAC_MACH_O_GETSECT_H_
|
25
third_party/apple_cctools/BUILD.gn
vendored
25
third_party/apple_cctools/BUILD.gn
vendored
@ -1,25 +0,0 @@
|
||||
# Copyright 2015 The Crashpad Authors. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
config("apple_cctools_config") {
|
||||
include_dirs = [ "../.." ]
|
||||
}
|
||||
|
||||
source_set("apple_cctools") {
|
||||
sources = [
|
||||
"cctools/include/mach-o/getsect.h",
|
||||
"cctools/libmacho/getsecbyname.c",
|
||||
]
|
||||
public_configs = [ ":apple_cctools_config" ]
|
||||
}
|
44
third_party/apple_cctools/README.crashpad
vendored
44
third_party/apple_cctools/README.crashpad
vendored
@ -1,44 +0,0 @@
|
||||
Name: Apple cctools
|
||||
Short Name: cctools
|
||||
URL: https://opensource.apple.com/source/cctools/
|
||||
URL: https://opensource.apple.com/tarballs/cctools/
|
||||
Version: 855 (from Xcode 5.1)
|
||||
License: APSL 2.0
|
||||
License File: cctools/APPLE_LICENSE
|
||||
Security Critical: no
|
||||
|
||||
Description:
|
||||
cctools contains portions of Apple’s compiler toolchain, including common tools
|
||||
like ar, as, nm, strings, and strip, and platform-specific tools like lipo and
|
||||
otool. It also contains support libraries such as libmacho, which contains
|
||||
interfaces for dealing with Mach-O images.
|
||||
|
||||
libmacho is available on macOS as a runtime library that is part of libSystem,
|
||||
but versions of libmacho included in operating system versions prior to Mac OS X
|
||||
10.7 did not include the getsectiondata() and getsegmentdata() functions. This
|
||||
library is present here to provide implementations of these functions for
|
||||
systems that do not have them.
|
||||
|
||||
Crashpad code is not expected to use this library directly. It should use the
|
||||
getsectiondata() and getsegmentdata() wrappers in compat, which will use
|
||||
system-provided implementations if present at runtime, and will otherwise fall
|
||||
back to the implementations in this library.
|
||||
|
||||
Local Modifications:
|
||||
- Only cctools/APPLE_LICENSE, cctools/libmacho/getsecbyname.c, and
|
||||
cctools/include/mach-o/getsect.h are included.
|
||||
- getsecbyname.c and getsect.h have been trimmed to remove everything other
|
||||
than the getsectiondata() and getsegmentdata() functions. The #include guards
|
||||
in getsect.h have been made unique.
|
||||
- getsectiondata() is renamed to crashpad_getsectiondata(), and
|
||||
getsegmentdata() is renamed to crashpad_getsegmentdata().
|
||||
- These functions are only declared and defined if the deployment target is
|
||||
older than 10.7. This library is not needed otherwise, because in that case,
|
||||
the system always provides implementations in runtime libraries.
|
||||
- Originally, each of these two functions were implemented twice: once for
|
||||
32-bit code and once for 64-bit code. Aside from the types and constants
|
||||
used, the two implementations were completely identical. This has been
|
||||
simplified to have a shared implementation that relies on local typedefs and
|
||||
constants being defined properly. This change was only made in
|
||||
getsecbyname.c. getsect.h was not changed to avoid leaking new definitions
|
||||
beyond this header.
|
34
third_party/apple_cctools/apple_cctools.gyp
vendored
34
third_party/apple_cctools/apple_cctools.gyp
vendored
@ -1,34 +0,0 @@
|
||||
# Copyright 2014 The Crashpad Authors. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
{
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'apple_cctools',
|
||||
'type': 'static_library',
|
||||
'include_dirs': [
|
||||
'../..',
|
||||
],
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': [
|
||||
'../..',
|
||||
],
|
||||
},
|
||||
'sources': [
|
||||
'cctools/include/mach-o/getsect.h',
|
||||
'cctools/libmacho/getsecbyname.c',
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
367
third_party/apple_cctools/cctools/APPLE_LICENSE
vendored
367
third_party/apple_cctools/cctools/APPLE_LICENSE
vendored
@ -1,367 +0,0 @@
|
||||
APPLE PUBLIC SOURCE LICENSE
|
||||
Version 2.0 - August 6, 2003
|
||||
|
||||
Please read this License carefully before downloading this software.
|
||||
By downloading or using this software, you are agreeing to be bound by
|
||||
the terms of this License. If you do not or cannot agree to the terms
|
||||
of this License, please do not download or use the software.
|
||||
|
||||
1. General; Definitions. This License applies to any program or other
|
||||
work which Apple Computer, Inc. ("Apple") makes publicly available and
|
||||
which contains a notice placed by Apple identifying such program or
|
||||
work as "Original Code" and stating that it is subject to the terms of
|
||||
this Apple Public Source License version 2.0 ("License"). As used in
|
||||
this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is
|
||||
the grantor of rights, (i) claims of patents that are now or hereafter
|
||||
acquired, owned by or assigned to Apple and (ii) that cover subject
|
||||
matter contained in the Original Code, but only to the extent
|
||||
necessary to use, reproduce and/or distribute the Original Code
|
||||
without infringement; and (b) in the case where You are the grantor of
|
||||
rights, (i) claims of patents that are now or hereafter acquired,
|
||||
owned by or assigned to You and (ii) that cover subject matter in Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Contributor" means any person or entity that creates or
|
||||
contributes to the creation of Modifications.
|
||||
|
||||
1.3 "Covered Code" means the Original Code, Modifications, the
|
||||
combination of Original Code and any Modifications, and/or any
|
||||
respective portions thereof.
|
||||
|
||||
1.4 "Externally Deploy" means: (a) to sublicense, distribute or
|
||||
otherwise make Covered Code available, directly or indirectly, to
|
||||
anyone other than You; and/or (b) to use Covered Code, alone or as
|
||||
part of a Larger Work, in any way to provide a service, including but
|
||||
not limited to delivery of content, through electronic communication
|
||||
with a client other than You.
|
||||
|
||||
1.5 "Larger Work" means a work which combines Covered Code or portions
|
||||
thereof with code not governed by the terms of this License.
|
||||
|
||||
1.6 "Modifications" mean any addition to, deletion from, and/or change
|
||||
to, the substance and/or structure of the Original Code, any previous
|
||||
Modifications, the combination of Original Code and any previous
|
||||
Modifications, and/or any respective portions thereof. When code is
|
||||
released as a series of files, a Modification is: (a) any addition to
|
||||
or deletion from the contents of a file containing Covered Code;
|
||||
and/or (b) any new file or other representation of computer program
|
||||
statements that contains any part of Covered Code.
|
||||
|
||||
1.7 "Original Code" means (a) the Source Code of a program or other
|
||||
work as originally made available by Apple under this License,
|
||||
including the Source Code of any updates or upgrades to such programs
|
||||
or works made available by Apple under this License, and that has been
|
||||
expressly identified by Apple as such in the header file(s) of such
|
||||
work; and (b) the object code compiled from such Source Code and
|
||||
originally made available by Apple under this License.
|
||||
|
||||
1.8 "Source Code" means the human readable form of a program or other
|
||||
work that is suitable for making modifications to it, including all
|
||||
modules it contains, plus any associated interface definition files,
|
||||
scripts used to control compilation and installation of an executable
|
||||
(object code).
|
||||
|
||||
1.9 "You" or "Your" means an individual or a legal entity exercising
|
||||
rights under this License. For legal entities, "You" or "Your"
|
||||
includes any entity which controls, is controlled by, or is under
|
||||
common control with, You, where "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of fifty percent
|
||||
(50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms
|
||||
and conditions of this License, Apple hereby grants You, effective on
|
||||
the date You accept this License and download the Original Code, a
|
||||
world-wide, royalty-free, non-exclusive license, to the extent of
|
||||
Apple's Applicable Patent Rights and copyrights covering the Original
|
||||
Code, to do the following:
|
||||
|
||||
2.1 Unmodified Code. You may use, reproduce, display, perform,
|
||||
internally distribute within Your organization, and Externally Deploy
|
||||
verbatim, unmodified copies of the Original Code, for commercial or
|
||||
non-commercial purposes, provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the
|
||||
copyright and other proprietary notices and disclaimers of Apple as
|
||||
they appear in the Original Code, and keep intact all notices in the
|
||||
Original Code that refer to this License; and
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source
|
||||
Code of Covered Code and documentation You distribute or Externally
|
||||
Deploy, and You may not offer or impose any terms on such Source Code
|
||||
that alter or restrict this License or the recipients' rights
|
||||
hereunder, except as permitted under Section 6.
|
||||
|
||||
2.2 Modified Code. You may modify Covered Code and use, reproduce,
|
||||
display, perform, internally distribute within Your organization, and
|
||||
Externally Deploy Your Modifications and Covered Code, for commercial
|
||||
or non-commercial purposes, provided that in each instance You also
|
||||
meet all of these conditions:
|
||||
|
||||
(a) You must satisfy all the conditions of Section 2.1 with respect to
|
||||
the Source Code of the Covered Code;
|
||||
|
||||
(b) You must duplicate, to the extent it does not already exist, the
|
||||
notice in Exhibit A in each file of the Source Code of all Your
|
||||
Modifications, and cause the modified files to carry prominent notices
|
||||
stating that You changed the files and the date of any change; and
|
||||
|
||||
(c) If You Externally Deploy Your Modifications, You must make
|
||||
Source Code of all Your Externally Deployed Modifications either
|
||||
available to those to whom You have Externally Deployed Your
|
||||
Modifications, or publicly available. Source Code of Your Externally
|
||||
Deployed Modifications must be released under the terms set forth in
|
||||
this License, including the license grants set forth in Section 3
|
||||
below, for as long as you Externally Deploy the Covered Code or twelve
|
||||
(12) months from the date of initial External Deployment, whichever is
|
||||
longer. You should preferably distribute the Source Code of Your
|
||||
Externally Deployed Modifications electronically (e.g. download from a
|
||||
web site).
|
||||
|
||||
2.3 Distribution of Executable Versions. In addition, if You
|
||||
Externally Deploy Covered Code (Original Code and/or Modifications) in
|
||||
object code, executable form only, You must include a prominent
|
||||
notice, in the code itself as well as in related documentation,
|
||||
stating that Source Code of the Covered Code is available under the
|
||||
terms of this License with information on how and where to obtain such
|
||||
Source Code.
|
||||
|
||||
2.4 Third Party Rights. You expressly acknowledge and agree that
|
||||
although Apple and each Contributor grants the licenses to their
|
||||
respective portions of the Covered Code set forth herein, no
|
||||
assurances are provided by Apple or any Contributor that the Covered
|
||||
Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Apple and each Contributor disclaim any
|
||||
liability to You for claims brought by any other entity based on
|
||||
infringement of intellectual property rights or otherwise. As a
|
||||
condition to exercising the rights and licenses granted hereunder, You
|
||||
hereby assume sole responsibility to secure any other intellectual
|
||||
property rights needed, if any. For example, if a third party patent
|
||||
license is required to allow You to distribute the Covered Code, it is
|
||||
Your responsibility to acquire that license before distributing the
|
||||
Covered Code.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the
|
||||
licenses granted to You under this License, You hereby grant to any
|
||||
person or entity receiving or distributing Covered Code under this
|
||||
License a non-exclusive, royalty-free, perpetual, irrevocable license,
|
||||
under Your Applicable Patent Rights and other intellectual property
|
||||
rights (other than patent) owned or controlled by You, to use,
|
||||
reproduce, display, perform, modify, sublicense, distribute and
|
||||
Externally Deploy Your Modifications of the same scope and extent as
|
||||
Apple's licenses under Sections 2.1 and 2.2 above.
|
||||
|
||||
4. Larger Works. You may create a Larger Work by combining Covered
|
||||
Code with other code not governed by the terms of this License and
|
||||
distribute the Larger Work as a single product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for
|
||||
the Covered Code or any portion thereof.
|
||||
|
||||
5. Limitations on Patent License. Except as expressly stated in
|
||||
Section 2, no other patent rights, express or implied, are granted by
|
||||
Apple herein. Modifications and/or Larger Works may require additional
|
||||
patent licenses from Apple which Apple may grant in its sole
|
||||
discretion.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for,
|
||||
warranty, support, indemnity or liability obligations and/or other
|
||||
rights consistent with the scope of the license granted herein
|
||||
("Additional Terms") to one or more recipients of Covered Code.
|
||||
However, You may do so only on Your own behalf and as Your sole
|
||||
responsibility, and not on behalf of Apple or any Contributor. You
|
||||
must obtain the recipient's agreement that any such Additional Terms
|
||||
are offered by You alone, and You hereby agree to indemnify, defend
|
||||
and hold Apple and every Contributor harmless for any liability
|
||||
incurred by or claims asserted against Apple or such Contributor by
|
||||
reason of any such Additional Terms.
|
||||
|
||||
7. Versions of the License. Apple may publish revised and/or new
|
||||
versions of this License from time to time. Each version will be given
|
||||
a distinguishing version number. Once Original Code has been published
|
||||
under a particular version of this License, You may continue to use it
|
||||
under the terms of that version. You may also choose to use such
|
||||
Original Code under the terms of any subsequent version of this
|
||||
License published by Apple. No one other than Apple has the right to
|
||||
modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in
|
||||
part pre-release, untested, or not fully tested works. The Covered
|
||||
Code may contain errors that could cause failures or loss of data, and
|
||||
may be incomplete or contain inaccuracies. You expressly acknowledge
|
||||
and agree that use of the Covered Code, or any portion thereof, is at
|
||||
Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND
|
||||
WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND
|
||||
APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE
|
||||
PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
|
||||
ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF
|
||||
MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR
|
||||
PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD
|
||||
PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST
|
||||
INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE
|
||||
FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS,
|
||||
THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO
|
||||
ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY.
|
||||
You acknowledge that the Covered Code is not intended for use in the
|
||||
operation of nuclear facilities, aircraft navigation, communication
|
||||
systems, or air traffic control machines in which case the failure of
|
||||
the Covered Code could lead to death, personal injury, or severe
|
||||
physical or environmental damage.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO
|
||||
EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL,
|
||||
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING
|
||||
TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR
|
||||
ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY,
|
||||
TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF
|
||||
APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY
|
||||
REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF
|
||||
INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY
|
||||
TO YOU. In no event shall Apple's total liability to You for all
|
||||
damages (other than as may be required by applicable law) under this
|
||||
License exceed the amount of fifty dollars ($50.00).
|
||||
|
||||
10. Trademarks. This License does not grant any rights to use the
|
||||
trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS",
|
||||
"QuickTime", "QuickTime Streaming Server" or any other trademarks,
|
||||
service marks, logos or trade names belonging to Apple (collectively
|
||||
"Apple Marks") or to any trademark, service mark, logo or trade name
|
||||
belonging to any Contributor. You agree not to use any Apple Marks in
|
||||
or as part of the name of products derived from the Original Code or
|
||||
to endorse or promote products derived from the Original Code other
|
||||
than as expressly permitted by and in strict compliance at all times
|
||||
with Apple's third party trademark usage guidelines which are posted
|
||||
at http://www.apple.com/legal/guidelinesfor3rdparties.html.
|
||||
|
||||
11. Ownership. Subject to the licenses granted under this License,
|
||||
each Contributor retains all rights, title and interest in and to any
|
||||
Modifications made by such Contributor. Apple retains all rights,
|
||||
title and interest in and to the Original Code and any Modifications
|
||||
made by or on behalf of Apple ("Apple Modifications"), and such Apple
|
||||
Modifications will not be automatically subject to this License. Apple
|
||||
may, at its sole discretion, choose to license such Apple
|
||||
Modifications under this License, or on different terms from those
|
||||
contained in this License or may choose not to license them at all.
|
||||
|
||||
12. Termination.
|
||||
|
||||
12.1 Termination. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Apple if You fail to comply with
|
||||
any term(s) of this License and fail to cure such breach within 30
|
||||
days of becoming aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section
|
||||
13.5(b); or
|
||||
|
||||
(c) automatically without notice from Apple if You, at any time during
|
||||
the term of this License, commence an action for patent infringement
|
||||
against Apple; provided that Apple did not first commence
|
||||
an action for patent infringement against You in that instance.
|
||||
|
||||
12.2 Effect of Termination. Upon termination, You agree to immediately
|
||||
stop any further use, reproduction, modification, sublicensing and
|
||||
distribution of the Covered Code. All sublicenses to the Covered Code
|
||||
which have been properly granted prior to termination shall survive
|
||||
any termination of this License. Provisions which, by their nature,
|
||||
should remain in effect beyond the termination of this License shall
|
||||
survive, including but not limited to Sections 3, 5, 8, 9, 10, 11,
|
||||
12.2 and 13. No party will be liable to any other for compensation,
|
||||
indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this
|
||||
License will be without prejudice to any other right or remedy of
|
||||
any party.
|
||||
|
||||
13. Miscellaneous.
|
||||
|
||||
13.1 Government End Users. The Covered Code is a "commercial item" as
|
||||
defined in FAR 2.101. Government software and technical data rights in
|
||||
the Covered Code include only those rights customarily provided to the
|
||||
public as defined in this License. This customary commercial license
|
||||
in technical data and software is provided in accordance with FAR
|
||||
12.211 (Technical Data) and 12.212 (Computer Software) and, for
|
||||
Department of Defense purchases, DFAR 252.227-7015 (Technical Data --
|
||||
Commercial Items) and 227.7202-3 (Rights in Commercial Computer
|
||||
Software or Computer Software Documentation). Accordingly, all U.S.
|
||||
Government End Users acquire Covered Code with only those rights set
|
||||
forth herein.
|
||||
|
||||
13.2 Relationship of Parties. This License will not be construed as
|
||||
creating an agency, partnership, joint venture or any other form of
|
||||
legal association between or among You, Apple or any Contributor, and
|
||||
You will not represent to the contrary, whether expressly, by
|
||||
implication, appearance or otherwise.
|
||||
|
||||
13.3 Independent Development. Nothing in this License will impair
|
||||
Apple's right to acquire, license, develop, have others develop for
|
||||
it, market and/or distribute technology or products that perform the
|
||||
same or similar functions as, or otherwise compete with,
|
||||
Modifications, Larger Works, technology or products that You may
|
||||
develop, produce, market or distribute.
|
||||
|
||||
13.4 Waiver; Construction. Failure by Apple or any Contributor to
|
||||
enforce any provision of this License will not be deemed a waiver of
|
||||
future enforcement of that or any other provision. Any law or
|
||||
regulation which provides that the language of a contract shall be
|
||||
construed against the drafter will not apply to this License.
|
||||
|
||||
13.5 Severability. (a) If for any reason a court of competent
|
||||
jurisdiction finds any provision of this License, or portion thereof,
|
||||
to be unenforceable, that provision of the License will be enforced to
|
||||
the maximum extent permissible so as to effect the economic benefits
|
||||
and intent of the parties, and the remainder of this License will
|
||||
continue in full force and effect. (b) Notwithstanding the foregoing,
|
||||
if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the
|
||||
enforceability of either of those Sections, this License will
|
||||
immediately terminate and You must immediately discontinue any use of
|
||||
the Covered Code and destroy all copies of it that are in your
|
||||
possession or control.
|
||||
|
||||
13.6 Dispute Resolution. Any litigation or other dispute resolution
|
||||
between You and Apple relating to this License shall take place in the
|
||||
Northern District of California, and You and Apple hereby consent to
|
||||
the personal jurisdiction of, and venue in, the state and federal
|
||||
courts within that District with respect to this License. The
|
||||
application of the United Nations Convention on Contracts for the
|
||||
International Sale of Goods is expressly excluded.
|
||||
|
||||
13.7 Entire Agreement; Governing Law. This License constitutes the
|
||||
entire agreement between the parties with respect to the subject
|
||||
matter hereof. This License shall be governed by the laws of the
|
||||
United States and the State of California, except that body of
|
||||
California law concerning conflicts of law.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following
|
||||
clause applies: The parties hereby confirm that they have requested
|
||||
that this License and all related documents be drafted in English. Les
|
||||
parties ont exige que le present contrat et tous les documents
|
||||
connexes soient rediges en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights
|
||||
Reserved.
|
||||
|
||||
This file contains Original Code and/or Modifications of Original Code
|
||||
as defined in and that are subject to the Apple Public Source License
|
||||
Version 2.0 (the 'License'). You may not use this file except in
|
||||
compliance with the License. Please obtain a copy of the License at
|
||||
http://www.opensource.apple.com/apsl/ and read it before using this
|
||||
file.
|
||||
|
||||
The Original Code and all software distributed under the License are
|
||||
distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
Please see the License for the specific language governing rights and
|
||||
limitations under the License."
|
@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_START@
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original Code
|
||||
* as defined in and that are subject to the Apple Public Source License
|
||||
* Version 2.0 (the 'License'). You may not use this file except in
|
||||
* compliance with the License. Please obtain a copy of the License at
|
||||
* http://www.opensource.apple.com/apsl/ and read it before using this
|
||||
* file.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef CRASHPAD_THIRD_PARTY_APPLE_CCTOOLS_CCTOOLS_INCLUDE_MACH_O_GETSECT_H_
|
||||
#define CRASHPAD_THIRD_PARTY_APPLE_CCTOOLS_CCTOOLS_INCLUDE_MACH_O_GETSECT_H_
|
||||
|
||||
#include <AvailabilityMacros.h>
|
||||
|
||||
#if !defined(MAC_OS_X_VERSION_10_7) || \
|
||||
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
||||
|
||||
#include <stdint.h>
|
||||
#include <mach-o/loader.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#ifndef __LP64__
|
||||
/*
|
||||
* Runtime interfaces for 32-bit Mach-O programs.
|
||||
*/
|
||||
extern uint8_t *crashpad_getsectiondata(
|
||||
const struct mach_header *mhp,
|
||||
const char *segname,
|
||||
const char *sectname,
|
||||
unsigned long *size);
|
||||
|
||||
extern uint8_t *crashpad_getsegmentdata(
|
||||
const struct mach_header *mhp,
|
||||
const char *segname,
|
||||
unsigned long *size);
|
||||
|
||||
#else /* defined(__LP64__) */
|
||||
/*
|
||||
* Runtime interfaces for 64-bit Mach-O programs.
|
||||
*/
|
||||
extern uint8_t *crashpad_getsectiondata(
|
||||
const struct mach_header_64 *mhp,
|
||||
const char *segname,
|
||||
const char *sectname,
|
||||
unsigned long *size);
|
||||
|
||||
extern uint8_t *crashpad_getsegmentdata(
|
||||
const struct mach_header_64 *mhp,
|
||||
const char *segname,
|
||||
unsigned long *size);
|
||||
|
||||
#endif /* defined(__LP64__) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7 */
|
||||
|
||||
#endif /* CRASHPAD_THIRD_PARTY_APPLE_CCTOOLS_CCTOOLS_INCLUDE_MACH_O_GETSECT_H_ */
|
@ -1,133 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_START@
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original Code
|
||||
* as defined in and that are subject to the Apple Public Source License
|
||||
* Version 2.0 (the 'License'). You may not use this file except in
|
||||
* compliance with the License. Please obtain a copy of the License at
|
||||
* http://www.opensource.apple.com/apsl/ and read it before using this
|
||||
* file.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#include "third_party/apple_cctools/cctools/include/mach-o/getsect.h"
|
||||
|
||||
#if !defined(MAC_OS_X_VERSION_10_7) || \
|
||||
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#ifndef __LP64__
|
||||
typedef struct mach_header mach_header_32_64;
|
||||
typedef struct segment_command segment_command_32_64;
|
||||
typedef struct section section_32_64;
|
||||
#define LC_SEGMENT_32_64 LC_SEGMENT
|
||||
#else /* defined(__LP64__) */
|
||||
typedef struct mach_header_64 mach_header_32_64;
|
||||
typedef struct segment_command_64 segment_command_32_64;
|
||||
typedef struct section_64 section_32_64;
|
||||
#define LC_SEGMENT_32_64 LC_SEGMENT_64
|
||||
#endif /* defined(__LP64__) */
|
||||
|
||||
/*
|
||||
* This routine returns the a pointer to the section contents of the named
|
||||
* section in the named segment if it exists in the image pointed to by the
|
||||
* mach header. Otherwise it returns zero.
|
||||
*/
|
||||
|
||||
uint8_t *
|
||||
crashpad_getsectiondata(
|
||||
const mach_header_32_64 *mhp,
|
||||
const char *segname,
|
||||
const char *sectname,
|
||||
unsigned long *size)
|
||||
{
|
||||
segment_command_32_64 *sgp, *zero;
|
||||
section_32_64 *sp, *find;
|
||||
uint32_t i, j;
|
||||
|
||||
zero = 0;
|
||||
find = 0;
|
||||
sp = 0;
|
||||
sgp = (segment_command_32_64 *)
|
||||
((char *)mhp + sizeof(mach_header_32_64));
|
||||
for(i = 0; i < mhp->ncmds; i++){
|
||||
if(sgp->cmd == LC_SEGMENT_32_64){
|
||||
if(zero == 0 && sgp->fileoff == 0 && sgp->nsects != 0){
|
||||
zero = sgp;
|
||||
if(find != 0)
|
||||
goto done;
|
||||
}
|
||||
if(find == 0 &&
|
||||
strncmp(sgp->segname, segname, sizeof(sgp->segname)) == 0){
|
||||
sp = (section_32_64 *)((char *)sgp +
|
||||
sizeof(segment_command_32_64));
|
||||
for(j = 0; j < sgp->nsects; j++){
|
||||
if(strncmp(sp->sectname, sectname,
|
||||
sizeof(sp->sectname)) == 0 &&
|
||||
strncmp(sp->segname, segname,
|
||||
sizeof(sp->segname)) == 0){
|
||||
find = sp;
|
||||
if(zero != 0)
|
||||
goto done;
|
||||
}
|
||||
sp = (section_32_64 *)((char *)sp +
|
||||
sizeof(section_32_64));
|
||||
}
|
||||
}
|
||||
}
|
||||
sgp = (segment_command_32_64 *)((char *)sgp + sgp->cmdsize);
|
||||
}
|
||||
return(0);
|
||||
done:
|
||||
*size = sp->size;
|
||||
return((uint8_t *)((uintptr_t)mhp - zero->vmaddr + sp->addr));
|
||||
}
|
||||
|
||||
uint8_t *
|
||||
crashpad_getsegmentdata(
|
||||
const mach_header_32_64 *mhp,
|
||||
const char *segname,
|
||||
unsigned long *size)
|
||||
{
|
||||
segment_command_32_64 *sgp, *zero, *find;
|
||||
uint32_t i;
|
||||
|
||||
zero = 0;
|
||||
find = 0;
|
||||
sgp = (segment_command_32_64 *)
|
||||
((char *)mhp + sizeof(mach_header_32_64));
|
||||
for(i = 0; i < mhp->ncmds; i++){
|
||||
if(sgp->cmd == LC_SEGMENT_32_64){
|
||||
if(zero == 0 && sgp->fileoff == 0 && sgp->nsects != 0){
|
||||
zero = sgp;
|
||||
if(find != 0)
|
||||
goto done;
|
||||
}
|
||||
if(find == 0 &&
|
||||
strncmp(sgp->segname, segname, sizeof(sgp->segname)) == 0){
|
||||
find = sgp;
|
||||
if(zero != 0)
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
sgp = (segment_command_32_64 *)((char *)sgp + sgp->cmdsize);
|
||||
}
|
||||
return(0);
|
||||
done:
|
||||
*size = sgp->vmsize;
|
||||
return((uint8_t *)((uintptr_t)mhp - zero->vmaddr + sgp->vmaddr));
|
||||
}
|
||||
|
||||
#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7 */
|
2
third_party/getopt/BUILD.gn
vendored
2
third_party/getopt/BUILD.gn
vendored
@ -12,7 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
source_set("getopt") {
|
||||
static_library("getopt") {
|
||||
sources = [
|
||||
"getopt.cc",
|
||||
"getopt.h",
|
||||
|
Loading…
x
Reference in New Issue
Block a user