Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Jun 2018 16:31:05 +0000 (UTC)
From:      Justin Hibbits <jhibbits@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r334488 - head/sys/powerpc/include
Message-ID:  <201806011631.w51GV55n009887@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhibbits
Date: Fri Jun  1 16:31:05 2018
New Revision: 334488
URL: https://svnweb.freebsd.org/changeset/base/334488

Log:
  Unbreak 32-bit binaries on powerpc64
  
  Recently a change was made which broke loading 32-bit binaries on powerpc64,
  with an assertion in ld-elf32.so.1:
  
  ld-elf32.so.1: assert failed:
  /usr/local/poudriere/jails/ppc64/usr/src/libexec/rtld-elf/rtld.c:390
  
  It turns out Elf32_AuxInfo was broken for a very long time on powerpc64, as
  it uses long and pointers, which are both 64 bits on powerpc64, and only
  manifested with the recent work on auxargs.

Modified:
  head/sys/powerpc/include/elf.h

Modified: head/sys/powerpc/include/elf.h
==============================================================================
--- head/sys/powerpc/include/elf.h	Fri Jun  1 16:23:47 2018	(r334487)
+++ head/sys/powerpc/include/elf.h	Fri Jun  1 16:31:05 2018	(r334488)
@@ -69,9 +69,13 @@
 typedef struct {	/* Auxiliary vector entry on initial stack */
 	int	a_type;			/* Entry type. */
 	union {
+#ifdef __powerpc64__
+		int	a_val;		/* Integer value */
+#else
 		long	a_val;		/* Integer value. */
 		void	*a_ptr;		/* Address. */
 		void	(*a_fcn)(void);	/* Function pointer (not used). */
+#endif
 	} a_un;
 } Elf32_Auxinfo;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806011631.w51GV55n009887>