[lld] [lld-macho] Implement support for ObjC relative method lists (PR #86231)
Kyungwoo Lee via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 25 10:14:00 PDT 2024
================
@@ -692,6 +692,53 @@ class InitOffsetsSection final : public SyntheticSection {
std::vector<ConcatInputSection *> sections;
};
+// This SyntheticSection is for the __objc_methlist section, which contains
+// relative method lists if the -objc_relative_method_lists option is enabled.
+class ObjCMethListSection final : public SyntheticSection {
+public:
+ ObjCMethListSection();
+
+ static bool isMethodList(const ConcatInputSection *isec);
+ void addInput(ConcatInputSection *isec) { inputs.push_back(isec); }
+ std::vector<ConcatInputSection *> getInputs() { return inputs; }
+
+ void setUp();
+ void finalize() override;
+ bool isNeeded() const override { return !inputs.empty(); }
+ uint64_t getSize() const override { return m_size; }
+ void writeTo(uint8_t *bufStart) const override;
+
+private:
+ static void readMethodListHeader(const uint8_t *buf,
----------------
kyulee-com wrote:
Can it be an instance method instead of a static method? The same questions on the following two methods.
https://github.com/llvm/llvm-project/pull/86231
More information about the llvm-commits
mailing list