diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..960c907 --- /dev/null +++ b/Android.bp @@ -0,0 +1,17 @@ +cc_defaults { + name: "btfparse-defaults", + + cppflags: [ + "-fexceptions", + "-Wall", + "-Wconversion", + "-Wunused", + "-Wshadow", + "-fvisibility=hidden", + "-Werror", + "-Wno-deprecated-declarations", + "-O2", + "-DNDEBUG", + "-g0" + ] +} diff --git a/btfparse/btfparse/Android.bp b/btfparse/btfparse/Android.bp new file mode 100644 index 0000000..c3fd515 --- /dev/null +++ b/btfparse/btfparse/Android.bp @@ -0,0 +1,32 @@ +cc_library { + name: "btfparse", + + host_supported: true, + + defaults: [ + "btfparse-defaults" + ], + + srcs: [ + "src/ibtf.cpp", + "src/ibtfheadergenerator.cpp", + "src/btf.cpp", + "src/btfheadergenerator.cpp" + ], + + local_include_dirs: [ + "include" + ], + + export_include_dirs: [ + "include" + ], + + header_libs: [ + "btfparse-utils" + ], + + static_libs: [ + "btfparse-filereader" + ] +} diff --git a/btfparse/btfparse/src/btf.cpp b/btfparse/btfparse/src/btf.cpp index 49f19b1..e921d07 100644 --- a/btfparse/btfparse/src/btf.cpp +++ b/btfparse/btfparse/src/btf.cpp @@ -968,7 +968,7 @@ BTF::parseDataSecData(const BTFFileList &btf_file_list, } Result BTF::parseString(const BTFFileList &btf_file_list, - std::uint64_t offset) noexcept { + std::size_t offset) noexcept { std::uint32_t start_offset{}; for (const auto &btf_file : btf_file_list) { @@ -996,7 +996,7 @@ Result BTF::parseString(const BTFFileList &btf_file_list, } Result BTF::parseString(IFileReader &file_reader, - std::uint64_t offset) noexcept { + std::size_t offset) noexcept { Result output; diff --git a/btfparse/btfparse/src/btf.h b/btfparse/btfparse/src/btf.h index 45de0a7..a53513f 100644 --- a/btfparse/btfparse/src/btf.h +++ b/btfparse/btfparse/src/btf.h @@ -138,10 +138,10 @@ class BTF final : public IBTF { IFileReader &file_reader) noexcept; static Result - parseString(const BTFFileList &btf_file_list, std::uint64_t offset) noexcept; + parseString(const BTFFileList &btf_file_list, std::size_t offset) noexcept; static Result - parseString(IFileReader &file_reader, std::uint64_t offset) noexcept; + parseString(IFileReader &file_reader, std::size_t offset) noexcept; friend class IBTF; }; diff --git a/btfparse/btfparse/src/btfheadergenerator.cpp b/btfparse/btfparse/src/btfheadergenerator.cpp index f2fdf40..97a2a86 100644 --- a/btfparse/btfparse/src/btfheadergenerator.cpp +++ b/btfparse/btfparse/src/btfheadergenerator.cpp @@ -314,7 +314,7 @@ bool BTFHeaderGenerator::materializePadding(Context &context) { } bool BTFHeaderGenerator::materializeStructPadding( - Context &context, std::uint32_t id, StructBTFType &struct_btf_type) { + Context &context, [[maybe_unused]] std::uint32_t id, StructBTFType &struct_btf_type) { auto member_list = std::move(struct_btf_type.member_list); struct_btf_type.member_list.clear(); @@ -807,6 +807,8 @@ bool BTFHeaderGenerator::setTypeName(Context &context, std::uint32_t id, case BTFKind::Fwd: { auto &fwd_btf_type = getTypeAsMutable(btf_type); fwd_btf_type.name = name; + + return true; } default: @@ -1571,7 +1573,8 @@ bool BTFHeaderGenerator::generateType(Context &context, bool BTFHeaderGenerator::generateType( Context &context, std::stringstream &buffer, std::uint32_t id, - const FuncProtoBTFType &func_proto_btf_type, bool as_type_definition) { + const FuncProtoBTFType &func_proto_btf_type, + [[maybe_unused]] bool as_type_definition) { filterFuncProtoModifiers(context); generateTypeHeader(context, buffer, id); diff --git a/btfparse/filereader/Android.bp b/btfparse/filereader/Android.bp new file mode 100644 index 0000000..8d5ab34 --- /dev/null +++ b/btfparse/filereader/Android.bp @@ -0,0 +1,27 @@ +cc_library { + name: "btfparse-filereader", + + host_supported: true, + + defaults: [ + "btfparse-defaults" + ], + + srcs: [ + "src/ifilereader.cpp", + "src/filereader.cpp", + "src/memoryfileadapter.cpp" + ], + + local_include_dirs: [ + "include" + ], + + export_include_dirs: [ + "include" + ], + + header_libs: [ + "btfparse-utils" + ] +} diff --git a/btfparse/filereader/include/btfparse/ifilereader.h b/btfparse/filereader/include/btfparse/ifilereader.h index 7990bdc..3454b5d 100644 --- a/btfparse/filereader/include/btfparse/ifilereader.h +++ b/btfparse/filereader/include/btfparse/ifilereader.h @@ -27,7 +27,7 @@ struct FileReaderErrorInformation final { }; struct ReadOperation final { - std::uint64_t offset{}; + std::size_t offset{}; std::size_t size{}; }; @@ -90,8 +90,8 @@ class IFileReader { virtual void setEndianness(bool little_endian) = 0; - virtual void seek(std::uint64_t offset) = 0; - virtual std::uint64_t offset() const = 0; + virtual void seek(std::size_t offset) = 0; + virtual std::size_t offset() const = 0; virtual void read(std::uint8_t *buffer, std::size_t size) = 0; virtual std::uint8_t u8() = 0; diff --git a/btfparse/filereader/include/btfparse/istream.h b/btfparse/filereader/include/btfparse/istream.h index 0797913..98359c5 100644 --- a/btfparse/filereader/include/btfparse/istream.h +++ b/btfparse/filereader/include/btfparse/istream.h @@ -20,8 +20,8 @@ class IStream { IStream() = default; virtual ~IStream() = default; - virtual bool seek(std::uint64_t offset) = 0; - virtual std::uint64_t offset() const = 0; + virtual bool seek(std::size_t offset) = 0; + virtual std::size_t offset() const = 0; virtual bool read(std::uint8_t *buffer, std::size_t size) = 0; diff --git a/btfparse/filereader/src/filereader.cpp b/btfparse/filereader/src/filereader.cpp index 46d7871..c6703c9 100644 --- a/btfparse/filereader/src/filereader.cpp +++ b/btfparse/filereader/src/filereader.cpp @@ -39,9 +39,9 @@ void FileReader::setEndianness(bool little_endian) { setEndianness(d->context, little_endian); } -void FileReader::seek(std::uint64_t offset) { seek(d->context, offset); } +void FileReader::seek(std::size_t offset) { seek(d->context, offset); } -std::uint64_t FileReader::offset() const { return offset(d->context); } +std::size_t FileReader::offset() const { return offset(d->context); } void FileReader::read(std::uint8_t *buffer, std::size_t size) { read(d->context, buffer, size); @@ -63,7 +63,7 @@ void FileReader::setEndianness(Context &context, bool little_endian) { context.little_endian = little_endian; } -void FileReader::seek(Context &context, std::uint64_t offset) { +void FileReader::seek(Context &context, std::size_t offset) { if (!context.stream->seek(offset)) { throw FileReaderError( {FileReaderErrorInformation::Code::IOError, @@ -71,7 +71,7 @@ void FileReader::seek(Context &context, std::uint64_t offset) { } } -std::uint64_t FileReader::offset(Context &context) { +std::size_t FileReader::offset(Context &context) { return context.stream->offset(); } diff --git a/btfparse/filereader/src/filereader.h b/btfparse/filereader/src/filereader.h index f1b8cfe..eb1fb2a 100644 --- a/btfparse/filereader/src/filereader.h +++ b/btfparse/filereader/src/filereader.h @@ -21,8 +21,8 @@ class FileReader final : public IFileReader { virtual void setEndianness(bool little_endian) override; - virtual void seek(std::uint64_t offset) override; - virtual std::uint64_t offset() const override; + virtual void seek(std::size_t offset) override; + virtual std::size_t offset() const override; virtual void read(std::uint8_t *buffer, std::size_t size) override; virtual std::uint8_t u8() override; @@ -44,8 +44,8 @@ class FileReader final : public IFileReader { static void setEndianness(Context &context, bool little_endian); - static void seek(Context &context, std::uint64_t offset); - static std::uint64_t offset(Context &context); + static void seek(Context &context, std::size_t offset); + static std::size_t offset(Context &context); static void read(Context &context, std::uint8_t *buffer, std::size_t size); static std::uint8_t u8(Context &context); diff --git a/btfparse/filereader/src/memoryfileadapter.cpp b/btfparse/filereader/src/memoryfileadapter.cpp index 4bfda3a..61694d1 100644 --- a/btfparse/filereader/src/memoryfileadapter.cpp +++ b/btfparse/filereader/src/memoryfileadapter.cpp @@ -55,7 +55,7 @@ IStream::Ptr MemoryFileAdapter::create(const std::filesystem::path &path) { std::size_t pos = 0; do { - auto read_size = std::min(file_size - pos, 4096UL); + auto read_size = std::min(file_size - pos, static_cast(4096)); read_res = ::read(fd, &file_buffer[pos], read_size); @@ -78,7 +78,7 @@ IStream::Ptr MemoryFileAdapter::create(const std::filesystem::path &path) { } } -bool MemoryFileAdapter::seek(std::uint64_t offset) { +bool MemoryFileAdapter::seek(std::size_t offset) { if (offset >= file_buffer_size) { return false; } @@ -88,8 +88,8 @@ bool MemoryFileAdapter::seek(std::uint64_t offset) { return true; } -std::uint64_t MemoryFileAdapter::offset() const { - return static_cast(file_pos); +std::size_t MemoryFileAdapter::offset() const { + return file_pos; } bool MemoryFileAdapter::read(std::uint8_t *buffer, std::size_t size) { diff --git a/btfparse/filereader/src/memoryfileadapter.h b/btfparse/filereader/src/memoryfileadapter.h index 0dee85e..65c741e 100644 --- a/btfparse/filereader/src/memoryfileadapter.h +++ b/btfparse/filereader/src/memoryfileadapter.h @@ -26,8 +26,8 @@ class MemoryFileAdapter final : public IStream { static Ptr create(const std::filesystem::path &path); virtual ~MemoryFileAdapter() override; - virtual bool seek(std::uint64_t offset) override; - virtual std::uint64_t offset() const override; + virtual bool seek(std::size_t offset) override; + virtual std::size_t offset() const override; virtual bool read(std::uint8_t *buffer, std::size_t size) override; private: diff --git a/btfparse/utils/Android.bp b/btfparse/utils/Android.bp new file mode 100644 index 0000000..6765700 --- /dev/null +++ b/btfparse/utils/Android.bp @@ -0,0 +1,9 @@ +cc_library_headers { + name: "btfparse-utils", + + host_supported: true, + + export_include_dirs: [ + "include" + ] +} diff --git a/tools/dump-btf/Android.bp b/tools/dump-btf/Android.bp new file mode 100644 index 0000000..951aa26 --- /dev/null +++ b/tools/dump-btf/Android.bp @@ -0,0 +1,21 @@ +cc_binary { + name: "dump-btf", + + defaults: [ + "btfparse-defaults" + ], + + srcs: [ + "src/main.cpp", + "src/utils.cpp" + ], + + header_libs: [ + "btfparse-utils" + ], + + static_libs: [ + "btfparse-filereader", + "btfparse" + ] +} diff --git a/tools/include-gen/Android.bp b/tools/include-gen/Android.bp new file mode 100644 index 0000000..c189c27 --- /dev/null +++ b/tools/include-gen/Android.bp @@ -0,0 +1,20 @@ +cc_binary { + name: "include-gen", + + defaults: [ + "btfparse-defaults" + ], + + srcs: [ + "src/main.cpp" + ], + + header_libs: [ + "btfparse-utils" + ], + + static_libs: [ + "btfparse-filereader", + "btfparse" + ] +}