añade simple-scalar
This commit is contained in:
		
							parent
							
								
									de11780539
								
							
						
					
					
						commit
						e21cfa7a46
					
				
					 6 changed files with 218 additions and 2 deletions
				
			
		|  | @ -1,5 +1,4 @@ | |||
| pkgs: | ||||
| { | ||||
|   #andesight = pkgs.callPackage ./andesight {}; | ||||
|   #netextender = pkgs.callPackage ./netextender {}; | ||||
|   simplescalar = pkgs.callPackage ./simple-scalar {}; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										25
									
								
								pkgs/simple-scalar/0001-fix-case-of-YY_CURRENT_BUFFER.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								pkgs/simple-scalar/0001-fix-case-of-YY_CURRENT_BUFFER.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| From 33f6fb023c09464467eea4538f18e2a131acee3a Mon Sep 17 00:00:00 2001 | ||||
| From: Alejandro Soto <alejandro@34project.org> | ||||
| Date: Wed, 26 Apr 2023 13:37:32 -0600 | ||||
| Subject: [PATCH] fix case of YY_CURRENT_BUFFER | ||||
| 
 | ||||
| ---
 | ||||
|  ld/ldlex.l | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/simpleutils-990811/ld/ldlex.l b/simpleutils-990811/ld/ldlex.l
 | ||||
| index 2eef80f..561b8af 100644
 | ||||
| --- a/simpleutils-990811/ld/ldlex.l
 | ||||
| +++ b/simpleutils-990811/ld/ldlex.l
 | ||||
| @@ -585,7 +585,7 @@ yy_input (buf, result, max_size)
 | ||||
|       int max_size; | ||||
|  { | ||||
|    *result = 0;  | ||||
| -  if (yy_current_buffer->yy_input_file)
 | ||||
| +  if (YY_CURRENT_BUFFER->yy_input_file)
 | ||||
|      { | ||||
|        if (yyin) | ||||
|  	{ | ||||
| -- 
 | ||||
| 2.38.4 | ||||
| 
 | ||||
							
								
								
									
										24
									
								
								pkgs/simple-scalar/0002-define-sys_nerr.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								pkgs/simple-scalar/0002-define-sys_nerr.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| From 442edcc1d281a62a0092bcde19038ba3c976e499 Mon Sep 17 00:00:00 2001 | ||||
| From: Alejandro Soto <alejandro@34project.org> | ||||
| Date: Wed, 26 Apr 2023 13:35:21 -0600 | ||||
| Subject: [PATCH 1/3] define sys_nerr | ||||
| 
 | ||||
| ---
 | ||||
|  gcc.c | 1 + | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| diff --git a/gcc-2.7.2.3/gcc.c b/gcc-2.7.2.3/gcc.c
 | ||||
| index fe7de5b..1ac933f 100644
 | ||||
| --- a/gcc-2.7.2.3/gcc.c
 | ||||
| +++ b/gcc-2.7.2.3/gcc.c
 | ||||
| @@ -176,6 +176,7 @@ extern int errno;
 | ||||
|  #endif | ||||
|   | ||||
|  extern int sys_nerr; | ||||
| +int __attribute__((weak)) sys_nerr = 0;
 | ||||
|  #ifndef HAVE_STRERROR | ||||
|  #if defined(bsd4_4) | ||||
|  extern const char *const sys_errlist[]; | ||||
| -- 
 | ||||
| 2.38.4 | ||||
| 
 | ||||
							
								
								
									
										25
									
								
								pkgs/simple-scalar/0003-fix-obstack.h-post-increment.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								pkgs/simple-scalar/0003-fix-obstack.h-post-increment.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| From b074acb822459a42d2507ad5729e9e60bb1de572 Mon Sep 17 00:00:00 2001 | ||||
| From: Alejandro Soto <alejandro@34project.org> | ||||
| Date: Wed, 26 Apr 2023 13:35:42 -0600 | ||||
| Subject: [PATCH 2/3] fix obstack.h post-increment | ||||
| 
 | ||||
| ---
 | ||||
|  obstack.h | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/gcc-2.7.2.3/obstack.h b/gcc-2.7.2.3/obstack.h
 | ||||
| index 28bcd44..3a517b5 100644
 | ||||
| --- a/gcc-2.7.2.3/obstack.h
 | ||||
| +++ b/gcc-2.7.2.3/obstack.h
 | ||||
| @@ -338,7 +338,7 @@ __extension__								\
 | ||||
|     if (__o->next_free + sizeof (void *) > __o->chunk_limit)		\ | ||||
|       _obstack_newchunk (__o, sizeof (void *));				\ | ||||
|     if (!__o->alloc_failed)						\ | ||||
| -     *((void **)__o->next_free)++ = ((void *)datum);			\
 | ||||
| +     *((void **)__o->next_free++) = ((void *)datum);			\
 | ||||
|     (void) 0; }) | ||||
|   | ||||
|  #define obstack_int_grow(OBSTACK,datum)					\ | ||||
| -- 
 | ||||
| 2.38.4 | ||||
| 
 | ||||
							
								
								
									
										25
									
								
								pkgs/simple-scalar/0004-stdarg.h-instead-of-varargs.h.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								pkgs/simple-scalar/0004-stdarg.h-instead-of-varargs.h.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| From 12c34c7ff8e4e00ba54bd0b90f2ca6905109cb5d Mon Sep 17 00:00:00 2001 | ||||
| From: Alejandro Soto <alejandro@34project.org> | ||||
| Date: Wed, 26 Apr 2023 13:35:57 -0600 | ||||
| Subject: [PATCH 3/3] stdarg.h instead of varargs.h | ||||
| 
 | ||||
| ---
 | ||||
|  protoize.c | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/gcc-2.7.2.3/protoize.c b/gcc-2.7.2.3/protoize.c
 | ||||
| index 9728bf2..fb82ef0 100644
 | ||||
| --- a/gcc-2.7.2.3/protoize.c
 | ||||
| +++ b/gcc-2.7.2.3/protoize.c
 | ||||
| @@ -57,7 +57,7 @@ Boston, MA 02111-1307, USA.  */
 | ||||
|  #define _POSIX_SOURCE | ||||
|  #endif | ||||
|   | ||||
| -#include <varargs.h>
 | ||||
| +#include <stdarg.h>
 | ||||
|  /* On some systems stdio.h includes stdarg.h; | ||||
|     we must bring in varargs.h first.  */ | ||||
|  #include <stdio.h> | ||||
| -- 
 | ||||
| 2.38.4 | ||||
| 
 | ||||
							
								
								
									
										118
									
								
								pkgs/simple-scalar/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								pkgs/simple-scalar/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,118 @@ | |||
| # https://www.cse.iitd.ac.in/~cs5070217/csl718/assignment1/ss_install_instructions.html | ||||
| { bison, fetchurl, flex, multiStdenv, stdenv_32bit, strace }: | ||||
| let | ||||
|   host = "i686-pc-linux"; | ||||
|   target = "sslittle-na-sstrix"; | ||||
| 
 | ||||
|   gcc-version = "2.7.2.3"; | ||||
|   makeflags = "LANGUAGES=c CC=\"$CC -m32 $CFLAGS\" prefix=$out"; | ||||
| in | ||||
| multiStdenv.mkDerivation { | ||||
|   pname = "SimpleScalar"; | ||||
|   version = "1998-08-11"; # !!! | ||||
| 
 | ||||
|   nativeBuildInputs = [ flex bison ]; | ||||
| 
 | ||||
|   sourceRoot = "."; | ||||
| 
 | ||||
|   srcs = [ | ||||
|     (fetchTarball { | ||||
|       name = "simplesim-3.0"; | ||||
| 
 | ||||
|       url = "https://www.cse.iitd.ac.in/~cs5070217/csl718/simplesim-3v0d.tgz"; | ||||
|       sha256 = "sha256:022rlniimzl30c1874765hl001dxc716vfwm40ij256h1qk2dwgw"; | ||||
|     }) | ||||
| 
 | ||||
|     (fetchTarball { | ||||
|       name = "simpleutils-990811"; | ||||
| 
 | ||||
|       url = "https://www.cse.iitd.ac.in/~cs5070217/csl718/simpleutils-990811.tar.gz"; | ||||
|       sha256 = "sha256:0w952z382s7ghrxwrad7fd058b1kj5ad1abh8idxwwk47va72cdf"; | ||||
|     }) | ||||
|   ]; | ||||
| 
 | ||||
|   # El código es muy viejo y Nix usa opciones muy estrictas por defecto | ||||
|   CFLAGS = "-O3 -Wno-error=format-security"; | ||||
| 
 | ||||
|   # Algunas tarballs vienen sin directorio de primer nivel y además requieren arreglos | ||||
|   postUnpack = | ||||
|     let | ||||
|       simpletools = fetchurl { | ||||
|         url = "https://www.cse.iitd.ac.in/~cs5070217/csl718/simpletools-2v0.tgz"; | ||||
|         sha256 = "sha256-FTDTqyQWZCnuNPmTcu3Hcjgp4pHNoUcC0GOGhSJV9Iw="; | ||||
|       }; | ||||
| 
 | ||||
|       gcc-ss = fetchurl { | ||||
|         url = "https://www.cse.iitd.ac.in/~cs5070217/csl718/gcc-${gcc-version}.ss.tar.gz"; | ||||
|         sha256 = "sha256-3R3wsLmxoN3MkEW4gaxnhIyTBs0CUiSiH7C1/hF2atM="; | ||||
|       }; | ||||
| 
 | ||||
|       ar-and-ranlib = fetchurl { | ||||
|         url = "https://www.cse.iitd.ac.in/~cs5070217/csl718/ar_and_ranlib.tar.gz"; | ||||
|         sha256 = "sha256-MRTO6cAg3WeXlk3jDy2lVuiSXDRz1+LLa2XDkBDygMU="; | ||||
|       }; | ||||
|     in | ||||
|     '' | ||||
|       tar xf ${simpletools} | ||||
|       rm -r gcc-2.6.3 | ||||
| 
 | ||||
|       tar xf ${gcc-ss} | ||||
| 
 | ||||
|       mkdir ar-and-ranlib | ||||
|       tar xf ${ar-and-ranlib} -C ar-and-ranlib | ||||
| 
 | ||||
|       chmod -R +w gcc-${gcc-version} ar-and-ranlib | ||||
|     ''; | ||||
| 
 | ||||
|   patches = [ | ||||
|     ./0001-fix-case-of-YY_CURRENT_BUFFER.patch | ||||
|     ./0002-define-sys_nerr.patch | ||||
|     ./0003-fix-obstack.h-post-increment.patch | ||||
|     ./0004-stdarg.h-instead-of-varargs.h.patch | ||||
|   ]; | ||||
| 
 | ||||
|   postPatch = '' | ||||
|     patchelf \ | ||||
|       --set-interpreter "$(<${stdenv_32bit.cc}/nix-support/dynamic-linker-m32)" \ | ||||
|       ar-and-ranlib/{ar,ranlib} | ||||
|   ''; | ||||
| 
 | ||||
|   configurePhase = '' | ||||
|     BUILD=$PWD | ||||
| 
 | ||||
|     cd $BUILD/simplesim-3.0 | ||||
|     make config-pisa | ||||
| 
 | ||||
|     cd $BUILD/simpleutils-990811 | ||||
|     ./configure --host=${host} --target=${target} --with-gnu-as --with-gnu-ld --prefix=$out | ||||
| 
 | ||||
|     cd $BUILD/gcc-${gcc-version} | ||||
|     ./configure --host=${host} --target=${target} --with-gnu-as --with-gnu-ld --prefix=$out | ||||
|   ''; | ||||
| 
 | ||||
|   buildPhase = '' | ||||
|     make -C $BUILD/simplesim-3.0 | ||||
|     make -C $BUILD/simpleutils-990811 | ||||
| 
 | ||||
|     # GCC necesita binutils para compilar | ||||
|     make -C $BUILD/simpleutils-990811 install | ||||
|     cp $BUILD/ar-and-ranlib/{ar,ranlib} $out/${target}/bin/ | ||||
| 
 | ||||
|     cd $BUILD/gcc-${gcc-version} | ||||
| 
 | ||||
|     mkdir -p $out/lib | ||||
|     cp patched/sys/cdefs.h $BUILD/${target}/include/sys/cdefs.h | ||||
|     cp -r $BUILD/${target} $out/ | ||||
|     cp $BUILD/${target}/lib/{libc.a,crt0.o} $out/lib/ | ||||
|     sed -i '130s@-I/usr/include@-I./include@' Makefile | ||||
| 
 | ||||
|     ! make ${makeflags} | ||||
|     sed -i 's/\(return "FIXME\\n\)/\1\\/g' insn-output.c | ||||
|     PATH="$out/${target}/bin:$PATH" make ${makeflags} | ||||
|   ''; | ||||
| 
 | ||||
|   installPhase = '' | ||||
|     cp $BUILD/simplesim-3.0/{sim-{outorder,cache,profile,bpred,eio,safe,fast},sysprobe} $out/bin/ | ||||
|     PATH="$out/${target}/bin:$PATH" make -C $BUILD/gcc-${gcc-version} ${makeflags} install | ||||
|   ''; | ||||
| } | ||||
		Reference in a new issue
	
	 Fabian Montero
						Fabian Montero