Merge lp:~vanvugt/mir/graphics-abi-is-not-libmirplatform-abi into lp:mir
- graphics-abi-is-not-libmirplatform-abi
- Merge into development-branch
Status: | Merged |
---|---|
Approved by: | Daniel van Vugt |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4027 |
Proposed branch: | lp:~vanvugt/mir/graphics-abi-is-not-libmirplatform-abi |
Merge into: | lp:mir |
Diff against target: |
169 lines (+0/-123) 1 file modified
src/platform/symbols.map (+0/-123) |
To merge this branch: | bzr merge lp:~vanvugt/mir/graphics-abi-is-not-libmirplatform-abi |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Approve | |
Cemil Azizoglu (community) | Approve | ||
Chris Halse Rogers | Needs Information | ||
Review via email: mp+316080@code.launchpad.net |
Commit message
src/platform/
While they may indeed name some interfaces that affect the graphics platform ABI, those symbols do not exist in the libmirplatform binary so need not be listed for export.
Description of the change
Mir CI Bot (mir-ci-bot) wrote : | # |
Daniel van Vugt (vanvugt) wrote : | # |
^^^
Bug 1646558
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4007
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Chris Halse Rogers (raof) wrote : | # |
Hm. At least some of these *should* appear in libmirplatform; most of the Renderable ones, some of the Buffer ones, CursorImage, GLConfig. These are symbols a platform will require in order to work.
If they're not exported from libmirplatform, then they should be (and this is what should be fixed).
Daniel van Vugt (vanvugt) wrote : | # |
They're virtual functions. So if they don't exist in binary yet that's probably because they haven't been used, internally(?). Can we force their creation? Should we?
Daniel van Vugt (vanvugt) wrote : | # |
Actually they're pure virtual functions of pure visual base classes. Would they ever get symbols emitted that we can export?
Chris Halse Rogers (raof) wrote : | # |
Hmm. I actually don't know - it's conceivable that they would be real symbols under *some* ABI. There's no particular reason why they shouldn't have real code associated with them.
I think the Linux x64 C++ ABI just hardcodes posts offsets into the vtable, so having the vtable symbols published should be enough.
Hopefully abigail can detect when we change those...
Daniel van Vugt (vanvugt) wrote : | # |
Indeed abigail or whatever will provide the final word, but this proposal shouldn't break the ABI if it's just removing non-existent symbols.
In fact if you break the symbols in question then you're actually breaking the graphics platform ABI, which is not the libmirplatform ABI. So it's unreasonably misleading to put those non-existent symbols in the map. If you break the symbols then you're not actually breaking the libmircommon ABI but are breaking the graphics ABI.
Daniel van Vugt (vanvugt) wrote : | # |
* If you break the symbols then you're not actually breaking the libmirplatform ABI but are breaking the graphics ABI.
Chris Halse Rogers (raof) wrote : | # |
Hm, so I think that at least:
- vtable?
- vtable?
- vtable?
should be exported by libmirplatform, as those are types that the platforms need the vtables for in order to function.
Dunno about the typeinfo, and the rest of the vtables.
Daniel van Vugt (vanvugt) wrote : | # |
It appears the rule is that those symbols won't exist (never emitted by the compiler) unless a class has one or more non-virtual non-default methods. Any pure virtual class (which may have some defaulted methods) will have no symbols emitted by the compiler, and don't need mentioning in symbols.map.
Certainly it's probably better maintenance practice going forward if we just add individual symbols as required (indicated by linker errors) rather than scripting the insertion of symbols that don't exist in binary. Otherwise we find ourselves in a situation I'm in now where I'm breaking a symbol that's in symbols.map, but doesn't actually exist in binary so it's no ABI break.
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4009
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Daniel van Vugt (vanvugt) wrote : | # |
^^^
Bug 1646558
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4010
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Cemil Azizoglu (cemil-azizoglu) wrote : | # |
I'm fine with that.
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Daniel van Vugt (vanvugt) wrote : | # |
^^^
Network failures from yesterday. Hopefully now fixed.
Mir CI Bot (mir-ci-bot) : | # |
Preview Diff
1 | === modified file 'src/platform/symbols.map' |
2 | --- src/platform/symbols.map 2017-01-18 02:29:37 +0000 |
3 | +++ src/platform/symbols.map 2017-02-07 09:21:17 +0000 |
4 | @@ -5,33 +5,6 @@ |
5 | # ../tools/process_doxygen_xml.py doc/xml/*.xml | grep "^mirplatform public" | sed "s/mirplatform public: / /" | sort |
6 | mir::graphics::BufferBasic::BufferBasic*; |
7 | mir::graphics::Buffer::Buffer*; |
8 | - mir::graphics::Buffer::id*; |
9 | - mir::graphics::Buffer::native_buffer_base*; |
10 | - mir::graphics::Buffer::native_buffer_handle*; |
11 | - mir::graphics::Buffer::pixel_format*; |
12 | - mir::graphics::Buffer::size*; |
13 | - mir::graphics::Cursor::?Cursor*; |
14 | - mir::graphics::Cursor::Cursor*; |
15 | - mir::graphics::Cursor::hide*; |
16 | - mir::graphics::CursorImage::as_argb_8888*; |
17 | - mir::graphics::CursorImage::?CursorImage*; |
18 | - mir::graphics::CursorImage::CursorImage*; |
19 | - mir::graphics::CursorImage::hotspot*; |
20 | - mir::graphics::CursorImage::operator*; |
21 | - mir::graphics::CursorImage::size*; |
22 | - mir::graphics::Cursor::move_to*; |
23 | - mir::graphics::Cursor::operator*; |
24 | - mir::graphics::Cursor::show*; |
25 | - mir::graphics::DisplayBuffer::DisplayBuffer*; |
26 | - mir::graphics::DisplayBuffer::native_display_buffer*; |
27 | - mir::graphics::DisplayBuffer::operator*; |
28 | - mir::graphics::DisplayBuffer::orientation*; |
29 | - mir::graphics::DisplayBuffer::overlay*; |
30 | - mir::graphics::DisplayBuffer::view_area*; |
31 | - mir::graphics::Display::configuration*; |
32 | - mir::graphics::DisplayConfiguration::DisplayConfiguration*; |
33 | - mir::graphics::DisplayConfiguration::for_each_card*; |
34 | - mir::graphics::DisplayConfiguration::for_each_output*; |
35 | mir::graphics::DisplayConfiguration::operator*; |
36 | mir::graphics::DisplayConfigurationOutput::extents*; |
37 | mir::graphics::DisplayConfigurationOutput::valid*; |
38 | @@ -40,16 +13,6 @@ |
39 | mir::graphics::DisplayConfigurationPolicy::DisplayConfigurationPolicy*; |
40 | mir::graphics::DisplayConfigurationPolicy::operator*; |
41 | mir::graphics::DisplayConfiguration::valid*; |
42 | - mir::graphics::Display::configure*; |
43 | - mir::graphics::Display::create_gl_context*; |
44 | - mir::graphics::Display::create_hardware_cursor*; |
45 | - mir::graphics::Display::Display*; |
46 | - mir::graphics::Display::for_each_display_buffer*; |
47 | - mir::graphics::Display::native_display*; |
48 | - mir::graphics::Display::pause*; |
49 | - mir::graphics::Display::register_configuration_change_handler*; |
50 | - mir::graphics::Display::register_pause_resume_handlers*; |
51 | - mir::graphics::Display::resume*; |
52 | mir::graphics::EventHandlerRegister::?EventHandlerRegister*; |
53 | mir::graphics::EventHandlerRegister::EventHandlerRegister*; |
54 | mir::graphics::EventHandlerRegister::operator*; |
55 | @@ -57,41 +20,9 @@ |
56 | mir::graphics::EventHandlerRegister::register_signal_handler*; |
57 | mir::graphics::EventHandlerRegister::unregister_fd_handler*; |
58 | mir::graphics::GammaCurves::GammaCurves*; |
59 | - mir::graphics::GLConfig::depth_buffer_bits*; |
60 | - mir::graphics::GLConfig::?GLConfig*; |
61 | - mir::graphics::GLConfig::GLConfig*; |
62 | - mir::graphics::GLConfig::operator*; |
63 | - mir::graphics::GLConfig::stencil_buffer_bits*; |
64 | - mir::graphics::GraphicBufferAllocator::alloc_buffer*; |
65 | - mir::graphics::GraphicBufferAllocator::?GraphicBufferAllocator*; |
66 | - mir::graphics::GraphicBufferAllocator::GraphicBufferAllocator*; |
67 | - mir::graphics::GraphicBufferAllocator::operator*; |
68 | - mir::graphics::GraphicBufferAllocator::supported_pixel_formats*; |
69 | mir::graphics::LinearGammaLUTs::LinearGammaLUTs*; |
70 | mir::graphics::module_for_device*; |
71 | mir::graphics::operator*; |
72 | - mir::graphics::Platform::create_buffer_allocator*; |
73 | - mir::graphics::Platform::create_display*; |
74 | - mir::graphics::PlatformIpcOperations::connection_ipc_package*; |
75 | - mir::graphics::PlatformIpcOperations::operator*; |
76 | - mir::graphics::PlatformIpcOperations::pack_buffer*; |
77 | - mir::graphics::PlatformIpcOperations::?PlatformIpcOperations*; |
78 | - mir::graphics::PlatformIpcOperations::PlatformIpcOperations*; |
79 | - mir::graphics::PlatformIpcOperations::unpack_buffer*; |
80 | - mir::graphics::Platform::make_ipc_operations*; |
81 | - mir::graphics::Platform::operator*; |
82 | - mir::graphics::Platform::Platform*; |
83 | - mir::graphics::Renderable::alpha*; |
84 | - mir::graphics::Renderable::buffer*; |
85 | - mir::graphics::Renderable::buffers_ready_for_compositor*; |
86 | - mir::graphics::Renderable::id*; |
87 | - mir::graphics::Renderable::operator*; |
88 | - mir::graphics::Renderable::?Renderable*; |
89 | - mir::graphics::Renderable::Renderable*; |
90 | - mir::graphics::Renderable::screen_position*; |
91 | - mir::graphics::Renderable::shaped*; |
92 | - mir::graphics::Renderable::transformation*; |
93 | - mir::graphics::Renderable::swap_interval*; |
94 | mir::graphics::UserDisplayConfigurationOutput::extents*; |
95 | mir::graphics::UserDisplayConfigurationOutput::UserDisplayConfigurationOutput*; |
96 | mir::options::arw_server_socket_opt*; |
97 | @@ -154,72 +85,18 @@ |
98 | mir::options::shared_library_prober_report_opt*; |
99 | mir::options::shell_report_opt; |
100 | mir::options::touchspots_opt*; |
101 | - non-virtual?thunk?to?mir::graphics::Cursor::?Cursor*; |
102 | - non-virtual?thunk?to?mir::graphics::CursorImage::?CursorImage*; |
103 | - non-virtual?thunk?to?mir::graphics::DisplayConfigurationPolicy::?DisplayConfigurationPolicy*; |
104 | - non-virtual?thunk?to?mir::graphics::DisplayConfiguration::valid*; |
105 | - non-virtual?thunk?to?mir::graphics::EventHandlerRegister::?EventHandlerRegister*; |
106 | - non-virtual?thunk?to?mir::graphics::GLConfig::?GLConfig*; |
107 | - non-virtual?thunk?to?mir::graphics::GraphicBufferAllocator::?GraphicBufferAllocator*; |
108 | - non-virtual?thunk?to?mir::graphics::PlatformIpcOperations::?PlatformIpcOperations*; |
109 | - non-virtual?thunk?to?mir::graphics::Renderable::?Renderable*; |
110 | - non-virtual?thunk?to?mir::options::Configuration::?Configuration*; |
111 | - non-virtual?thunk?to?mir::options::DefaultConfiguration::?DefaultConfiguration*; |
112 | - non-virtual?thunk?to?mir::options::DefaultConfiguration::parse_arguments*; |
113 | - non-virtual?thunk?to?mir::options::DefaultConfiguration::parse_config_file*; |
114 | - non-virtual?thunk?to?mir::options::DefaultConfiguration::parse_environment*; |
115 | - non-virtual?thunk?to?mir::options::DefaultConfiguration::the_options*; |
116 | - non-virtual?thunk?to?mir::options::Option::?Option*; |
117 | - non-virtual?thunk?to?mir::options::ProgramOption::get*; |
118 | - non-virtual?thunk?to?mir::options::ProgramOption::is_set*; |
119 | typeinfo?for?mir::AbnormalExit; |
120 | - typeinfo?for?mir::FatalErrorStrategy; |
121 | typeinfo?for?mir::graphics::Buffer; |
122 | typeinfo?for?mir::graphics::BufferBasic; |
123 | - typeinfo?for?mir::graphics::BufferProperties; |
124 | - typeinfo?for?mir::graphics::Cursor; |
125 | - typeinfo?for?mir::graphics::CursorImage; |
126 | - typeinfo?for?mir::graphics::Display; |
127 | - typeinfo?for?mir::graphics::DisplayBuffer; |
128 | typeinfo?for?mir::graphics::DisplayConfiguration; |
129 | - typeinfo?for?mir::graphics::DisplayConfigurationCard; |
130 | - typeinfo?for?mir::graphics::DisplayConfigurationMode; |
131 | - typeinfo?for?mir::graphics::DisplayConfigurationOutput; |
132 | - typeinfo?for?mir::graphics::DisplayConfigurationPolicy; |
133 | - typeinfo?for?mir::graphics::EventHandlerRegister; |
134 | - typeinfo?for?mir::graphics::GLConfig; |
135 | - typeinfo?for?mir::graphics::GraphicBufferAllocator; |
136 | - typeinfo?for?mir::graphics::Platform; |
137 | - typeinfo?for?mir::graphics::PlatformIpcOperations; |
138 | - typeinfo?for?mir::graphics::PlatformIPCPackage; |
139 | - typeinfo?for?mir::graphics::Renderable; |
140 | - typeinfo?for?mir::graphics::UserDisplayConfigurationOutput; |
141 | typeinfo?for?mir::options::Configuration; |
142 | typeinfo?for?mir::options::DefaultConfiguration; |
143 | typeinfo?for?mir::options::Option; |
144 | typeinfo?for?mir::options::ProgramOption; |
145 | vtable?for?mir::AbnormalExit; |
146 | - vtable?for?mir::FatalErrorStrategy; |
147 | vtable?for?mir::graphics::Buffer; |
148 | vtable?for?mir::graphics::BufferBasic; |
149 | - vtable?for?mir::graphics::BufferProperties; |
150 | - vtable?for?mir::graphics::Cursor; |
151 | - vtable?for?mir::graphics::CursorImage; |
152 | - vtable?for?mir::graphics::Display; |
153 | - vtable?for?mir::graphics::DisplayBuffer; |
154 | vtable?for?mir::graphics::DisplayConfiguration; |
155 | - vtable?for?mir::graphics::DisplayConfigurationCard; |
156 | - vtable?for?mir::graphics::DisplayConfigurationMode; |
157 | - vtable?for?mir::graphics::DisplayConfigurationOutput; |
158 | - vtable?for?mir::graphics::DisplayConfigurationPolicy; |
159 | - vtable?for?mir::graphics::EventHandlerRegister; |
160 | - vtable?for?mir::graphics::GLConfig; |
161 | - vtable?for?mir::graphics::GraphicBufferAllocator; |
162 | - vtable?for?mir::graphics::Platform; |
163 | - vtable?for?mir::graphics::PlatformIpcOperations; |
164 | - vtable?for?mir::graphics::PlatformIPCPackage; |
165 | - vtable?for?mir::graphics::Renderable; |
166 | - vtable?for?mir::graphics::UserDisplayConfigurationOutput; |
167 | vtable?for?mir::options::Configuration; |
168 | vtable?for?mir::options::DefaultConfiguration; |
169 | vtable?for?mir::options::Option; |
FAILED: Continuous integration, rev:4006 /mir-jenkins. ubuntu. com/job/ mir-ci/ 2906/ /mir-jenkins. ubuntu. com/job/ build-mir/ 3838/console /mir-jenkins. ubuntu. com/job/ build-0- fetch/3917 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 3907 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial+ overlay/ 3907 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= zesty/3907 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/3865 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/3865/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 3865/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/3865 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/3865/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 3865 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 3865/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 3865 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 3865/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 3865 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 3865/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 2906/rebuild
https:/