This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] change GLIBC PPC64/ELF2 ABI default to 2.17


> <https://sourceware.org/ml/libc-alpha/2013-08/msg00096.html> was I think 
> Alan Modra's original proposal for ABI baselines.  There were concerns 
> about the piles of Implies files that needs, but I think it's better to 
> get the ABI baselines checked in, and possibly clean up the directory 
> structures later, than to leave them out and risk ABI breakage that will 
> be hard to detect and fix.

I reluctantly tend to agree.

Certainly it should not be considered a viable option to ship a release
that (newly) claims to support some ABI but does not have complete abilist
files for that ABI.

I think it's really not a lot of work to change the way we find the abilist
files.  I'd previously said we should really figure out our plan to revamp
shlib-versions and meld the abilist cleanup with that.  Doing all that is
clearly too much work and too much churn for this point in the release
freeze.  Just doing something quick to support finding abilist files
differently is probably pretty easy, so I'm inclined to see if we can get
it done right quick.  But if not, then an Implies horror for powerpc64le is
certainly better than having no check-abi safety at all.  If it does go
that way, I'd want a commitment from someone or other to clean things up
promptly so we don't go another release with increased Implies horrors.
That was a constraint I tried to impose when we took the dismal
Implies-{before,after} hacks for x32, but we never followed up.
Fortunately I think all the shlib-versions, abilist, and related revamps
are far easier to figure out and decide upon than the sysdeps selection
revamp.

Here is a patch (also on branch roland/abilist) that is wholly untested and
not necessarily well thought-through.  But I think it might just cover it.


Thanks,
Roland


2014-01-31  Roland McGrath  <roland@hack.frob.com>

	* sysdeps/powerpc/Makefile [$(config-machine) ends with 'le']
	(abilist-pattern): New variable, set to %-le.abilist.

	* Makerules (abilist-pattern): New variable.
	(vpath): Use $(abilist-pattern) in place of %.abilist.
	(check-abi-% pattern rule): Likewise.
	(check-abi, update-abi): Likewise.

--- a/Makerules
+++ b/Makerules
@@ -1175,7 +1175,15 @@ ifeq ($(build-shared),yes)
 	LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T
 	mv -f $@T $@
 
-vpath %.abilist $(+sysdep_dirs)
+# A sysdeps/.../Makefile can set abilist-pattern to something like
+# %-foo.abilist to look for libc-foo.abilist instead of libc.abilist.
+# This makes sense if multiple ABIs can be most cleanly supported by a
+# configuration without using separate sysdeps directories for each.
+ifndef abilist-pattern
+abilist-pattern = %.abilist
+endif
+
+vpath $(abilist-pattern) $(+sysdep_dirs)
 
 # The .PRECIOUS rule prevents the files built by an implicit rule whose
 # target pattern is %.symlist from being considered "intermediate files"
@@ -1184,24 +1192,25 @@ vpath %.abilist $(+sysdep_dirs)
 .PRECIOUS: %.symlist
 generated += $(extra-libs:=.symlist)
 
-check-abi-%: $(common-objpfx)config.make %.abilist $(objpfx)%.symlist
+check-abi-%: $(common-objpfx)config.make $(abilist-pattern) $(objpfx)%.symlist
 	$(check-abi)
-check-abi-%: $(common-objpfx)config.make %.abilist $(common-objpfx)%.symlist
+check-abi-%: $(common-objpfx)config.make $(abilist-pattern) \
+	     $(common-objpfx)%.symlist
 	$(check-abi)
 define check-abi
-	diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^)
+	diff -p -U 0 $(filter $(abilist-pattern),$^) $(filter %.symlist,$^)
 endef
 
-update-abi-%: $(objpfx)%.symlist %.abilist
+update-abi-%: $(objpfx)%.symlist $(abilist-pattern)
 	$(update-abi)
-update-abi-%: $(common-objpfx)%.symlist %.abilist
+update-abi-%: $(common-objpfx)%.symlist $(abilist-pattern)
 	$(update-abi)
 define update-abi
 @if cmp -s $^ 2> /dev/null; \
  then \
-      echo '+++ $(filter %.abilist,$^) is unchanged'; \
+      echo '+++ $(filter $(abilist-pattern),$^) is unchanged'; \
  else cp -f $^; \
-      echo '*** Now check $(filter %.abilist,$^) changes for correctness ***'; \
+      echo '*** Now check $(filter $(abilist-pattern),$^) changes for correctness ***'; \
  fi
 endef
 
--- a/sysdeps/powerpc/Makefile
+++ b/sysdeps/powerpc/Makefile
@@ -27,3 +27,7 @@ ifeq ($(subdir),misc)
 sysdep_headers += sys/platform/ppc.h
 tests += test-gettimebase
 endif
+
+ifneq (,$(filter %le,$(config-machine)))
+abilist-pattern = %-le.abilist
+endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]