From c32f82ca48d6a85a50e4945a9d3b73926ec1b157 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Fri, 7 Aug 2009 23:46:00 +0000
Subject: [PATCH] Found kludge to permit build

---
 contribs/pam/Makefile.am | 26 +++++++++-----------------
 contribs/pam/Makefile.in |  4 ++--
 2 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/contribs/pam/Makefile.am b/contribs/pam/Makefile.am
index d7dcf1fb1fb..811c6d9e049 100644
--- a/contribs/pam/Makefile.am
+++ b/contribs/pam/Makefile.am
@@ -7,8 +7,7 @@ AUTOMAKE_OPTIONS = foreign
 CFLAGS = -fPIC
 INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/..
 LIBS =
-# Without "-module", we get error: `pam_slurm.la' is not a standard libtool library name
-PLUGIN_FLAGS = -nostdlib -shared -module
+PLUGIN_FLAGS = -lgcc -module -avoid-version --export-dynamic -nostdlib -shared
 
 if HAVE_PAM
 pam_lib = pam_slurm.la
@@ -24,22 +23,15 @@ pam_slurm_la_SOURCES = 				\
 	$(top_builddir)/src/common/hostlist.c	\
 	$(top_builddir)/src/common/hostlist.h
 pam_slurm_la_LDFLAGS = $(PLUGIN_FLAGS)
+#
+# The following kludge prevents libtool passing of an (unused) "-rpath" 
+# argument to cc, which also permits libtool from passing "-nostdlib" to cc. 
+# Without this kludge, "-nostdlib" is not passed to cc and the linking process 
+# results in duplicate "_init" and "_fini" symbols being defined, which is a 
+# fatal error.
+am_pam_slurm_la_rpath =
+
 else
 EXTRA_pam_slurm_la_SOURCES = pam_slurm.c
 endif
 
-# Compiles fine
-# Link line bad:
-# gcc -shared  .libs/pam_slurm.o .libs/hostlist.o      -Wl,-soname -Wl,pam_slurm.so.0 -o .libs/pam_slurm.so.0.0.0
-#.libs/pam_slurm.o: In function `_init':
-# pam_slurm.c:(.text+0xa33): multiple definition of `_init'
-# /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/build-tree/amd64-libc/csu/crti.S:25: first defined here
-# .libs/pam_slurm.o: In function `_fini':
-# pam_slurm.c:(.text+0xa87): multiple definition of `_fini'
-# /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/build-tree/amd64-libc/csu/crti.S:37: first defined here
-# collect2: ld returned 1 exit status
-
-# Simple link is fine
-# gcc -shared -nostdlib .libs/pam_slurm.o .libs/hostlist.o      -Wl,-soname -Wl,pam_slurm.so.0 -o .libs/pam_slurm.so.0.0.0
-
-
diff --git a/contribs/pam/Makefile.in b/contribs/pam/Makefile.in
index 3f3bd95a672..09dc4f32a3b 100644
--- a/contribs/pam/Makefile.in
+++ b/contribs/pam/Makefile.in
@@ -98,7 +98,6 @@ pam_slurm_la_OBJECTS = $(am_pam_slurm_la_OBJECTS)
 pam_slurm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(pam_slurm_la_LDFLAGS) $(LDFLAGS) -o $@
-@HAVE_PAM_TRUE@am_pam_slurm_la_rpath = -rpath $(pkglibdir)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/slurm
 depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp
 am__depfiles_maybe = depfiles
@@ -300,7 +299,7 @@ top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/..
 # Without "-module", we get error: `pam_slurm.la' is not a standard libtool library name
-PLUGIN_FLAGS = -nostdlib -shared -module
+PLUGIN_FLAGS = -lgcc -module -avoid-version --export-dynamic -nostdlib -shared
 @HAVE_PAM_FALSE@pam_lib = 
 @HAVE_PAM_TRUE@pam_lib = pam_slurm.la
 pkglib_LTLIBRARIES = $(pam_lib)
@@ -310,6 +309,7 @@ pkglib_LTLIBRARIES = $(pam_lib)
 @HAVE_PAM_TRUE@	$(top_builddir)/src/common/hostlist.h
 
 @HAVE_PAM_TRUE@pam_slurm_la_LDFLAGS = $(PLUGIN_FLAGS)
+@HAVE_PAM_TRUE@am_pam_slurm_la_rpath = 
 @HAVE_PAM_FALSE@EXTRA_pam_slurm_la_SOURCES = pam_slurm.c
 all: all-am
 
-- 
GitLab