1diff -rup old/libmysql/CMakeLists.txt new/libmysql/CMakeLists.txt
2--- old/libmysql/CMakeLists.txt	2013-11-05 08:19:26.000000000 +0100
3+++ new/libmysql/CMakeLists.txt	2014-01-10 15:41:30.530068723 +0100
4@@ -205,13 +205,14 @@ IF(NOT DISABLE_SHARED)
5       OUTPUT_NAME mysqlclient
6       VERSION "${OS_SHARED_LIB_VERSION}"
7       SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
8+    CONFIGURE_FILE(libmysql.ver.in ${CMAKE_CURRENT_BINARY_DIR}/libmysql.ver)
9     IF(LINK_FLAG_NO_UNDEFINED)
10       GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
11       IF(NOT libmysql_link_flag)
12         SET(libmysql_link_flags)
13       ENDIF()
14       SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
15-        "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED}")
16+        "${libmysql_link_flags} -Wl,--version-script=libmysql.ver ${LINK_FLAG_NO_UNDEFINED}")
17     ENDIF()
18     # clean direct output needs to be set several targets have the same name
19     #(mysqlclient in this case)
20diff -rup old/libmysql/libmysql.c new/libmysql/libmysql.c
21--- old/libmysql/libmysql.c	2013-11-05 08:19:26.000000000 +0100
22+++ new/libmysql/libmysql.c	2014-01-10 15:46:35.708928462 +0100
23@@ -4870,3 +4870,612 @@ my_bool STDCALL mysql_read_query_result(
24   return (*mysql->methods->read_query_result)(mysql);
25 }
26
27+#ifndef EMBEDDED_LIBRARY
28+
29+// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions
30+
31+#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16")
32+
33+void STDCALL symver16_myodbc_remove_escape(MYSQL *mysql,char *name)
34+{
35+  return myodbc_remove_escape(mysql, name);
36+}
37+SYM_16(myodbc_remove_escape);
38+
39+
40+my_ulonglong STDCALL symver16_mysql_affected_rows(MYSQL *mysql)
41+{
42+  return mysql_affected_rows(mysql);
43+}
44+SYM_16(mysql_affected_rows);
45+
46+
47+my_bool STDCALL symver16_mysql_autocommit(MYSQL * mysql, my_bool auto_mode)
48+{
49+  return mysql_autocommit(mysql, auto_mode);
50+}
51+SYM_16(mysql_autocommit);
52+
53+
54+my_bool STDCALL symver16_mysql_change_user(MYSQL *mysql, const char *user, const char *passwd, const char *db)
55+{
56+  return mysql_change_user(mysql, user, passwd, db);
57+}
58+SYM_16(mysql_change_user);
59+
60+
61+const char * STDCALL symver16_mysql_character_set_name(MYSQL *mysql)
62+{
63+  return mysql_character_set_name(mysql);
64+}
65+SYM_16(mysql_character_set_name);
66+
67+
68+my_bool STDCALL symver16_mysql_commit(MYSQL * mysql)
69+{
70+  return mysql_commit(mysql);
71+}
72+SYM_16(mysql_commit);
73+
74+
75+void STDCALL symver16_mysql_data_seek(MYSQL_RES *result, my_ulonglong row)
76+{
77+  return mysql_data_seek(result, row);
78+}
79+SYM_16(mysql_data_seek);
80+
81+
82+void STDCALL symver16_mysql_debug(const char *debug __attribute__((unused)))
83+{
84+  return mysql_debug(debug);
85+}
86+SYM_16(mysql_debug);
87+
88+
89+int STDCALL symver16_mysql_dump_debug_info(MYSQL *mysql)
90+{
91+  return mysql_dump_debug_info(mysql);
92+}
93+SYM_16(mysql_dump_debug_info);
94+
95+
96+my_bool STDCALL symver16_mysql_embedded(void)
97+{
98+  return mysql_embedded();
99+}
100+SYM_16(mysql_embedded);
101+
102+
103+my_bool STDCALL symver16_mysql_eof(MYSQL_RES *res)
104+{
105+  return mysql_eof(res);
106+}
107+SYM_16(mysql_eof);
108+
109+
110+ulong STDCALL symver16_mysql_escape_string(char *to,const char *from,ulong length)
111+{
112+  return mysql_escape_string(to, from, length);
113+}
114+SYM_16(mysql_escape_string);
115+
116+
117+MYSQL_FIELD * STDCALL symver16_mysql_fetch_field(MYSQL_RES *result)
118+{
119+  return mysql_fetch_field(result);
120+}
121+SYM_16(mysql_fetch_field);
122+
123+
124+MYSQL_FIELD * STDCALL symver16_mysql_fetch_field_direct(MYSQL_RES *res,uint fieldnr)
125+{
126+  return mysql_fetch_field_direct(res, fieldnr);
127+}
128+SYM_16(mysql_fetch_field_direct);
129+
130+
131+MYSQL_FIELD * STDCALL symver16_mysql_fetch_fields(MYSQL_RES *res)
132+{
133+  return mysql_fetch_fields(res);
134+}
135+SYM_16(mysql_fetch_fields);
136+
137+
138+unsigned int STDCALL symver16_mysql_field_count(MYSQL *mysql)
139+{
140+  return mysql_field_count(mysql);
141+}
142+SYM_16(mysql_field_count);
143+
144+
145+MYSQL_FIELD_OFFSET STDCALL symver16_mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET field_offset)
146+{
147+  return mysql_field_seek(result, field_offset);
148+}
149+SYM_16(mysql_field_seek);
150+
151+
152+MYSQL_FIELD_OFFSET STDCALL symver16_mysql_field_tell(MYSQL_RES *res)
153+{
154+  return mysql_field_tell(res);
155+}
156+SYM_16(mysql_field_tell);
157+
158+
159+void STDCALL symver16_mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *csinfo)
160+{
161+  return mysql_get_character_set_info(mysql, csinfo);
162+}
163+SYM_16(mysql_get_character_set_info);
164+
165+
166+const char * STDCALL symver16_mysql_get_client_info(void)
167+{
168+  return mysql_get_client_info();
169+}
170+SYM_16(mysql_get_client_info);
171+
172+ulong STDCALL symver16_mysql_get_client_version(void)
173+{
174+  return mysql_get_client_version();
175+}
176+SYM_16(mysql_get_client_version);
177+
178+
179+const char * STDCALL symver16_mysql_get_host_info(MYSQL *mysql)
180+{
181+  return mysql_get_host_info(mysql);
182+}
183+SYM_16(mysql_get_host_info);
184+
185+
186+MYSQL_PARAMETERS *STDCALL symver16_mysql_get_parameters(void)
187+{
188+  return mysql_get_parameters();
189+}
190+SYM_16(mysql_get_parameters);
191+
192+
193+uint STDCALL symver16_mysql_get_proto_info(MYSQL *mysql)
194+{
195+  return mysql_get_proto_info(mysql);
196+}
197+SYM_16(mysql_get_proto_info);
198+
199+
200+const char * STDCALL symver16_mysql_get_server_info(MYSQL *mysql)
201+{
202+  return mysql_get_server_info(mysql);
203+}
204+SYM_16(mysql_get_server_info);
205+
206+
207+ulong STDCALL symver16_mysql_hex_string(char *to, const char *from, ulong length)
208+{
209+  return mysql_hex_string(to, from, length);
210+}
211+SYM_16(mysql_hex_string);
212+
213+
214+const char *STDCALL symver16_mysql_info(MYSQL *mysql)
215+{
216+  return mysql_info(mysql);
217+}
218+SYM_16(mysql_info);
219+
220+
221+my_ulonglong STDCALL symver16_mysql_insert_id(MYSQL *mysql)
222+{
223+  return mysql_insert_id(mysql);
224+}
225+SYM_16(mysql_insert_id);
226+
227+
228+int STDCALL symver16_mysql_kill(MYSQL *mysql,ulong pid)
229+{
230+  return mysql_kill(mysql, pid);
231+}
232+SYM_16(mysql_kill);
233+
234+
235+MYSQL_RES * STDCALL symver16_mysql_list_dbs(MYSQL *mysql, const char *wild)
236+{
237+  return mysql_list_dbs(mysql, wild);
238+}
239+SYM_16(mysql_list_dbs);
240+
241+
242+MYSQL_RES * STDCALL symver16_mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
243+{
244+  return mysql_list_fields(mysql, table, wild);
245+}
246+SYM_16(mysql_list_fields);
247+
248+
249+MYSQL_RES * STDCALL symver16_mysql_list_processes(MYSQL *mysql)
250+{
251+  return mysql_list_processes(mysql);
252+}
253+SYM_16(mysql_list_processes);
254+
255+
256+MYSQL_RES * STDCALL symver16_mysql_list_tables(MYSQL *mysql, const char *wild)
257+{
258+  return mysql_list_tables(mysql, wild);
259+}
260+SYM_16(mysql_list_tables);
261+
262+
263+my_bool STDCALL symver16_mysql_more_results(MYSQL *mysql)
264+{
265+  return mysql_more_results(mysql);
266+}
267+SYM_16(mysql_more_results);
268+
269+
270+int STDCALL symver16_mysql_next_result(MYSQL *mysql)
271+{
272+  return mysql_next_result(mysql);
273+}
274+SYM_16(mysql_next_result);
275+
276+
277+int STDCALL symver16_mysql_ping(MYSQL *mysql)
278+{
279+  return mysql_ping(mysql);
280+}
281+SYM_16(mysql_ping);
282+
283+
284+int STDCALL symver16_mysql_query(MYSQL *mysql, const char *query)
285+{
286+  return mysql_query(mysql, query);
287+}
288+SYM_16(mysql_query);
289+
290+
291+my_bool STDCALL symver16_mysql_read_query_result(MYSQL *mysql)
292+{
293+  return mysql_read_query_result(mysql);
294+}
295+SYM_16(mysql_read_query_result);
296+
297+
298+ulong STDCALL symver16_mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, ulong length)
299+{
300+  return mysql_real_escape_string(mysql, to, from, length);
301+}
302+SYM_16(mysql_real_escape_string);
303+
304+
305+int STDCALL symver16_mysql_refresh(MYSQL *mysql,uint options)
306+{
307+  return mysql_refresh(mysql, options);
308+}
309+SYM_16(mysql_refresh);
310+
311+
312+my_bool STDCALL symver16_mysql_rollback(MYSQL * mysql)
313+{
314+  return mysql_rollback(mysql);
315+}
316+SYM_16(mysql_rollback);
317+
318+
319+MYSQL_ROW_OFFSET STDCALL symver16_mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET row)
320+{
321+  return mysql_row_seek(result, row);
322+}
323+SYM_16(mysql_row_seek);
324+
325+
326+MYSQL_ROW_OFFSET STDCALL symver16_mysql_row_tell(MYSQL_RES *res)
327+{
328+  return mysql_row_tell(res);
329+}
330+SYM_16(mysql_row_tell);
331+
332+
333+void STDCALL symver16_mysql_server_end()
334+{
335+  return mysql_server_end();
336+}
337+SYM_16(mysql_server_end);
338+
339+
340+int STDCALL symver16_mysql_server_init(int argc __attribute__((unused)), char **argv __attribute__((unused)), char **groups __attribute__((unused)))
341+{
342+  return mysql_server_init(argc, argv, groups);
343+}
344+SYM_16(mysql_server_init);
345+
346+
347+void symver16_mysql_set_local_infile_default(MYSQL *mysql)
348+{
349+  return mysql_set_local_infile_default(mysql);
350+}
351+SYM_16(mysql_set_local_infile_default);
352+
353+
354+void symver16_mysql_set_local_infile_handler(MYSQL *mysql, int (*local_infile_init)(void **, const char *, void *), int (*local_infile_read)(void *, char *, uint), void (*local_infile_end)(void *), int (*local_infile_error)(void *, char *, uint), void *userdata)
355+{
356+  return mysql_set_local_infile_handler(mysql, local_infile_init, local_infile_read, local_infile_end, local_infile_error, userdata);
357+}
358+SYM_16(mysql_set_local_infile_handler);
359+
360+
361+int STDCALL symver16_mysql_set_server_option(MYSQL *mysql, enum enum_mysql_set_option option)
362+{
363+  return mysql_set_server_option(mysql, option);
364+}
365+SYM_16(mysql_set_server_option);
366+
367+
368+int STDCALL symver16_mysql_shutdown(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level)
369+{
370+  return mysql_shutdown(mysql, shutdown_level);
371+}
372+SYM_16(mysql_shutdown);
373+
374+
375+const char *STDCALL symver16_mysql_sqlstate(MYSQL *mysql)
376+{
377+  return mysql_sqlstate(mysql);
378+}
379+SYM_16(mysql_sqlstate);
380+
381+
382+const char * STDCALL symver16_mysql_stat(MYSQL *mysql)
383+{
384+  return mysql_stat(mysql);
385+}
386+SYM_16(mysql_stat);
387+
388+
389+my_ulonglong STDCALL symver16_mysql_stmt_affected_rows(MYSQL_STMT *stmt)
390+{
391+  return mysql_stmt_affected_rows(stmt);
392+}
393+SYM_16(mysql_stmt_affected_rows);
394+
395+
396+my_bool STDCALL symver16_mysql_stmt_attr_get(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, void *value)
397+{
398+  return mysql_stmt_attr_get(stmt, attr_type, value);
399+}
400+SYM_16(mysql_stmt_attr_get);
401+
402+
403+my_bool STDCALL symver16_mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, const void *value)
404+{
405+  return mysql_stmt_attr_set(stmt, attr_type, value);
406+}
407+SYM_16(mysql_stmt_attr_set);
408+
409+
410+my_bool STDCALL symver16_mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *my_bind)
411+{
412+  return mysql_stmt_bind_param(stmt, my_bind);
413+}
414+SYM_16(mysql_stmt_bind_param);
415+
416+
417+my_bool STDCALL symver16_mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *my_bind)
418+{
419+  return mysql_stmt_bind_result(stmt, my_bind);
420+}
421+SYM_16(mysql_stmt_bind_result);
422+
423+
424+my_bool STDCALL symver16_mysql_stmt_close(MYSQL_STMT *stmt)
425+{
426+  return mysql_stmt_close(stmt);
427+}
428+SYM_16(mysql_stmt_close);
429+
430+
431+void STDCALL symver16_mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong row)
432+{
433+  return mysql_stmt_data_seek(stmt, row);
434+}
435+SYM_16(mysql_stmt_data_seek);
436+
437+
438+uint STDCALL symver16_mysql_stmt_errno(MYSQL_STMT * stmt)
439+{
440+  return mysql_stmt_errno(stmt);
441+}
442+SYM_16(mysql_stmt_errno);
443+
444+
445+const char *STDCALL symver16_mysql_stmt_error(MYSQL_STMT * stmt)
446+{
447+  return mysql_stmt_error(stmt);
448+}
449+SYM_16(mysql_stmt_error);
450+
451+
452+int STDCALL symver16_mysql_stmt_execute(MYSQL_STMT *stmt)
453+{
454+  return mysql_stmt_execute(stmt);
455+}
456+SYM_16(mysql_stmt_execute);
457+
458+
459+int STDCALL symver16_mysql_stmt_fetch(MYSQL_STMT *stmt)
460+{
461+  return mysql_stmt_fetch(stmt);
462+}
463+SYM_16(mysql_stmt_fetch);
464+
465+
466+int STDCALL symver16_mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *my_bind, uint column, ulong offset)
467+{
468+  return mysql_stmt_fetch_column(stmt, my_bind, column, offset);
469+}
470+SYM_16(mysql_stmt_fetch_column);
471+
472+
473+unsigned int STDCALL symver16_mysql_stmt_field_count(MYSQL_STMT *stmt)
474+{
475+  return mysql_stmt_field_count(stmt);
476+}
477+SYM_16(mysql_stmt_field_count);
478+
479+
480+my_bool STDCALL symver16_mysql_stmt_free_result(MYSQL_STMT *stmt)
481+{
482+  return mysql_stmt_free_result(stmt);
483+}
484+SYM_16(mysql_stmt_free_result);
485+
486+
487+MYSQL_STMT * STDCALL symver16_mysql_stmt_init(MYSQL *mysql)
488+{
489+  return mysql_stmt_init(mysql);
490+}
491+SYM_16(mysql_stmt_init);
492+
493+
494+my_ulonglong STDCALL symver16_mysql_stmt_insert_id(MYSQL_STMT *stmt)
495+{
496+  return mysql_stmt_insert_id(stmt);
497+}
498+SYM_16(mysql_stmt_insert_id);
499+
500+
501+my_ulonglong STDCALL symver16_mysql_stmt_num_rows(MYSQL_STMT *stmt)
502+{
503+  return mysql_stmt_num_rows(stmt);
504+}
505+SYM_16(mysql_stmt_num_rows);
506+
507+
508+ulong STDCALL symver16_mysql_stmt_param_count(MYSQL_STMT * stmt)
509+{
510+  return mysql_stmt_param_count(stmt);
511+}
512+SYM_16(mysql_stmt_param_count);
513+
514+
515+MYSQL_RES * STDCALL symver16_mysql_stmt_param_metadata(MYSQL_STMT *stmt)
516+{
517+  return mysql_stmt_param_metadata(stmt);
518+}
519+SYM_16(mysql_stmt_param_metadata);
520+
521+
522+int STDCALL symver16_mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length)
523+{
524+  return mysql_stmt_prepare(stmt, query, length);
525+}
526+SYM_16(mysql_stmt_prepare);
527+
528+
529+my_bool STDCALL symver16_mysql_stmt_reset(MYSQL_STMT *stmt)
530+{
531+  return mysql_stmt_reset(stmt);
532+}
533+SYM_16(mysql_stmt_reset);
534+
535+
536+MYSQL_RES * STDCALL symver16_mysql_stmt_result_metadata(MYSQL_STMT *stmt)
537+{
538+  return mysql_stmt_result_metadata(stmt);
539+}
540+SYM_16(mysql_stmt_result_metadata);
541+
542+
543+MYSQL_ROW_OFFSET STDCALL symver16_mysql_stmt_row_seek(MYSQL_STMT *stmt, MYSQL_ROW_OFFSET row)
544+{
545+  return mysql_stmt_row_seek(stmt, row);
546+}
547+SYM_16(mysql_stmt_row_seek);
548+
549+
550+MYSQL_ROW_OFFSET STDCALL symver16_mysql_stmt_row_tell(MYSQL_STMT *stmt)
551+{
552+  return mysql_stmt_row_tell(stmt);
553+}
554+SYM_16(mysql_stmt_row_tell);
555+
556+
557+my_bool STDCALL symver16_mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number, const char *data, ulong length)
558+{
559+  return mysql_stmt_send_long_data(stmt, param_number, data, length);
560+}
561+SYM_16(mysql_stmt_send_long_data);
562+
563+
564+const char *STDCALL symver16_mysql_stmt_sqlstate(MYSQL_STMT * stmt)
565+{
566+  return mysql_stmt_sqlstate(stmt);
567+}
568+SYM_16(mysql_stmt_sqlstate);
569+
570+
571+int STDCALL symver16_mysql_stmt_store_result(MYSQL_STMT *stmt)
572+{
573+  return mysql_stmt_store_result(stmt);
574+}
575+SYM_16(mysql_stmt_store_result);
576+
577+
578+void STDCALL symver16_mysql_thread_end()
579+{
580+  return mysql_thread_end();
581+}
582+SYM_16(mysql_thread_end);
583+
584+
585+ulong STDCALL symver16_mysql_thread_id(MYSQL *mysql)
586+{
587+  return mysql_thread_id(mysql);
588+}
589+SYM_16(mysql_thread_id);
590+
591+
592+my_bool STDCALL symver16_mysql_thread_init()
593+{
594+  return mysql_thread_init();
595+}
596+SYM_16(mysql_thread_init);
597+
598+
599+uint STDCALL symver16_mysql_thread_safe(void)
600+{
601+  return mysql_thread_safe();
602+}
603+SYM_16(mysql_thread_safe);
604+
605+
606+MYSQL_RES * STDCALL symver16_mysql_use_result(MYSQL *mysql)
607+{
608+  return mysql_use_result(mysql);
609+}
610+SYM_16(mysql_use_result);
611+
612+
613+uint STDCALL symver16_mysql_warning_count(MYSQL *mysql)
614+{
615+  return mysql_warning_count(mysql);
616+}
617+SYM_16(mysql_warning_count);
618+
619+/*****/
620+
621+MYSQL * STDCALL symver16_mysql_real_connect(MYSQL *mysql,const char *host, const char *user, const char *passwd, const char *db, uint port, const char *unix_socket,ulong client_flag)
622+{
623+  return mysql_real_connect(mysql, host, user, passwd, db, port, unix_socket, client_flag);
624+}
625+SYM_16(mysql_real_connect);
626+
627+/*****/
628+
629+my_bool symver16_my_init(void)
630+{
631+  return my_init();
632+}
633+SYM_16(my_init);
634+
635+#endif
636diff -rup old/libmysql/libmysql.ver.in new/libmysql/libmysql.ver.in
637--- old/libmysql/libmysql.ver.in	2013-11-05 08:19:26.000000000 +0100
638+++ new/libmysql/libmysql.ver.in	2014-01-10 15:41:30.545182782 +0100
639@@ -1 +1,136 @@
640-libmysqlclient_@SHARED_LIB_MAJOR_VERSION@ { global: *; };
641+libmysqlclient_16
642+{
643+  local:
644+    symver16_*;
645+};
646+
647+libmysqlclient_18
648+{
649+  global:
650+    my_init;
651+    myodbc_remove_escape;
652+    mysql_affected_rows;
653+    mysql_autocommit;
654+    mysql_change_user;
655+    mysql_character_set_name;
656+    mysql_close;
657+    mysql_commit;
658+    mysql_data_seek;
659+    mysql_debug;
660+    mysql_dump_debug_info;
661+    mysql_embedded;
662+    mysql_eof;
663+    mysql_errno;
664+    mysql_error;
665+    mysql_escape_string;
666+    mysql_fetch_field;
667+    mysql_fetch_field_direct;
668+    mysql_fetch_fields;
669+    mysql_fetch_lengths;
670+    mysql_fetch_row;
671+    mysql_field_count;
672+    mysql_field_seek;
673+    mysql_field_tell;
674+    mysql_free_result;
675+    mysql_get_character_set_info;
676+    mysql_get_client_info;
677+    mysql_get_client_version;
678+    mysql_get_host_info;
679+    mysql_get_parameters;
680+    mysql_get_proto_info;
681+    mysql_get_server_info;
682+    mysql_get_server_version;
683+    mysql_get_ssl_cipher;
684+    mysql_hex_string;
685+    mysql_info;
686+    mysql_init;
687+    mysql_insert_id;
688+    mysql_kill;
689+    mysql_list_dbs;
690+    mysql_list_fields;
691+    mysql_list_processes;
692+    mysql_list_tables;
693+    mysql_more_results;
694+    mysql_next_result;
695+    mysql_num_fields;
696+    mysql_num_rows;
697+    mysql_options;
698+    mysql_ping;
699+    mysql_query;
700+    mysql_read_query_result;
701+    mysql_real_connect;
702+    mysql_real_escape_string;
703+    mysql_real_query;
704+    mysql_refresh;
705+    mysql_rollback;
706+    mysql_row_seek;
707+    mysql_row_tell;
708+    mysql_select_db;
709+    mysql_send_query;
710+    mysql_server_end;
711+    mysql_server_init;
712+    mysql_set_character_set;
713+    mysql_set_local_infile_default;
714+    mysql_set_local_infile_handler;
715+    mysql_set_server_option;
716+    mysql_shutdown;
717+    mysql_sqlstate;
718+    mysql_ssl_set;
719+    mysql_stat;
720+    mysql_stmt_affected_rows;
721+    mysql_stmt_attr_get;
722+    mysql_stmt_attr_set;
723+    mysql_stmt_bind_param;
724+    mysql_stmt_bind_result;
725+    mysql_stmt_close;
726+    mysql_stmt_data_seek;
727+    mysql_stmt_errno;
728+    mysql_stmt_error;
729+    mysql_stmt_execute;
730+    mysql_stmt_fetch;
731+    mysql_stmt_fetch_column;
732+    mysql_stmt_field_count;
733+    mysql_stmt_free_result;
734+    mysql_stmt_init;
735+    mysql_stmt_insert_id;
736+    mysql_stmt_num_rows;
737+    mysql_stmt_param_count;
738+    mysql_stmt_param_metadata;
739+    mysql_stmt_prepare;
740+    mysql_stmt_reset;
741+    mysql_stmt_result_metadata;
742+    mysql_stmt_row_seek;
743+    mysql_stmt_row_tell;
744+    mysql_stmt_send_long_data;
745+    mysql_stmt_sqlstate;
746+    mysql_stmt_store_result;
747+    mysql_store_result;
748+    mysql_thread_end;
749+    mysql_thread_id;
750+    mysql_thread_init;
751+    mysql_thread_safe;
752+    mysql_use_result;
753+    mysql_warning_count;
754+
755+    free_defaults;
756+    handle_options;
757+    load_defaults;
758+    my_print_help;
759+
760+    #my_make_scrambled_password;
761+    THR_KEY_mysys;
762+
763+    mysql_client_find_plugin;
764+    mysql_client_register_plugin;
765+    mysql_load_plugin;
766+    mysql_load_plugin_v;
767+    mysql_plugin_options;
768+    mysql_stmt_next_result;
769+
770+    #mysql_default_charset_info;
771+    mysql_get_charset;
772+    mysql_get_charset_by_csname;
773+    mysql_net_realloc;
774+    #mysql_client_errors;
775+    *;
776+} libmysqlclient_16;
777diff -rup old/mysys/charset.c new/mysys/charset.c
778--- old/mysys/charset.c	2013-11-05 08:19:26.000000000 +0100
779+++ new/mysys/charset.c	2014-01-10 15:41:30.552919678 +0100
780@@ -941,3 +941,20 @@ size_t escape_quotes_for_mysql(CHARSET_I
781   *to= 0;
782   return overflow ? (ulong)~0 : (ulong) (to - to_start);
783 }
784+
785+#ifndef EMBEDDED_LIBRARY
786+
787+// Hack to provide Fedora symbols
788+
789+CHARSET_INFO *mysql_get_charset(uint cs_number, myf flags)
790+{
791+  return get_charset(cs_number, flags);
792+}
793+
794+
795+CHARSET_INFO * mysql_get_charset_by_csname(const char *cs_name, uint cs_flags, myf flags)
796+{
797+  return get_charset_by_csname(cs_name, cs_flags, flags);
798+}
799+
800+#endif
801diff -rup old/sql/net_serv.cc new/sql/net_serv.cc
802--- old/sql/net_serv.cc	2013-11-05 08:19:26.000000000 +0100
803+++ new/sql/net_serv.cc	2014-01-10 15:41:30.563377346 +0100
804@@ -1190,3 +1190,17 @@ void my_net_set_write_timeout(NET *net,
805 #endif
806   DBUG_VOID_RETURN;
807 }
808+
809+#ifndef EMBEDDED_LIBRARY
810+C_MODE_START
811+
812+// Hack to provide Fedora symbols
813+
814+my_bool mysql_net_realloc(NET *net, size_t length)
815+{
816+  return net_realloc(net, length);
817+}
818+
819+C_MODE_END
820+#endif
821+
822diff -rup old/sql/password.c new/sql/password.c
823--- old/sql/password.c	2013-11-05 08:19:26.000000000 +0100
824+++ new/sql/password.c	2014-01-10 15:41:30.567134663 +0100
825@@ -563,3 +563,17 @@ void make_password_from_salt(char *to, c
826   *to++= PVERSION41_CHAR;
827   octet2hex(to, (const char*) hash_stage2, SHA1_HASH_SIZE);
828 }
829+
830+#ifndef EMBEDDED_LIBRARY
831+
832+// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions
833+
834+#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16")
835+
836+void symver16_my_make_scrambled_password(char *to, const char *password, size_t pass_len)
837+{
838+  my_make_scrambled_password(to, password, pass_len);
839+}
840+SYM_16(my_make_scrambled_password);
841+
842+#endif
843diff -rup old/sql-common/client.c new/sql-common/client.c
844--- old/sql-common/client.c	2013-11-05 08:19:26.000000000 +0100
845+++ new/sql-common/client.c	2014-01-10 15:41:30.574151024 +0100
846@@ -4399,3 +4399,136 @@ static int clear_password_auth_client(MY
847
848   return res ? CR_ERROR : CR_OK;
849 }
850+
851+#ifndef EMBEDDED_LIBRARY
852+
853+// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions
854+
855+#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16")
856+
857+void STDCALL symver16_mysql_close(MYSQL *mysql)
858+{
859+  return mysql_close(mysql);
860+}
861+SYM_16(mysql_close);
862+
863+
864+uint STDCALL symver16_mysql_errno(MYSQL *mysql)
865+{
866+  return mysql_errno(mysql);
867+}
868+SYM_16(mysql_errno);
869+
870+
871+const char * STDCALL symver16_mysql_error(MYSQL *mysql)
872+{
873+  return mysql_error(mysql);
874+}
875+SYM_16(mysql_error);
876+
877+
878+ulong * STDCALL symver16_mysql_fetch_lengths(MYSQL_RES *res)
879+{
880+  return mysql_fetch_lengths(res);
881+}
882+SYM_16(mysql_fetch_lengths);
883+
884+
885+MYSQL_ROW STDCALL symver16_mysql_fetch_row(MYSQL_RES *res)
886+{
887+  return mysql_fetch_row(res);
888+}
889+SYM_16(mysql_fetch_row);
890+
891+
892+void STDCALL symver16_mysql_free_result(MYSQL_RES *result)
893+{
894+  return mysql_free_result(result);
895+}
896+SYM_16(mysql_free_result);
897+
898+
899+ulong STDCALL symver16_mysql_get_server_version(MYSQL *mysql)
900+{
901+  return mysql_get_server_version(mysql);
902+}
903+SYM_16(mysql_get_server_version);
904+
905+
906+const char * STDCALL symver16_mysql_get_ssl_cipher(MYSQL *mysql __attribute__((unused)))
907+{
908+  return mysql_get_ssl_cipher(mysql);
909+}
910+SYM_16(mysql_get_ssl_cipher);
911+
912+
913+MYSQL * STDCALL symver16_mysql_init(MYSQL *mysql)
914+{
915+  return mysql_init(mysql);
916+}
917+SYM_16(mysql_init);
918+
919+
920+unsigned int STDCALL symver16_mysql_num_fields(MYSQL_RES *res)
921+{
922+  return mysql_num_fields(res);
923+}
924+SYM_16(mysql_num_fields);
925+
926+
927+my_ulonglong STDCALL symver16_mysql_num_rows(MYSQL_RES *res)
928+{
929+  return mysql_num_rows(res);
930+}
931+SYM_16(mysql_num_rows);
932+
933+
934+int STDCALL symver16_mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg)
935+{
936+  return mysql_options(mysql, option, arg);
937+}
938+SYM_16(mysql_options);
939+
940+
941+int STDCALL symver16_mysql_real_query(MYSQL *mysql, const char *query, ulong length)
942+{
943+  return mysql_real_query(mysql, query, length);
944+}
945+SYM_16(mysql_real_query);
946+
947+
948+int STDCALL symver16_mysql_select_db(MYSQL *mysql, const char *db)
949+{
950+  return mysql_select_db(mysql, db);
951+}
952+SYM_16(mysql_select_db);
953+
954+
955+int STDCALL symver16_mysql_send_query(MYSQL* mysql, const char* query, ulong length)
956+{
957+  return mysql_send_query(mysql, query, length);
958+}
959+SYM_16(mysql_send_query);
960+
961+
962+int STDCALL symver16_mysql_set_character_set(MYSQL *mysql, const char *cs_name)
963+{
964+  return mysql_set_character_set(mysql, cs_name);
965+}
966+SYM_16(mysql_set_character_set);
967+
968+
969+my_bool STDCALL symver16_mysql_ssl_set(MYSQL *mysql __attribute__((unused)), const char *key __attribute__((unused)), const char *cert __attribute__((unused)), const char *ca __attribute__((unused)), const char *capath __attribute__((unused)), const char *cipher __attribute__((unused)))
970+{
971+  return mysql_ssl_set(mysql, key, cert, ca, capath, cipher);
972+}
973+SYM_16(mysql_ssl_set);
974+
975+
976+MYSQL_RES * STDCALL symver16_mysql_store_result(MYSQL *mysql)
977+{
978+  return mysql_store_result(mysql);
979+}
980+SYM_16(mysql_store_result);
981+
982+#endif
983