lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 19 Mar 2012 15:53:27 -0700 From: Stephen Hemminger <shemminger@...tta.com> To: Yegor Yefremov <yegorslists@...glemail.com> Cc: netdev@...r.kernel.org Subject: Re: iproute2: iplink_ stuff cleanup On Mon, 19 Mar 2012 23:22:59 +0100 Yegor Yefremov <yegorslists@...glemail.com> wrote: > >> I'm still struggling to get ip/iplink_* routines to show up in > >> Android's ip binary > >> (https://groups.google.com/d/topic/android-building/yjV4iYnT1Zc/discussion). > >> I've looked at the algorithm that is used to access those functions > >> (like can_parse_opt, vlan_parse_opt etc.) > >> > >> snprintf(buf, sizeof(buf), LIBDIR "/ip/link_%s.so", id); > >> dlh = dlopen(buf, RTLD_LAZY); > >> if (dlh == NULL) { > >> /* look in current binary, only open once */ > >> dlh = BODY; > >> if (dlh == NULL) { > >> dlh = BODY = dlopen(NULL, RTLD_LAZY); > >> if (dlh == NULL) > >> return NULL; > >> } > >> } > >> > >> snprintf(buf, sizeof(buf), "%s_link_util", id); > >> l = dlsym(dlh, buf); > >> if (l == NULL) > >> return NULL; > >> > >> as far as I can see from the ip/Makefile there are no dynamic libs > >> like /ip/link_%s.so. Wouldn't it be simpler to let all iplink_* > >> objects to export their interfaces via header files and just make a > >> table in ip/iplink.c to hold protocol ID and pointer at link_utils > >> struct. > >> > >> struct link_util can_link_util = { > >> .id = "can", > >> .maxattr = IFLA_CAN_MAX, > >> .parse_opt = can_parse_opt, > >> .print_opt = can_print_opt, > >> .print_xstats = can_print_xstats, > >> }; > >> > >> Am I missing something? > >> > >> Regards, > >> Yegor > > > > Ip utilities have dynamic extensibility, it is possible for someone > > to add shared libraries for new functionality. This is a cool feature > > but isn't used directly by the standard code. It does use it indirectly > > by using dlopen() to find functions locally. > > > > Think of it as introspection in C. > > > > I won't take it out of the standard version, but you may have to find > > another way to handle it on the Android universe. > > The solution turned out to be simple: > https://android-review.googlesource.com/#/c/34240/. > -Wl,--no-gc-sections did the job. > > Can you suggest some more pro arguments for dynamic method of > exporting API routines? You could make it optional on your platform, but for mainline Linux it has been around long enough that someone surely depends on it. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists