iproute2: tc: reduce size of dynamic symbol table
In the case of SHARED_LIBS=y, don't use -export-dynamic to place *all* symbols into the dynamic symbol table. Instead, use --dynamic-list to export a smaller set of symbols similar to that defined in static-syms.h in the case of SHARED_LIBS=n, avoiding an 11 KB tc package size increase. The symbol set is based on that required by the only plugin, m_xt.so. Also increment PKG_RELEASE. Signed-off-by: Tony Ambardar <itugrok@yahoo.com> Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE fixup]
This commit is contained in:
		 Tony Ambardar
					Tony Ambardar
				
			
				
					committed by
					
						 Hans Dedecker
						Hans Dedecker
					
				
			
			
				
	
			
			
			 Hans Dedecker
						Hans Dedecker
					
				
			
						parent
						
							0b57a2165a
						
					
				
				
					commit
					b61495409b
				
			| @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=iproute2 | PKG_NAME:=iproute2 | ||||||
| PKG_VERSION:=4.20.0 | PKG_VERSION:=4.20.0 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=2 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | ||||||
| PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 | PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 | ||||||
|   | |||||||
| @@ -0,0 +1,44 @@ | |||||||
|  | --- a/tc/Makefile | ||||||
|  | +++ b/tc/Makefile | ||||||
|  | @@ -107,7 +107,7 @@ LDLIBS += -L. -lm | ||||||
|  |   | ||||||
|  |  ifeq ($(SHARED_LIBS),y) | ||||||
|  |  LDLIBS += -ldl | ||||||
|  | -LDFLAGS += -Wl,-export-dynamic | ||||||
|  | +LDFLAGS += -Wl,--dynamic-list=dynsyms.list | ||||||
|  |  endif | ||||||
|  |   | ||||||
|  |  TCLIB := tc_core.o | ||||||
|  | @@ -137,7 +137,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc | ||||||
|  |  all: tc $(TCSO) | ||||||
|  |   | ||||||
|  |  tc: $(TCOBJ) $(LIBNETLINK) libtc.a | ||||||
|  | -	$(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@ | ||||||
|  | +	$(QUIET_LINK)$(CC) $(filter-out dynsyms.list, $^) $(LDFLAGS) $(LDLIBS) -o $@ | ||||||
|  |   | ||||||
|  |  libtc.a: $(TCLIB) | ||||||
|  |  	$(QUIET_AR)$(AR) rcs $@ $^ | ||||||
|  | @@ -159,6 +159,7 @@ install: all | ||||||
|  |  clean: | ||||||
|  |  	rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \ | ||||||
|  |  	rm -f emp_ematch.yacc.* | ||||||
|  | +	rm -f dynsyms.list | ||||||
|  |   | ||||||
|  |  q_atm.so: q_atm.c | ||||||
|  |  	$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm | ||||||
|  | @@ -198,4 +199,15 @@ static-syms.h: $(wildcard *.c) | ||||||
|  |  		sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \ | ||||||
|  |  	done > $@ | ||||||
|  |   | ||||||
|  | +else | ||||||
|  | + | ||||||
|  | +tc: dynsyms.list | ||||||
|  | +dynsyms.list: $(wildcard *.c) | ||||||
|  | +	files="$(filter-out $(patsubst %.so,%.c,$(TCSO)), $^)" ; \ | ||||||
|  | +	echo "{" > $@ ; \ | ||||||
|  | +	for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \ | ||||||
|  | +		sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:\1;:;p}' $$files ; \ | ||||||
|  | +	done >> $@ ; \ | ||||||
|  | +	echo "show_stats; print_tm; parse_rtattr; get_u32; matches; addattr_l; addattr_nest; addattr_nest_end; };" >> $@ | ||||||
|  | + | ||||||
|  |  endif | ||||||
		Reference in New Issue
	
	Block a user