Symbian platform (C++)
SDK native APIs, runtime and tooling
Loading...
Searching...
No Matches
exports.h
Go to the documentation of this file.
1#ifndef SYMBIAN_SDK_EXPORTS_H_
2#define SYMBIAN_SDK_EXPORTS_H_
3
4#include <cstdint>
5#include <string>
6#include <string_view>
7#include <vector>
8
9#include <absl/status/statusor.h>
10
11namespace symbian::sdk {
12
13struct Export {
14 std::string symbol;
15 uint32_t ordinal = 0;
16 bool data = false;
17 bool absent = false;
18};
19
21 std::string assembly;
22 std::string version_script;
23 std::string linker_script;
24 std::vector<Export> exports;
25};
26
27struct ProxyInfo {
28 std::string soname;
29 std::string target_dll;
30 std::vector<Export> exports;
31};
32
33// Frozen EABI DEF subset: EXPORTS, symbol @ ordinal NONAME, optional DATA size
34// and ABSENT. Bounded ASCII input; aliases and other directives are unsupported.
35absl::StatusOr<std::vector<Export>> ParseExports(std::string_view text);
36
37// Creates an initial DLL interface from the linked ELF's visible definitions.
38// Names are sorted deterministically. Retain a frozen DEF when preserving ABI
39// across independently released DLL versions; consumers never select symbols.
40absl::StatusOr<std::string> GenerateExportDefinition(std::string_view elf);
41
42// Generates source for Clang/LLD to build an ordinal proxy, NOT target DLL code.
43// Empty selection includes every present function/data export. Explicit selections
44// must exist and be present. Frozen ordinals are never renumbered.
45// Plain names only; decorated DLL version/UID names remain unimplemented.
46absl::StatusOr<ProxySources> GenerateProxy(
47 std::string_view definition, const std::vector<std::string>& symbols,
48 std::string_view soname, std::string_view target_dll);
49
50// Bounded inspection of the generated proxy contract: ARM ELF32, ordinal words
51// in section one, file-offset dynamic pointers, symbol/version/name metadata.
52// This does not establish a linked executable's E32 or loader compatibility.
53absl::StatusOr<ProxyInfo> InspectProxy(std::string_view bytes);
54
55} // namespace symbian::sdk
56
57#endif // SYMBIAN_SDK_EXPORTS_H_
Definition exports.cc:21
absl::StatusOr< ProxyInfo > InspectProxy(std::string_view bytes)
Definition exports.cc:306
absl::StatusOr< std::vector< Export > > ParseExports(std::string_view text)
Definition exports.cc:90
absl::StatusOr< ProxySources > GenerateProxy(std::string_view definition, const std::vector< std::string > &symbols, std::string_view soname, std::string_view target_dll)
Definition exports.cc:238
absl::StatusOr< std::string > GenerateExportDefinition(std::string_view elf)
Definition exports.cc:155
std::string_view bytes
Definition exports.cc:74
Definition exports.h:13
std::string symbol
Definition exports.h:14
bool data
Definition exports.h:16
uint32_t ordinal
Definition exports.h:15
bool absent
Definition exports.h:17
Definition exports.h:27
std::vector< Export > exports
Definition exports.h:30
std::string soname
Definition exports.h:28
std::string target_dll
Definition exports.h:29
Definition exports.h:20
std::string assembly
Definition exports.h:21
std::string version_script
Definition exports.h:22
std::string linker_script
Definition exports.h:23
std::vector< Export > exports
Definition exports.h:24