INSTALL = install
CC = gcc
CFLAGS = -O2 -Wall
-LD = ld
ALL_CFLAGS = $(CFLAGS) -fPIC
ALL_LDFLAGS = $(LDFLAGS) -shared -Wl,-x
all: libnss_nonlocal.so.2 linktest
-libnss_nonlocal.so.2: nonlocal-passwd.o nonlocal-group.o nonlocal-shadow.o
- $(CC) -o $@ $(ALL_LDFLAGS) -Wl,-soname,$@ $^ $(LOADLIBES) $(LDLIBS)
+OBJS = nonlocal-passwd.o nonlocal-group.o nonlocal-shadow.o
+
+libnss_nonlocal.so.2: $(OBJS) libnss_nonlocal.map
+ $(CC) -o $@ $(ALL_LDFLAGS) -Wl,-soname,$@ -Wl,--version-script=libnss_nonlocal.map $(OBJS) $(LOADLIBES) $(LDLIBS)
%.o: %.c
$(CC) -c $(ALL_CFLAGS) $(CPPFLAGS) $<
nonlocal-shadow.o: nonlocal-shadow.c nsswitch-internal.h nonlocal.h
linktest: libnss_nonlocal.so.2
- $(LD) --entry=0 -o /dev/null $^
+ $(CC) $(LDFLAGS) -nostdlib -Wl,--entry=0 -o /dev/null $^
install: libnss_nonlocal.so.2
$(INSTALL) -d $(DESTDIR)$(libdir)
$(INSTALL) -m a+r,u+w $< $(DESTDIR)$(libdir)/
clean:
- rm -f *.so.* *.o test-nonlocal
+ rm -f *.so.* *.o
.PHONY: all linktest install clean
--- /dev/null
+GLIBC_2.0 {
+ global:
+ _nss_nonlocal_setpwent;
+ _nss_nonlocal_endpwent;
+ _nss_nonlocal_getpwent_r;
+ _nss_nonlocal_getpwuid_r;
+ _nss_nonlocal_getpwnam_r;
+
+ _nss_nonlocal_setspent;
+ _nss_nonlocal_endspent;
+ _nss_nonlocal_getspent_r;
+ _nss_nonlocal_getspnam_r;
+
+ _nss_nonlocal_setgrent;
+ _nss_nonlocal_endgrent;
+ _nss_nonlocal_getgrent_r;
+ _nss_nonlocal_getgrgid_r;
+ _nss_nonlocal_getgrnam_r;
+
+ _nss_nonlocal_initgroups_dyn;
+
+ local:
+ *;
+};