17596443 nm -p output change breaks userland
authorMike Sullivan <Mike.Sullivan@Oracle.COM>
Wed, 16 Oct 2013 10:00:08 -0700
changeset 1512 f57514e19ede
parent 1511 4d3b0b480760
child 1513 594764ea1267
17596443 nm -p output change breaks userland 17361780 LD_Z_TEXT should, ya know, contain -z text not -z direct 17602195 elf_wrong_location_check could be better
components/puppet/puppet.p5m
make-rules/configure.mk
make-rules/shared-macros.mk
tools/python/pkglint/userland.py
--- a/components/puppet/puppet.p5m	Wed Oct 16 06:53:51 2013 -0700
+++ b/components/puppet/puppet.p5m	Wed Oct 16 10:00:08 2013 -0700
@@ -169,13 +169,8 @@
 file files/user_attr path=etc/user_attr.d/puppet
 file files/puppet.xml path=lib/svc/manifest/application/puppet.xml
 file files/puppet.stencil path=lib/svc/stencils/puppet.stencil
-# PuppetAudit.so is 64-bit but its enclosing directory is
-# not a known 64-bit directory; for now, ignore this lint error.
-# This directory will be renamed to $(MACH64)-solaris$(SOLARIS_VERSION) 
-# in a follow-up integration and its name added to userland.py
 file ext/PuppetAudit.so \
-    path=usr/ruby/1.9/lib/$(MACH64)/ruby/vendor_ruby/1.9.1/$(MACH)-solaris$(SOLARIS_VERSION)/PuppetAudit.so \
-    pkg.linted.userland.action001.2=true
+    path=usr/ruby/1.9/lib/$(MACH64)/ruby/vendor_ruby/1.9.1/$(MACH)-solaris$(SOLARIS_VERSION)/PuppetAudit.so 
 file path=usr/ruby/1.9/lib/$(MACH64)/ruby/vendor_ruby/1.9.1/hiera/backend/puppet_backend.rb
 file path=usr/ruby/1.9/lib/$(MACH64)/ruby/vendor_ruby/1.9.1/hiera/scope.rb
 file path=usr/ruby/1.9/lib/$(MACH64)/ruby/vendor_ruby/1.9.1/hiera_puppet.rb
--- a/make-rules/configure.mk	Wed Oct 16 06:53:51 2013 -0700
+++ b/make-rules/configure.mk	Wed Oct 16 10:00:08 2013 -0700
@@ -102,6 +102,7 @@
 
 # temporarily work around some issues
 CONFIGURE_ENV += "ac_cv_func_realloc_0_nonnull=yes"
+CONFIGURE_ENV += "NM=/usr/gnu/bin/nm"
 COMPONENT_BUILD_ENV += "ac_cv_func_realloc_0_nonnull=yes"
 
 # configure the unpacked source for building 32 and 64 bit version
--- a/make-rules/shared-macros.mk	Wed Oct 16 06:53:51 2013 -0700
+++ b/make-rules/shared-macros.mk	Wed Oct 16 10:00:08 2013 -0700
@@ -631,7 +631,7 @@
 # only be required if the component's native build is horribly broken.
 LD_Z_RESCAN_NOW =	-z rescan-now
 
-LD_Z_TEXT =		-z direct
+LD_Z_TEXT =		-z text
 
 # make sure that -lc is always present when building shared objects.
 LD_DEF_LIBS +=		-lc
@@ -642,6 +642,9 @@
 # eliminate unreferenced dynamic dependencies
 LD_Z_IGNORE =		-z ignore
 
+# eliminate comments
+LD_Z_STRIP_CLASS =	-z strip-class=comment
+
 # use direct binding
 LD_B_DIRECT =		-Bdirect
 
@@ -686,7 +689,8 @@
 # libraries to this macro, as it will apply to everything linked during the
 # component build.
 LD_OPTIONS +=	$(LD_MAP_NOEXSTK.$(MACH)) $(LD_MAP_NOEXDATA.$(MACH)) \
-		$(LD_MAP_PAGEALIGN) $(LD_B_DIRECT) $(LD_Z_IGNORE)
+		$(LD_MAP_PAGEALIGN) $(LD_B_DIRECT) $(LD_Z_IGNORE) \
+		$(LD_Z_STRIP_CLASS)
 
 # only used on executables
 LD_EXEC_OPTIONS = $(LD_Z_ASLR)
--- a/tools/python/pkglint/userland.py	Wed Oct 16 06:53:51 2013 -0700
+++ b/tools/python/pkglint/userland.py	Wed Oct 16 10:00:08 2013 -0700
@@ -296,13 +296,13 @@
 
 		return result
 
-	def __elf_wrong_location_check(self, path):
+	def __elf_wrong_location_check(self, path, inspath):
 		result = None
 
 		ei = elf.get_info(path)
 		bits = ei.get("bits")
 		type = ei.get("type");
-                elems = os.path.dirname(path).split("/")
+                elems = os.path.dirname(inspath).split("/")
 
                 path64 = False
 		for p in self.pathlist64:
@@ -331,9 +331,11 @@
 		if action.name not in ["file"]:
 			return
 
+		inspath=action.attrs["path"]
+
 		path = action.hash
 		if path == None or path == 'NOHASH':
-			path = action.attrs["path"]
+			path = inspath
 
 		# check for writable files without a preserve attribute
 		if "mode" in action.attrs:
@@ -371,9 +373,9 @@
 					msgid="%s%s.1" % (self.name, pkglint_id))
 			elif elf.is_elf_object(fullpath):
 				# 32/64 bit in wrong place
-				result = self.__elf_wrong_location_check(fullpath)
+				result = self.__elf_wrong_location_check(fullpath, inspath)
 				if result != None:
-					engine.error(result % path, 
+					engine.error(result % inspath, 
 						msgid="%s%s.2" % (self.name, pkglint_id))
 				result = self.__elf_runpath_check(fullpath, engine)
 				if result != None: