| From a3ead155cca3fac2ce4bf6da10ef7733c6d8433c Mon Sep 17 00:00:00 2001 |
| From: Dmitry Torokhov <dtor@chromium.org> |
| Date: Tue, 26 Mar 2019 09:53:05 -0700 |
| Subject: [PATCH] Provide 0.4.3 compat versions for select symbols |
| |
| 0.5.0 release broke ABI by needlessly changing symbol table version. |
| Unfortunately as our process of building Chrome OS release is 2-step, |
| with Chrome built separately against SDK and then being dropped into the |
| final image, and SDK being uprevved when new version lands in Chrome, we |
| need to provide an upgrade path. Because ABI on the API itself was not |
| broken, only versioning was, we provide aliases for symbols needed by |
| Chrome and let it load on image with newer library. |
| |
| Signed-off-by: Dmitry Torokhov <dtor@chromium.org> |
| --- |
| src/context.c | 4 ++++ |
| src/keymap.c | 8 ++++++++ |
| src/keysym-utf.c | 1 + |
| src/state.c | 9 +++++++++ |
| xkbcommon.map | 3 +++ |
| 5 files changed, 25 insertions(+) |
| |
| diff --git a/src/context.c b/src/context.c |
| index 50993e1..14af7ae 100644 |
| --- a/src/context.c |
| +++ b/src/context.c |
| @@ -68,6 +68,7 @@ err: |
| darray_append(ctx->failed_includes, tmp); |
| return 0; |
| } |
| +__asm__(".symver xkb_context_include_path_append,xkb_context_include_path_append@V_0.4.3"); |
| |
| /** |
| * Append the default include directories to the context. |
| @@ -156,6 +157,7 @@ xkb_context_ref(struct xkb_context *ctx) |
| ctx->refcnt++; |
| return ctx; |
| } |
| +__asm__(".symver xkb_context_ref,xkb_context_ref@V_0.4.3"); |
| |
| /** |
| * Drop an existing reference on the context, and free it if the refcnt is |
| @@ -171,6 +173,7 @@ xkb_context_unref(struct xkb_context *ctx) |
| atom_table_free(ctx->atom_table); |
| free(ctx); |
| } |
| +__asm__(".symver xkb_context_unref,xkb_context_unref@V_0.4.3"); |
| |
| static const char * |
| log_level_to_prefix(enum xkb_log_level level) |
| @@ -282,6 +285,7 @@ xkb_context_new(enum xkb_context_flags flags) |
| |
| return ctx; |
| } |
| +__asm__(".symver xkb_context_new,xkb_context_new@V_0.4.3"); |
| |
| XKB_EXPORT void |
| xkb_context_set_log_fn(struct xkb_context *ctx, |
| diff --git a/src/keymap.c b/src/keymap.c |
| index 859c64a..e900acb 100644 |
| --- a/src/keymap.c |
| +++ b/src/keymap.c |
| @@ -59,6 +59,7 @@ xkb_keymap_ref(struct xkb_keymap *keymap) |
| keymap->refcnt++; |
| return keymap; |
| } |
| +__asm__(".symver xkb_keymap_ref,xkb_keymap_ref@V_0.4.3"); |
| |
| XKB_EXPORT void |
| xkb_keymap_unref(struct xkb_keymap *keymap) |
| @@ -100,6 +101,7 @@ xkb_keymap_unref(struct xkb_keymap *keymap) |
| xkb_context_unref(keymap->ctx); |
| free(keymap); |
| } |
| +__asm__(".symver xkb_keymap_unref,xkb_keymap_unref@V_0.4.3"); |
| |
| static const struct xkb_keymap_format_ops * |
| get_keymap_format_ops(enum xkb_keymap_format format) |
| @@ -152,6 +154,7 @@ xkb_keymap_new_from_names(struct xkb_context *ctx, |
| |
| return keymap; |
| } |
| +__asm__(".symver xkb_keymap_new_from_names,xkb_keymap_new_from_names@V_0.4.3"); |
| |
| XKB_EXPORT struct xkb_keymap * |
| xkb_keymap_new_from_string(struct xkb_context *ctx, |
| @@ -162,6 +165,7 @@ xkb_keymap_new_from_string(struct xkb_context *ctx, |
| return xkb_keymap_new_from_buffer(ctx, string, strlen(string), |
| format, flags); |
| } |
| +__asm__(".symver xkb_keymap_new_from_string,xkb_keymap_new_from_string@V_0.4.3"); |
| |
| XKB_EXPORT struct xkb_keymap * |
| xkb_keymap_new_from_buffer(struct xkb_context *ctx, |
| @@ -199,6 +203,7 @@ xkb_keymap_new_from_buffer(struct xkb_context *ctx, |
| |
| return keymap; |
| } |
| +__asm__(".symver xkb_keymap_new_from_buffer,xkb_keymap_new_from_buffer@V_0.4.3"); |
| |
| XKB_EXPORT struct xkb_keymap * |
| xkb_keymap_new_from_file(struct xkb_context *ctx, |
| @@ -254,6 +259,7 @@ xkb_keymap_get_as_string(struct xkb_keymap *keymap, |
| |
| return ops->keymap_get_as_string(keymap); |
| } |
| +__asm__(".symver xkb_keymap_get_as_string,xkb_keymap_get_as_string@V_0.4.3"); |
| |
| /** |
| * Returns the total number of modifiers active in the keymap. |
| @@ -290,6 +296,7 @@ xkb_keymap_mod_get_index(struct xkb_keymap *keymap, const char *name) |
| |
| return XkbModNameToIndex(&keymap->mods, atom, MOD_BOTH); |
| } |
| +__asm__(".symver xkb_keymap_mod_get_index,xkb_keymap_mod_get_index@V_0.4.3"); |
| |
| /** |
| * Return the total number of active groups in the keymap. |
| @@ -517,3 +524,4 @@ xkb_keymap_key_repeats(struct xkb_keymap *keymap, xkb_keycode_t kc) |
| |
| return key->repeats; |
| } |
| +__asm__(".symver xkb_keymap_key_repeats,xkb_keymap_key_repeats@V_0.4.3"); |
| diff --git a/src/keysym-utf.c b/src/keysym-utf.c |
| index c0e76f5..cc32e44 100644 |
| --- a/src/keysym-utf.c |
| +++ b/src/keysym-utf.c |
| @@ -894,6 +894,7 @@ xkb_keysym_to_utf32(xkb_keysym_t keysym) |
| /* search main table */ |
| return bin_search(keysymtab, ARRAY_SIZE(keysymtab) - 1, keysym); |
| } |
| +__asm__(".symver xkb_keysym_to_utf32,xkb_keysym_to_utf32@V_0.4.3"); |
| |
| /* |
| * Copyright © 2012 Intel Corporation |
| diff --git a/src/state.c b/src/state.c |
| index 16a4caa..5c77a6f 100644 |
| --- a/src/state.c |
| +++ b/src/state.c |
| @@ -604,6 +604,7 @@ xkb_state_new(struct xkb_keymap *keymap) |
| |
| return ret; |
| } |
| +__asm__(".symver xkb_state_new,xkb_state_new@V_0.4.3"); |
| |
| XKB_EXPORT struct xkb_state * |
| xkb_state_ref(struct xkb_state *state) |
| @@ -611,6 +612,7 @@ xkb_state_ref(struct xkb_state *state) |
| state->refcnt++; |
| return state; |
| } |
| +__asm__(".symver xkb_state_ref,xkb_state_ref@V_0.4.3"); |
| |
| XKB_EXPORT void |
| xkb_state_unref(struct xkb_state *state) |
| @@ -622,6 +624,7 @@ xkb_state_unref(struct xkb_state *state) |
| darray_free(state->filters); |
| free(state); |
| } |
| +__asm__(".symver xkb_state_unref,xkb_state_unref@V_0.4.3"); |
| |
| XKB_EXPORT struct xkb_keymap * |
| xkb_state_get_keymap(struct xkb_state *state) |
| @@ -847,6 +850,7 @@ xkb_state_update_mask(struct xkb_state *state, |
| |
| return get_state_component_changes(&prev_components, &state->components); |
| } |
| +__asm__(".symver xkb_state_update_mask,xkb_state_update_mask@V_0.4.3"); |
| |
| /** |
| * Provides the symbols to use for the given key and state. Returns the |
| @@ -943,6 +947,7 @@ xkb_state_key_get_one_sym(struct xkb_state *state, xkb_keycode_t kc) |
| |
| return sym; |
| } |
| +__asm__(".symver xkb_state_key_get_one_sym,xkb_state_key_get_one_sym@V_0.4.3"); |
| |
| /* |
| * The caps and ctrl transformations require some special handling, |
| @@ -1066,6 +1071,7 @@ xkb_state_key_get_utf32(struct xkb_state *state, xkb_keycode_t kc) |
| |
| return cp; |
| } |
| +__asm__(".symver xkb_state_key_get_utf32,xkb_state_key_get_utf32@V_0.4.3"); |
| |
| /** |
| * Serialises the requested modifier state into an xkb_mod_mask_t, with all |
| @@ -1089,6 +1095,7 @@ xkb_state_serialize_mods(struct xkb_state *state, |
| |
| return ret; |
| } |
| +__asm__(".symver xkb_state_serialize_mods,xkb_state_serialize_mods@V_0.4.3"); |
| |
| /** |
| * Serialises the requested group state, with all the same disclaimers as |
| @@ -1112,6 +1119,7 @@ xkb_state_serialize_layout(struct xkb_state *state, |
| |
| return ret; |
| } |
| +__asm__(".symver xkb_state_serialize_layout,xkb_state_serialize_layout@V_0.4.3"); |
| |
| /** |
| * Gets a modifier mask and returns the resolved effective mask; this |
| @@ -1220,6 +1228,7 @@ xkb_state_mod_name_is_active(struct xkb_state *state, const char *name, |
| |
| return xkb_state_mod_index_is_active(state, idx, type); |
| } |
| +__asm__(".symver xkb_state_mod_name_is_active,xkb_state_mod_name_is_active@V_0.4.3"); |
| |
| /** |
| * Returns 1 if the modifiers are active with the specified type(s), 0 if |
| diff --git a/xkbcommon.map b/xkbcommon.map |
| index f28f68f..5a4eea9 100644 |
| --- a/xkbcommon.map |
| +++ b/xkbcommon.map |
| @@ -86,6 +86,9 @@ local: |
| *; |
| }; |
| |
| +V_0.4.3 { |
| +} V_0.5.0; |
| + |
| V_0.6.0 { |
| global: |
| xkb_keymap_key_get_name; |
| -- |
| 2.21.0.392.gf8f6787159e-goog |
| |