public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: sys-apps/sparc-utils/, sys-apps/sparc-utils/files/
@ 2020-04-01  5:08 Matt Turner
  0 siblings, 0 replies; only message in thread
From: Matt Turner @ 2020-04-01  5:08 UTC (permalink / raw
  To: gentoo-commits

commit:     e63b7c35c2c49b7ae4cce57ca167035737480e53
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Wed Apr  1 05:01:01 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Wed Apr  1 05:07:50 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e63b7c35

sys-apps/sparc-utils: Add patch to fix on 64-bit userland

Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 .../files/elftoaout-2.3-64bit_fixes-1.patch        | 261 +++++++++++++++++++++
 ...ils-1.9-r5.ebuild => sparc-utils-1.9-r6.ebuild} |   1 +
 2 files changed, 262 insertions(+)

diff --git a/sys-apps/sparc-utils/files/elftoaout-2.3-64bit_fixes-1.patch b/sys-apps/sparc-utils/files/elftoaout-2.3-64bit_fixes-1.patch
new file mode 100644
index 00000000000..2be0e67184f
--- /dev/null
+++ b/sys-apps/sparc-utils/files/elftoaout-2.3-64bit_fixes-1.patch
@@ -0,0 +1,261 @@
+Submitted By: Jim Gifford (patches at jg555 dot com)
+Date: 2006-01-03
+Initial Package Version: 2.3
+Origin: Dave Miller
+Upstream Status: Unknown
+Description: Fixes 64 Bit Issues with Elftoaout
+
+	https://marc.info/?l=linux-sparc&m=113617505627794&w=2
+ 
+diff -Naur elftoaout-2.3/elftoaout.c elftoaout-2.3/elftoaout.c
+--- a/elftoaout-2.3/elftoaout.c	2000-06-03 20:20:12.000000000 +0000
++++ b/elftoaout-2.3/elftoaout.c	2006-01-03 22:33:28.000000000 +0000
+@@ -20,16 +20,36 @@
+  */
+ #include <stdio.h>
+ #include <stdlib.h>
+-#ifdef linux
+ #include <linux/elf.h>
+-#define ELFDATA2MSB   2
+-#else
+-#include <sys/elf.h>
+-#endif
+-
+-#define swab16(x)  (((x)<<8&0xFF00)|((x)>>8&0x00FF))
+-#define swab32(x)  (((x)<<24&0xFF000000)|((x)<<8&0x00FF0000)|((x)>>24&0x000000FF)|((x)>>8&0x0000FF00))
+-#define swab64(x)  ((((unsigned long long)(swab32((unsigned int)x))) << 32) | (swab32(((unsigned long long)x)>>32)))
++#include <sys/types.h>
++
++static inline u_int16_t swab16(u_int16_t x)
++{
++	return (((x << 8)  & 0xFF00) |
++		((x >> 8) & 0x00FF));
++}
++
++static inline u_int32_t swab32(u_int32_t x)
++{
++	return (((x << 24) & 0xFF000000) |
++		((x <<  8) & 0x00FF0000) |
++		((x >> 24) & 0x000000FF) |
++		((x >>  8) & 0x0000FF00));
++}
++
++static inline u_int64_t swab64(u_int64_t x)
++{
++	return ((u_int64_t)
++	((u_int64_t)(((u_int64_t)x & (u_int64_t)0x00000000000000ffULL) << 56) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0x000000000000ff00ULL) << 40) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0x0000000000ff0000ULL) << 24) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0x00000000ff000000ULL) <<  8) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0x000000ff00000000ULL) >>  8) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0x0000ff0000000000ULL) >> 24) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0x00ff000000000000ULL) >> 40) |
++	 (u_int64_t)(((u_int64_t)x & (u_int64_t)0xff00000000000000ULL) >> 56)));
++}
++
+ 
+ /* We carry a.out header here in order to compile the thing on Solaris */
+ 
+@@ -37,14 +57,14 @@
+ #define	CMAGIC	    0x01030108
+ 
+ typedef struct {
+-	unsigned long	a_magic;	/* magic number */
+-	unsigned long	a_text;		/* size of text segment */
+-	unsigned long	a_data;		/* size of initialized data */
+-	unsigned long	a_bss;		/* size of uninitialized data */
+-	unsigned long	a_syms;		/* size of symbol table || checksum */
+-	unsigned long	a_entry;	/* entry point */
+-	unsigned long	a_trsize;	/* size of text relocation */
+-	unsigned long	a_drsize;	/* size of data relocation */
++	u_int32_t	a_magic;	/* magic number */
++	u_int32_t	a_text;		/* size of text segment */
++	u_int32_t	a_data;		/* size of initialized data */
++	u_int32_t	a_bss;		/* size of uninitialized data */
++	u_int32_t	a_syms;		/* size of symbol table || checksum */
++	u_int32_t	a_entry;	/* entry point */
++	u_int32_t	a_trsize;	/* size of text relocation */
++	u_int32_t	a_drsize;	/* size of data relocation */
+ } Exec;
+ 
+ 
+@@ -56,17 +76,16 @@
+ 	int swab;
+ 	int sparc64;
+ 	int csum;
+-	/* friend void Usage(void); */
+ } Application;
+ 
+ typedef struct {
+ 	Elf32_Phdr *tab;
+-	unsigned len;
++	unsigned int len;
+ } ProgTable;
+ 
+ typedef struct {
+ 	Elf64_Phdr *tab;
+-	unsigned len;
++	unsigned int len;
+ } ProgTable64;
+ 
+ void get_ptab(ProgTable *t, FILE *inp, const Elf32_Ehdr *h);
+@@ -75,9 +94,9 @@
+ void print_ptab64(ProgTable64 *t);
+ 
+ typedef struct {
+-	char *buf;                /* Image data */
+-	unsigned len;             /* Length of buffer */
+-	unsigned bss;             /* Length of extra data */
++	unsigned char *buf;       /* Image data */
++	unsigned int len;         /* Length of buffer */
++	unsigned int bss;         /* Length of extra data */
+ } Segment;
+ 
+ void load_image(Segment *t, const ProgTable *h, FILE *inp);
+@@ -105,7 +124,8 @@
+ 
+ 	parse_args(&prog, argc, argv);
+ 
+-	if (prog.version) Version();
++	if (prog.version)
++		Version();
+ 
+ 	if (freopen(prog.iname, "r", stdin) == NULL) {
+ 		fprintf(stderr, "Cannot open \"%s\"\n", prog.iname);
+@@ -141,7 +161,8 @@
+ 	exit(0);
+ }
+ 
+-void parse_args( Application *t, unsigned argc, const char **argv ){
++void parse_args( Application *t, unsigned argc, const char **argv )
++{
+ 	const char *arg;
+ 	union {
+ 		char c[4];
+@@ -185,8 +206,8 @@
+ 	if (t->csum && t->sun4_mode) Usage ();	/* Checksum lives in header. */
+ }
+ 
+-void get_header(Elf32_Ehdr *t, FILE *inp) {
+-
++void get_header(Elf32_Ehdr *t, FILE *inp)
++{
+         if (fread((void*) t, sizeof(Elf64_Ehdr), 1, inp) != 1) {
+ 		fprintf(stderr, "Read error on header\n");
+ 		exit(1);
+@@ -249,8 +270,9 @@
+ 	}
+ }
+ 
+-void get_ptab(ProgTable *t, FILE *inp, const Elf32_Ehdr *h) {
+-	unsigned x;
++void get_ptab(ProgTable *t, FILE *inp, const Elf32_Ehdr *h)
++{
++	unsigned int x;
+ 
+ 	/** fprintf(stderr, "Program header table off = 0x%x\n",
+ 		(unsigned) h->e_phoff); **/
+@@ -294,8 +316,9 @@
+ 	}
+ }
+ 
+-void get_ptab64(ProgTable64 *t, FILE *inp, const Elf64_Ehdr *h) {
+-	unsigned x;
++void get_ptab64(ProgTable64 *t, FILE *inp, const Elf64_Ehdr *h)
++{
++	unsigned int x;
+ 
+ 	if (h->e_phoff == 0) {
+ 		fprintf(stderr, "No Program Header Table\n");
+@@ -332,8 +355,9 @@
+ 	}
+ }
+ 
+-void print_ptab(ProgTable *t) {
+-	unsigned x;
++void print_ptab(ProgTable *t)
++{
++	unsigned int x;
+ 	const Elf32_Phdr *p;
+ 
+ 	for (x = 0; x < t->len; x++) {
+@@ -374,8 +398,9 @@
+ 	}
+ }
+ 
+-void print_ptab64(ProgTable64 *t) {
+-	unsigned x;
++void print_ptab64(ProgTable64 *t)
++{
++	unsigned int x;
+ 	const Elf64_Phdr *p;
+ 
+ 	for (x = 0; x < t->len; x++) {
+@@ -387,8 +412,11 @@
+ 			break;
+ 		case PT_LOAD:
+ 			printf("Loadable to 0x%Lx[0x%Lx] from 0x%Lx[0x%Lx] align 0x%Lx",
+-				p->p_vaddr, p->p_memsz, p->p_offset, p->p_filesz,
+-				p->p_align);
++			       (unsigned long long) p->p_vaddr,
++			       (unsigned long long) p->p_memsz,
++			       (unsigned long long) p->p_offset,
++			       (unsigned long long) p->p_filesz,
++			       (unsigned long long) p->p_align);
+ 			break;
+ 		case PT_DYNAMIC:
+ 			printf("Dynamic");
+@@ -416,9 +444,10 @@
+ 	}
+ }
+ 
+-void load_image(Segment *t, const ProgTable *tp, FILE *inp) {
++void load_image(Segment *t, const ProgTable *tp, FILE *inp)
++{
+ 	Elf32_Phdr *p, *q;
+-	unsigned x;
++	unsigned int x;
+ 	unsigned long off, len;
+ 
+ 	p = 0;
+@@ -484,9 +513,10 @@
+ 	}
+ }
+ 
+-void load_image64(Segment *t, const ProgTable64 *tp, FILE *inp) {
++void load_image64(Segment *t, const ProgTable64 *tp, FILE *inp)
++{
+ 	Elf64_Phdr *p, *q;
+-	unsigned x;
++	unsigned int x;
+ 	unsigned long long off, len;
+ 
+ 	p = 0;
+@@ -547,7 +577,8 @@
+ 	}
+ }
+ 
+-void store_image(Segment *t, FILE *out) {
++void store_image(Segment *t, FILE *out)
++{
+ 	Exec ohdb;
+ 
+ 	if (prog.swab) {
+@@ -585,13 +616,15 @@
+ 	return;
+ }
+ 
+-void Usage(){
++void Usage()
++{
+ 	if (prog.version) Version();
+ 	fprintf(stderr, "Usage: elftoaout [-o output] [-c|-b] [-V] input\n");
+ 	exit(1);
+ }
+ 
+-void Version(){
++void Version()
++{
+ 	printf("elftoaout 2.3: ELF to a.out convertor for SPARC and SPARC64 bootstraps\n");
+ }
+ 

diff --git a/sys-apps/sparc-utils/sparc-utils-1.9-r5.ebuild b/sys-apps/sparc-utils/sparc-utils-1.9-r6.ebuild
similarity index 96%
rename from sys-apps/sparc-utils/sparc-utils-1.9-r5.ebuild
rename to sys-apps/sparc-utils/sparc-utils-1.9-r6.ebuild
index 3f13a6d64e5..3aec8e00f8e 100644
--- a/sys-apps/sparc-utils/sparc-utils-1.9-r5.ebuild
+++ b/sys-apps/sparc-utils/sparc-utils-1.9-r6.ebuild
@@ -23,6 +23,7 @@ S=${WORKDIR}/${P}.orig
 PATCHES=(
 	"${WORKDIR}/${PN}_${PV}-4.diff"
 	"${FILESDIR}"/${P}-no-implicit.patch
+	"${FILESDIR}"/elftoaout-2.3-64bit_fixes-1.patch
 )
 
 src_compile() {


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-04-01  5:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-01  5:08 [gentoo-commits] repo/gentoo:master commit in: sys-apps/sparc-utils/, sys-apps/sparc-utils/files/ Matt Turner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox