1 >From a42d7e17fa3e39a8306126c19f1b3b54f1fdd79e Mon Sep 17 00:00:00 2001
2 From: Michael Tremer <michael.tremer@ipfire.org>
3 Date: Thu, 21 Apr 2011 16:40:11 +0200
4 Subject: [PATCH] Create linker-scripts that do only export the needed symbols
7 See these posts for reference:
8 http://lists.opensuse.org/zypp-devel/2011-04/msg00012.html
9 http://lists.opensuse.org/zypp-devel/2011-04/msg00014.html
11 Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
13 ext/CMakeLists.txt | 1 +
14 ext/libsatsolverext.ver | 25 ++++
15 src/CMakeLists.txt | 1 +
16 src/libsatsolver.ver | 355 +++++++++++++++++++++++++++++++++++++++++++++++
17 4 files changed, 382 insertions(+), 0 deletions(-)
18 create mode 100644 ext/libsatsolverext.ver
19 create mode 100644 src/libsatsolver.ver
21 diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt
22 index 68e1c3c..d51a43b 100644
23 --- a/ext/CMakeLists.txt
24 +++ b/ext/CMakeLists.txt
25 @@ -21,6 +21,7 @@ SET(libsatsolverext_HEADERS
26 tools_util.h repo_deb.h sat_xfopen.h)
28 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
29 +SET(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS} -Wl,--version-script=${satsolver_SOURCE_DIR}/ext/libsatsolverext.ver")
31 INSTALL(FILES ${libsatsolverext_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/satsolver")
32 INSTALL(TARGETS satsolverext LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
33 diff --git a/ext/libsatsolverext.ver b/ext/libsatsolverext.ver
35 index 0000000..4869d37
37 +++ b/ext/libsatsolverext.ver
41 + repo_add_code11_products;
45 + repo_add_debpackages;
47 + repo_add_deltainfoxml;
50 + repo_add_releasefile_products;
54 + repo_add_updateinfoxml;
55 + repo_add_zyppdb_products;
58 + repo_write_stdkeyfilter;
64 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
65 index 6a14d10..b54d01d 100644
66 --- a/src/CMakeLists.txt
67 +++ b/src/CMakeLists.txt
68 @@ -20,6 +20,7 @@ SET(libsatsolver_HEADERS
69 chksum.h md5.h sha1.h sha2.h ${CMAKE_BINARY_DIR}/src/satversion.h)
71 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
72 +SET(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS} -Wl,--version-script=${satsolver_SOURCE_DIR}/src/libsatsolver.ver")
74 INSTALL(FILES ${libsatsolver_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/satsolver")
75 INSTALL(TARGETS satsolver LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
76 diff --git a/src/libsatsolver.ver b/src/libsatsolver.ver
78 index 0000000..dab3576
80 +++ b/src/libsatsolver.ver
84 + dataiterator_clonepos;
85 + dataiterator_entersub;
88 + dataiterator_init_clone;
89 + dataiterator_jump_to_repo;
90 + dataiterator_jump_to_solvid;
92 + dataiterator_prepend_keyname;
94 + dataiterator_set_keyname;
95 + dataiterator_set_match;
96 + dataiterator_setpos;
97 + dataiterator_setpos_parent;
98 + dataiterator_set_search;
99 + dataiterator_skip_attribute;
100 + dataiterator_skip_repo;
101 + dataiterator_skip_solvable;
107 + data_read_rel_idarray;
113 + dirpool_make_dirtraverse;
121 + policy_create_obsolete_index;
122 + policy_filter_unwanted;
123 + policy_findupdatepackages;
124 + policy_illegal2str;
125 + policy_illegal_archchange;
126 + policy_illegal_vendorchange;
128 + pool_add_fileconflicts_deps;
129 + pool_addfileprovides;
130 + pool_addfileprovides_ids;
131 + pool_addrelproviders;
133 + pool_add_solvable_block;
134 + pool_alloctmpspace;
135 + pool_arch2color_slow;
137 + pool_calc_duchanges;
138 + pool_calc_installsizechange;
141 + pool_create_state_maps;
142 + pool_createwhatprovides;
146 + pool_free_solvable_block;
148 + pool_freewhatprovides;
151 + pool_lookup_bin_checksum;
152 + pool_lookup_checksum;
158 + pool_match_nevr_rel;
159 + pool_queuetowhatprovides;
162 + pool_setarchpolicy;
163 + pool_setdebuglevel;
164 + pool_set_installed;
165 + pool_set_languages;
166 + pool_setvendorclasses;
168 + pool_shrink_strings;
171 + pool_trivial_installable;
172 + pool_trivial_installable_noobsoletesmap;
174 + prune_best_arch_name_version;
175 + prune_to_best_arch;
176 + prune_to_best_version;
178 + queue_alloc_one_head;
192 + repo_add_poolstr_array;
195 + repo_add_solv_flags;
197 + repodata_add_dirnumnum;
198 + repodata_add_dirstr;
199 + repodata_add_fixarray;
200 + repodata_add_flexarray;
201 + repodata_add_idarray;
202 + repodata_add_poolstr_array;
205 + repodata_create_stubs;
207 + repodata_delete_uninternalized;
209 + repodata_disable_paging;
212 + repodata_extend_block;
213 + repodata_filelistfilter_matches;
216 + repodata_free_schemahash;
217 + repodata_globalize_id;
219 + repodata_internalize;
221 + repodata_localize_id;
222 + repodata_lookup_bin_checksum;
223 + repodata_lookup_id;
224 + repodata_lookup_idarray;
225 + repodata_lookup_num;
226 + repodata_lookup_str;
227 + repodata_lookup_type;
228 + repodata_lookup_void;
229 + repodata_merge_attrs;
230 + repodata_merge_some_attrs;
231 + repodata_new_handle;
232 + repodata_schema2id;
234 + repodata_set_binary;
235 + repodata_set_bin_checksum;
236 + repodata_set_checksum;
237 + repodata_set_constant;
238 + repodata_set_constantid;
240 + repodata_set_idarray;
241 + repodata_set_location;
243 + repodata_set_poolstr;
244 + repodata_setpos_kv;
249 + repodata_stringify;
250 + repo_disable_paging;
252 + repo_fix_conflicts;
253 + repo_fix_supplements;
256 + repo_free_solvable_block;
258 + repo_last_repodata;
259 + repo_lookup_bin_checksum;
260 + repo_lookup_checksum;
262 + repo_lookup_idarray;
268 + repopagestore_compress_page;
269 + repopagestore_disable_paging;
270 + repopagestore_free;
271 + repopagestore_init;
272 + repopagestore_load_page_range;
273 + repopagestore_read_or_setup_pages;
280 + repo_sidedata_create;
281 + repo_sidedata_extend;
286 + sat_chksum_create_from_bin;
289 + sat_chksum_get_type;
290 + sat_chksum_isfinished;
291 + sat_chksum_str2type;
292 + sat_chksum_type2str;
330 + solvable_get_location;
331 + solvable_identical;
332 + solvable_lookup_bin_checksum;
333 + solvable_lookup_bool;
334 + solvable_lookup_checksum;
335 + solvable_lookup_id;
336 + solvable_lookup_idarray;
337 + solvable_lookup_num;
338 + solvable_lookup_str;
339 + solvable_lookup_str_lang;
340 + solvable_lookup_str_poollang;
341 + solvable_lookup_void;
342 + solvable_selfprovidedep;
343 + solvable_trivial_installable_map;
344 + solvable_trivial_installable_queue;
345 + solvable_trivial_installable_repo;
346 + solver_addchoicerules;
347 + solver_addduprules;
348 + solver_addinfarchrules;
349 + solver_addrpmrulesforsolvable;
350 + solver_addrpmrulesforupdaters;
351 + solver_addrpmrulesforweak;
353 + solver_addupdaterule;
354 + solver_allruleinfos;
355 + solver_calc_duchanges;
356 + solver_calc_installsizechange;
357 + solver_calculate_noobsmap;
359 + solver_create_decisions_obsoletesmap;
360 + solver_createdupmaps;
361 + solver_dep_installed;
362 + solver_disablechoicerules;
363 + solver_disablepolicyrules;
364 + solver_disableproblem;
365 + solver_enableproblem;
366 + solver_findallproblemrules;
367 + solver_findproblemrule;
369 + solver_freedupmaps;
370 + solver_next_problem;
371 + solver_next_solution;
372 + solver_next_solutionelement;
373 + solver_prepare_solutions;
374 + solver_printallsolutions;
375 + solver_printcompleteprobleminfo;
376 + solver_printdecisionq;
377 + solver_printdecisions;
378 + solver_printproblem;
379 + solver_printprobleminfo;
380 + solver_printproblemruleinfo;
382 + solver_printruleclass;
383 + solver_printruleelement;
384 + solver_printsolution;
385 + solver_printtransaction;
386 + solver_printtrivial;
387 + solver_printwatches;
388 + solver_problem_count;
389 + solver_problemruleinfo;
390 + solver_problemruleinfo2str;
391 + solver_reenablepolicyrules;
397 + solver_solution_count;
398 + solver_solutionelement2str;
399 + solver_solutionelement_count;
401 + solver_splitprovides;
402 + solver_take_solution;
403 + solver_take_solutionelement;
404 + solver_trivial_installable;
410 + stringpool_freehash;
412 + stringpool_init_empty;
415 + stringpool_strn2id;
416 + transaction_add_obsoleted;
417 + transaction_all_obs_pkgs;
418 + transaction_calc_duchanges;
419 + transaction_calc_installsizechange;
420 + transaction_calculate;
421 + transaction_check_order;
422 + transaction_classify;
423 + transaction_classify_pkgs;
425 + transaction_free_orderdata;
427 + transaction_init_clone;
428 + transaction_installedresult;
429 + transaction_obs_pkg;
431 + transaction_order_add_choices;