7287 smb pam module not picking up libsmb from proto area (LDLIBS32/64)

Review Request #546 — Created May 29, 2017 and submitted

gwr
illumos-gate
general

The fix pushed for 7287 didn't quite work for me.
Looks like it should use LDLIBS32 / LDLIBS64

Actually, it's fine. It turns out the problem was specific to Studio,
so I'll just combine this with my other "build on Studio hacks",
over in https://www.illumos.org/rb/r/548/

On the other hand, maybe this fix is worth taking anyway. Thoughts?

Build works for me now.

andy_js
  1. What was the build failure you got?

    1. make install
      /tank/ws/il-pam-ldflags/usr/src/lib/pam_modules/smb/i386
      /ws/onnv-tools/onbld/bin/i386/cw -_cc -O -m32 -xspace -Xa  -xildoff -errtags=yes -errwarn=%all -erroff=E_EMPTY_TRANSLATION_UNIT -erroff=E_STATEMENT_NOT_REACHED -erroff=E_DECLARATION_IN_CODE -_gcc=-Wno-missing-braces -_gcc=-Wno-sign-compare -_gcc=-Wno-unknown-pragmas -_gcc=-Wno-unused-parameter -_gcc=-Wno-missing-field-initializers -_gcc=-Wno-array-bounds -xc99=%none    -W0,-xglobalstatic -_gcc=-fno-inline-small-functions  -_gcc=-fno-inline-functions-called-once  -_gcc=-fno-ipa-cp    -v -o pam_smb_passwd.so.1 -G -hpam_smb_passwd.so.1 -ztext -zdefs -Bdirect  -M../mapfile-vers -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.pagealign -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.noexdata -R/usr/lib/smbsrv /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/passwdutil.so.1  pics/smb_passwd.o  -L/tank/ws/il-pam-ldflags/proto/root_i386/lib -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib    -lsmb -lpam -lc -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/smbsrv
      + /ws/onnv-tools/SUNWspro/SS12/bin/cc -O -m32 -xspace -Xa -xildoff -errtags=yes -errwarn=%all -erroff=E_EMPTY_TRANSLATION_UNIT -erroff=E_STATEMENT_NOT_REACHED -erroff=E_DECLARATION_IN_CODE -xc99=%none -W0,-xglobalstatic -v -o pam_smb_passwd.so.1 -G -hpam_smb_passwd.so.1 -ztext -zdefs -Bdirect -M../mapfile-vers -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.pagealign -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.noexdata -R/usr/lib/smbsrv /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/passwdutil.so.1 pics/smb_passwd.o -L/tank/ws/il-pam-ldflags/proto/root_i386/lib -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib -lsmb -lpam -lc -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/smbsrv 
      ld: fatal: library -lsmb: not found
      ld: fatal: file processing errors. No output written to pam_smb_passwd.so.1
      *** Error code 1
      make: Fatal error: Command failed for target `pam_smb_passwd.so.1'
      Current working directory /tank/ws/il-pam-ldflags/usr/src/lib/pam_modules/smb/i386
      *** Error code 1
      
    2. And after the fix in this review:

      make install
      /tank/ws/il-pam-ldflags/usr/src/lib/pam_modules/smb/i386
      /ws/onnv-tools/onbld/bin/i386/cw -_cc -O -m32 -xspace -Xa  -xildoff -errtags=yes -errwarn=%all -erroff=E_EMPTY_TRANSLATION_UNIT -erroff=E_STATEMENT_NOT_REACHED -erroff=E_DECLARATION_IN_CODE -_gcc=-Wno-missing-braces -_gcc=-Wno-sign-compare -_gcc=-Wno-unknown-pragmas -_gcc=-Wno-unused-parameter -_gcc=-Wno-missing-field-initializers -_gcc=-Wno-array-bounds -xc99=%none    -W0,-xglobalstatic -_gcc=-fno-inline-small-functions  -_gcc=-fno-inline-functions-called-once  -_gcc=-fno-ipa-cp    -v -o pam_smb_passwd.so.1 -G -hpam_smb_passwd.so.1 -ztext -zdefs -Bdirect  -M../mapfile-vers -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.pagealign -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.noexdata -R/usr/lib/smbsrv /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/passwdutil.so.1  pics/smb_passwd.o  -L/tank/ws/il-pam-ldflags/proto/root_i386/lib -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib    -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/smbsrv -lsmb -lpam -lc
      + /ws/onnv-tools/SUNWspro/SS12/bin/cc -O -m32 -xspace -Xa -xildoff -errtags=yes -errwarn=%all -erroff=E_EMPTY_TRANSLATION_UNIT -erroff=E_STATEMENT_NOT_REACHED -erroff=E_DECLARATION_IN_CODE -xc99=%none -W0,-xglobalstatic -v -o pam_smb_passwd.so.1 -G -hpam_smb_passwd.so.1 -ztext -zdefs -Bdirect -M../mapfile-vers -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.pagealign -M/tank/ws/il-pam-ldflags/usr/src/common/mapfiles/common/map.noexdata -R/usr/lib/smbsrv /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/passwdutil.so.1 pics/smb_passwd.o -L/tank/ws/il-pam-ldflags/proto/root_i386/lib -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib -L/tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/smbsrv -lsmb -lpam -lc 
      /usr/bin/rm -f /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/security/pam_smb_passwd.so.1; install -s -m 755 -f /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/security pam_smb_passwd.so.1
      /usr/bin/rm -f /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/security/pam_smb_passwd.so; /usr/bin/ln -s pam_smb_passwd.so.1 /tank/ws/il-pam-ldflags/proto/root_i386/usr/lib/security/pam_smb_passwd.so
      

      Note that -L.../usr/lib/smbsrv is there now.

    3. Oh, so I just noticed this is because (apparently) gcc reorders the linker args, and Studio does not.
      The way the -L is added in the first one it lands at the end, but apparently it needs to be before -lsmb

    4. That's unfortunate. If we are going to go down the path of using LDLIBS32 and LDLIBS64, which is probably better anyway, I think we should move them back up to the Makefile.com file.

    5. Agreed. I'll update this later.

    6. You OK with this change now? I do think I'd like to RTI this.

  2. 
      
gwr
gwr
gwr
andy_js
  1. Ship It!
  2. 
      
yuripv
  1. Please mark this as submitted.

  2. 
      
gwr
Review request changed

Status: Closed (submitted)

Loading...