From: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Cc: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH v3 1/4] compat: Add infrastructure to support symbol versioning
Date: Wed, 14 Jan 2015 16:25:19 +0100 [thread overview]
Message-ID: <2338166.O6glFPMYza@xps13> (raw)
In-Reply-To: <1419349913-21674-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Hi Neil,
2014-12-23 10:51, Neil Horman:
> Add initial pass header files to support symbol versioning.
[...]
> +# Copyright(c) 2010-2014 Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Why these dates?
> +# All rights reserved.
I think this line is not required anymore:
http://en.wikipedia.org/wiki/All_rights_reserved
[...]
> +#ifndef _RTE_COMPAT_H_
> +#define _RTE_COMPAT_H_
Why using underscores?
I think it's reserved:
http://en.wikipedia.org/wiki/Include_guard#Use_of_.23include_guards
> +#define SA(x) #x
It should be prefixed. But it's better to use RTE_STR.
> +#ifdef RTE_BUILD_SHARED_LIB
> +
> +/*
> + * Provides backwards compatibility when updating exported functions.
> + * When a symol is exported from a library to provide an API, it also provides a
> + * calling convention (ABI) that is embodied in its name, return type,
> + * arguments, etc. On occasion that function may need to change to accomodate
> + * new functionality, behavior, etc. When that occurs, it is desireable to
> + * allow for backwards compatibility for a time with older binaries that are
> + * dynamically linked to the dpdk. to support that the __vsym and
Should be "To support that," with uppercase and comma.
> + * VERSION_SYMBOL macros are created. They, in conjunction with the
> + * <library>_version.map file for a given library allow for multiple versions of
> + * a symbol to exist in a shared library so that older binaries need not be
> + * immediately recompiled. Their use is outlined in the following example:
> + * Assumptions: DPDK 1.(X) contains a function int foo(char *string)
> + * DPDK 1.(X+1) needs to change foo to be int foo(int index)
> + *
> + * To accomplish this:
> + * 1) Edit lib/<library>/library_version.map to add a DPDK_1.(X+1) node, in which
> + * foo is exported as a global symbol.
> + *
> + * 2) rename the existing function int foo(char *string) to
> + * int __vsym foo_v18(char *string)
> + *
> + * 3) Add this macro immediately below the function
> + * VERSION_SYMBOL(foo, _v18, 1.8);
> + *
> + * 4) Implement a new version of foo.
> + * char foo(int value, int otherval) { ...}
> + *
> + * 5) Mark the newest version as the default version
> + * BIND_DEFAULT_SYMBOL(foo, 1.9);
> + *
> + */
Thanks for this good tutorial.
> +#define VERSION_SYMBOL(b, e, v) __asm__(".symver " SA(b) SA(e) ", "SA(b)"@DPDK_"SA(v))
> +#define BASE_SYMBOL(b, n) __asm__(".symver " SA(n) ", "SA(b)"@")
> +#define BIND_DEFAULT_SYMBOL(b, v) __asm__(".symver " SA(b) ", "SA(b)"@@DPDK_"SA(v))
> +#define __vsym __attribute__((used))
OK. It would be simpler to read if b, e, v and n were formally defined in a comment.
> +#else
[...]
> +/*
> + * RTE_BUILD_SHARED_LIB
> + */
This type of comment is strange. It makes me think that we are in the case
RTE_BUILD_SHARED_LIB=y
> +#endif
[...]
> +
> +CPU_LDFLAGS += --version-script=$(EXPORT_MAP)
Why this variable name? VERSION_SCRIPT or VERSION_MAP seems more appropriate.
> +
> endif
>
> +
Why this newline?
> _BUILD = $(LIB)
--
Thomas
next prev parent reply other threads:[~2015-01-14 15:25 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-20 21:01 Add DSO symbol versioning to supportbackwards compatibility Neil Horman
[not found] ` <1419109299-9603-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-20 21:01 ` [PATCH 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
[not found] ` <1419109299-9603-2-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-22 14:01 ` Gonzalez Monroy, Sergio
[not found] ` <91383E96CE459D47BCE92EFBF5CE73B004F20D71-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-22 16:22 ` Neil Horman
2014-12-22 16:34 ` Neil Horman
[not found] ` <20141222163453.GD26669-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-12-22 17:09 ` Gonzalez Monroy, Sergio
[not found] ` <91383E96CE459D47BCE92EFBF5CE73B004F20DD4-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-22 19:00 ` Neil Horman
[not found] ` <20141222190017.GF26669-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-12-22 20:04 ` Neil Horman
2014-12-20 21:01 ` [PATCH 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2014-12-20 21:01 ` [PATCH 3/4] Add library version extenstion Neil Horman
2014-12-20 21:01 ` [PATCH 4/4] docs: Add ABI documentation Neil Horman
2014-12-22 20:24 ` [PATCH v2 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
[not found] ` <1419279860-16985-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-22 20:24 ` [PATCH v2 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2014-12-22 20:24 ` [PATCH v2 3/4] Add library version extenstion Neil Horman
[not found] ` <1419279860-16985-3-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-23 13:05 ` Gonzalez Monroy, Sergio
[not found] ` <91383E96CE459D47BCE92EFBF5CE73B004F210AA-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-23 15:50 ` Neil Horman
2014-12-22 20:24 ` [PATCH v2 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1419279860-16985-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-23 9:48 ` Iremonger, Bernard
[not found] ` <8CEF83825BEC744B83065625E567D7C2049CBDB3-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-23 13:01 ` Neil Horman
2014-12-23 13:27 ` [PATCH v2 1/4] compat: Add infrastructure to support symbol versioning Gonzalez Monroy, Sergio
[not found] ` <91383E96CE459D47BCE92EFBF5CE73B004F210D1-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-23 15:50 ` Neil Horman
2014-12-23 15:51 ` [PATCH v3 " Neil Horman
[not found] ` <1419349913-21674-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-23 15:51 ` [PATCH v3 2/4] Provide initial versioning for all DPDK libraries Neil Horman
[not found] ` <1419349913-21674-2-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-29 16:21 ` Sergio Gonzalez Monroy
2015-01-14 15:29 ` Thomas Monjalon
2015-01-14 16:24 ` Neil Horman
2014-12-23 15:51 ` [PATCH v3 3/4] Add library version extenstion Neil Horman
[not found] ` <1419349913-21674-3-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-23 16:44 ` Gonzalez Monroy, Sergio
[not found] ` <91383E96CE459D47BCE92EFBF5CE73B004F21155-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-23 17:08 ` Neil Horman
2014-12-29 16:23 ` Sergio Gonzalez Monroy
2015-01-14 15:48 ` Thomas Monjalon
2014-12-23 15:51 ` [PATCH v3 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1419349913-21674-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-29 16:24 ` Sergio Gonzalez Monroy
2015-01-14 15:59 ` Thomas Monjalon
2015-01-14 20:07 ` Neil Horman
[not found] ` <20150114200729.GB28492-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-16 13:34 ` Thomas Monjalon
2014-12-29 16:20 ` [PATCH v3 1/4] compat: Add infrastructure to support symbol versioning Sergio Gonzalez Monroy
2015-01-14 15:25 ` Thomas Monjalon [this message]
2015-01-14 20:29 ` Neil Horman
2015-01-09 12:35 ` Add DSO symbol versioning to supportbackwards compatibility Neil Horman
2015-01-15 19:35 ` [PATCH v4 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
[not found] ` <1421350516-10628-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-15 19:35 ` [PATCH v4 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2015-01-15 19:35 ` [PATCH v4 3/4] Add library version extenstion Neil Horman
2015-01-15 19:35 ` [PATCH v4 4/4] docs: Add ABI documentation Neil Horman
2015-01-30 17:13 ` [PATCH v4 1/4] compat: Add infrastructure to support symbol versioning Gray, Mark D
2015-01-16 15:33 ` [PATCH v5 " Neil Horman
[not found] ` <1421422389-5473-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-16 15:33 ` [PATCH v5 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2015-01-16 15:33 ` [PATCH v5 3/4] Add library version extenstion Neil Horman
2015-01-16 15:33 ` [PATCH v5 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1421422389-5473-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-20 7:14 ` Thomas Monjalon
2015-01-20 10:47 ` Bruce Richardson
2015-01-20 13:37 ` Iremonger, Bernard
[not found] ` <8CEF83825BEC744B83065625E567D7C2049D9017-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-20 13:46 ` Thomas Monjalon
2015-01-20 14:24 ` Neil Horman
[not found] ` <20150120142401.GA18449-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-20 14:29 ` Butler, Siobhan A
[not found] ` <0C5AFCA4B3408848ADF2A3073F7D8CC86D4BF204-kPTMFJFq+rHjxeytcECX8bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-20 14:41 ` Neil Horman
[not found] ` <20150120144156.GC18449-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-20 14:50 ` Butler, Siobhan A
[not found] ` <0C5AFCA4B3408848ADF2A3073F7D8CC86D4BF2B4-kPTMFJFq+rHjxeytcECX8bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-20 15:30 ` Neil Horman
2015-01-20 14:32 ` O'driscoll, Tim
2015-01-20 14:00 ` Thomas Monjalon
2015-01-20 14:37 ` Neil Horman
[not found] ` <20150120143737.GB18449-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-20 15:06 ` Thomas Monjalon
2015-01-20 15:35 ` Neil Horman
2015-01-20 21:17 ` [PATCH v6 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
[not found] ` <1421788679-9433-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-20 21:17 ` [PATCH v6 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2015-01-20 21:17 ` [PATCH v6 3/4] Add library version extenstion Neil Horman
2015-01-20 21:17 ` [PATCH v6 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1421788679-9433-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-21 10:13 ` Iremonger, Bernard
2015-01-21 10:25 ` Thomas Monjalon
2015-01-21 14:59 ` Neil Horman
[not found] ` <20150121145901.GA18943-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2015-01-21 16:05 ` Thomas Monjalon
2015-01-21 19:43 ` Neil Horman
[not found] ` <20150121194304.GA32617-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-21 22:24 ` Thomas Monjalon
2015-01-22 19:21 ` Neil Horman
2015-01-21 20:57 ` [PATCH v7 01/26] version: 2.0.0-rc0 Neil Horman
[not found] ` <1421873870-21754-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-21 20:57 ` [PATCH v7 02/26] mk: fix link to static combined library Neil Horman
2015-01-21 20:57 ` [PATCH v7 03/26] eal: fix check for power of 2 in 0 case Neil Horman
2015-01-21 20:57 ` [PATCH v7 04/26] ethdev: fix missing parenthesis in mac check Neil Horman
2015-01-21 20:57 ` [PATCH v7 05/26] mem: search only dpdk hugetlbfs maps Neil Horman
2015-01-21 20:57 ` [PATCH v7 06/26] log: remove unnecessary stubs Neil Horman
2015-01-21 20:57 ` [PATCH v7 07/26] vfio: avoid enabling while the module is not loaded Neil Horman
2015-01-21 20:57 ` [PATCH v7 08/26] bond: fix vlan flag interpretation Neil Horman
2015-01-21 20:57 ` [PATCH v7 09/26] app/testpmd: remove duplicated function for list parsing Neil Horman
2015-01-21 20:57 ` [PATCH v7 10/26] nic_uio: fix thread structure compatibility for future FreeBSD Neil Horman
2015-01-21 20:58 ` [PATCH v7 01/26] version: 2.0.0-rc0 Neil Horman
2015-01-21 20:59 ` [PATCH v7 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
[not found] ` <1421873986-21912-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-21 20:59 ` [PATCH v7 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2015-01-21 20:59 ` [PATCH v7 3/4] Add library version extenstion Neil Horman
2015-01-21 20:59 ` [PATCH v7 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1421873986-21912-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-22 10:56 ` Iremonger, Bernard
[not found] ` <8CEF83825BEC744B83065625E567D7C2049D98D9-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-22 15:37 ` Neil Horman
2015-01-22 15:49 ` [PATCH v8 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
[not found] ` <1421941756-30948-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-22 15:49 ` [PATCH v8 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2015-01-22 15:49 ` [PATCH v8 3/4] Add library version extenstion Neil Horman
2015-01-22 15:49 ` [PATCH v8 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1421941756-30948-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-01-22 16:46 ` Butler, Siobhan A
2015-02-02 16:52 ` Thomas Monjalon
2015-02-02 17:21 ` Neil Horman
2015-02-02 16:41 ` [PATCH v8 1/4] compat: Add infrastructure to support symbol versioning Thomas Monjalon
2015-02-02 17:30 ` Neil Horman
2015-02-02 17:40 ` [PATCH v9 " Neil Horman
[not found] ` <1422898822-16422-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-02-02 17:40 ` [PATCH v9 2/4] Provide initial versioning for all DPDK libraries Neil Horman
2015-02-02 17:40 ` [PATCH v9 3/4] Add library version extenstion Neil Horman
2015-02-02 17:40 ` [PATCH v9 4/4] docs: Add ABI documentation Neil Horman
[not found] ` <1422898822-16422-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2015-02-03 15:24 ` Thomas Monjalon
2015-02-03 16:01 ` Add DSO symbol versioning to supportbackwards compatibility Thomas Monjalon
2015-02-03 20:20 ` Neil Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2338166.O6glFPMYza@xps13 \
--to=thomas.monjalon-pdr9zngts4eavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.