svn commit: r295661 - head/contrib/elftoolchain/elfcopy

Ed Maste emaste at FreeBSD.org
Tue Feb 16 14:03:26 UTC 2016


Author: emaste
Date: Tue Feb 16 14:03:25 2016
New Revision: 295661
URL: https://svnweb.freebsd.org/changeset/base/295661

Log:
  Allow elfcopy to convert between two non-ELF formats
  
  If the output object is not an ELF file, choose an arbitrary ELF format
  for the intermediate file. srec, ihex and binary formats are independent
  of class, endianness and machine type so these choices do not affect the
  output.
  
  ELF Tool Chain ticket #517
  
  Reviewed by:	kai
  Obtained from:	ELF Tool Chain r3411

Modified:
  head/contrib/elftoolchain/elfcopy/main.c

Modified: head/contrib/elftoolchain/elfcopy/main.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/main.c	Tue Feb 16 13:40:23 2016	(r295660)
+++ head/contrib/elftoolchain/elfcopy/main.c	Tue Feb 16 14:03:25 2016	(r295661)
@@ -641,6 +641,18 @@ create_file(struct elfcopy *ecp, const c
 	 * ELF object before processing.
 	 */
 	if (ecp->itf != ETF_ELF) {
+		/*
+		 * If the output object is not an ELF file, choose an arbitrary
+		 * ELF format for the intermediate file. srec, ihex and binary
+		 * formats are independent of class, endianness and machine
+		 * type so these choices do not affect the output.
+		 */
+		if (ecp->otf != ETF_ELF) {
+			if (ecp->oec == ELFCLASSNONE)
+				ecp->oec = ELFCLASS64;
+			if (ecp->oed == ELFDATANONE)
+				ecp->oed = ELFDATA2LSB;
+		}
 		create_tempfile(&elftemp, &efd);
 		if ((ecp->eout = elf_begin(efd, ELF_C_WRITE, NULL)) == NULL)
 			errx(EXIT_FAILURE, "elf_begin() failed: %s",


More information about the svn-src-head mailing list