mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-30 09:01:19 +00:00
453102a028
This implements ld64's checks for duplicate method names in categories & classes. In addition, this sets us up for implementing Obj-C category merging. This diff handles the most of the parsing work; what's left is rewriting those category / class structures. Numbers for chromium_framework: base diff difference (95% CI) sys_time 2.182 ± 0.027 2.200 ± 0.047 [ -0.2% .. +1.8%] user_time 6.451 ± 0.034 6.479 ± 0.062 [ -0.0% .. +0.9%] wall_time 6.841 ± 0.048 6.885 ± 0.105 [ -0.1% .. +1.4%] samples 33 22 Fixes https://github.com/llvm/llvm-project/issues/54912. Issues seen with the previous land will be fixed in the next commit. Reviewed By: #lld-macho, thevinster, oontvoo Differential Revision: https://reviews.llvm.org/D142916
33 lines
906 B
C++
33 lines
906 B
C++
//===- ObjC.h ---------------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLD_MACHO_OBJC_H
|
|
#define LLD_MACHO_OBJC_H
|
|
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
|
|
namespace lld::macho {
|
|
|
|
namespace objc {
|
|
|
|
constexpr const char klass[] = "_OBJC_CLASS_$_";
|
|
constexpr const char metaclass[] = "_OBJC_METACLASS_$_";
|
|
constexpr const char ehtype[] = "_OBJC_EHTYPE_$_";
|
|
constexpr const char ivar[] = "_OBJC_IVAR_$_";
|
|
|
|
// Check for duplicate method names within related categories / classes.
|
|
void checkCategories();
|
|
|
|
} // namespace objc
|
|
|
|
bool hasObjCSection(llvm::MemoryBufferRef);
|
|
|
|
} // namespace lld::macho
|
|
|
|
#endif
|