added mold
This commit is contained in:
		
							parent
							
								
									59883fed2c
								
							
						
					
					
						commit
						4819200984
					
				
					 2 changed files with 122 additions and 0 deletions
				
			
		
							
								
								
									
										27
									
								
								pkgs/mold/build.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								pkgs/mold/build.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | pkgname=mold | ||||||
|  | pkgver=main | ||||||
|  | deps="musl:libexecinfo" | ||||||
|  | 
 | ||||||
|  | fetch() { | ||||||
|  | 	curl -L "https://github.com/rui314/mold/archive/refs/heads/main.tar.gz" -o $pkgname-$pkgver.tar.gz | ||||||
|  | 	tar -xf $pkgname-$pkgver.tar.gz | ||||||
|  | 	cd $pkgname-$pkgver | ||||||
|  | 	patch -p1 < ../../musl.patch | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | build() { | ||||||
|  | 	cd $pkgname-$pkgver | ||||||
|  | 	gmake | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | package() { | ||||||
|  | 	cd $pkgname-$pkgver | ||||||
|  | 	gmake install DESTDIR=$pkgdir | ||||||
|  | 	ln -sr $pkgdir/usr/bin/mold $pkgdir/usr/bin/ld.mold | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | license() { | ||||||
|  | 	cd $pkgname-$pkgver | ||||||
|  | 	cat LICENSE | ||||||
|  | #	cat COPYING | ||||||
|  | } | ||||||
							
								
								
									
										95
									
								
								pkgs/mold/musl.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								pkgs/mold/musl.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,95 @@ | ||||||
|  | diff --git a/Makefile b/Makefile
 | ||||||
|  | index 1b36943..c6e0407 100644
 | ||||||
|  | --- a/Makefile
 | ||||||
|  | +++ b/Makefile
 | ||||||
|  | @@ -8,7 +8,7 @@ CPPFLAGS = -g -Imimalloc/include -pthread -std=c++20 \
 | ||||||
|  |             -DGIT_HASH=\"$(GIT_HASH)\" \ | ||||||
|  |  	   $(EXTRA_CPPFLAGS) | ||||||
|  |  LDFLAGS += $(EXTRA_LDFLAGS) -rdynamic | ||||||
|  | -LIBS = -Wl,-as-needed -lcrypto -pthread -lz -lxxhash -ldl -lm
 | ||||||
|  | +LIBS = -Wl,-as-needed -lcrypto -pthread -lz -lxxhash -lexecinfo -ldl -lm
 | ||||||
|  |  OBJS = main.o object_file.o input_sections.o output_chunks.o \ | ||||||
|  |         mapfile.o perf.o linker_script.o archive_file.o output_file.o \ | ||||||
|  |         subprocess.o gc_sections.o icf.o symbols.o cmdline.o filepath.o \ | ||||||
|  | diff --git a/mold.h b/mold.h
 | ||||||
|  | index 550545c..8bab9b9 100644
 | ||||||
|  | --- a/mold.h
 | ||||||
|  | +++ b/mold.h
 | ||||||
|  | @@ -27,6 +27,7 @@
 | ||||||
|  |  #include <tbb/task_group.h> | ||||||
|  |  #include <unistd.h> | ||||||
|  |  #include <unordered_set> | ||||||
|  | +#include <unordered_map>
 | ||||||
|  |  #include <vector> | ||||||
|  |  #include <xxh3.h> | ||||||
|  |   | ||||||
|  | @@ -41,6 +42,9 @@ typedef int32_t i32;
 | ||||||
|  |  typedef int64_t i64; | ||||||
|  |   | ||||||
|  |  static constexpr i32 SECTOR_SIZE = 512; | ||||||
|  | +#ifdef PAGE_SIZE
 | ||||||
|  | +#undef PAGE_SIZE
 | ||||||
|  | +#endif
 | ||||||
|  |  static constexpr i32 PAGE_SIZE = 4096; | ||||||
|  |  static constexpr i32 SHA256_SIZE = 32; | ||||||
|  |   | ||||||
|  | @@ -2198,7 +2202,7 @@ InputFile<E>::get_string(Context<E> &ctx, const ElfShdr<E> &shdr) {
 | ||||||
|  |    u8 *end = begin + shdr.sh_size; | ||||||
|  |    if (mb->data(ctx) + mb->size() < end) | ||||||
|  |      Fatal(ctx) << *this << ": shdr corrupted"; | ||||||
|  | -  return {(char *)begin, (char *)end};
 | ||||||
|  | +  return {(char *)begin, (size_t)(end-begin)};
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  template <typename E> | ||||||
|  | diff --git a/oneTBB/include/oneapi/tbb/detail/_config.h b/oneTBB/include/oneapi/tbb/detail/_config.h
 | ||||||
|  | index 27a3dd7..bb422b0 100644
 | ||||||
|  | --- a/oneTBB/include/oneapi/tbb/detail/_config.h
 | ||||||
|  | +++ b/oneTBB/include/oneapi/tbb/detail/_config.h
 | ||||||
|  | @@ -257,7 +257,7 @@
 | ||||||
|  |      #define __TBB_CPP20_COMPARISONS_PRESENT __TBB_CPP20_PRESENT | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  | -#define __TBB_RESUMABLE_TASKS                           (!__TBB_WIN8UI_SUPPORT && !__ANDROID__)
 | ||||||
|  | +#define __TBB_RESUMABLE_TASKS                           (!__TBB_WIN8UI_SUPPORT && __GLIBC__)
 | ||||||
|  |   | ||||||
|  |  /* This macro marks incomplete code or comments describing ideas which are considered for the future. | ||||||
|  |   * See also for plain comment with TODO and FIXME marks for small improvement opportunities. | ||||||
|  | diff --git a/oneTBB/src/tbbmalloc_proxy/proxy.cpp b/oneTBB/src/tbbmalloc_proxy/proxy.cpp
 | ||||||
|  | index b286e51..8057708 100644
 | ||||||
|  | --- a/oneTBB/src/tbbmalloc_proxy/proxy.cpp
 | ||||||
|  | +++ b/oneTBB/src/tbbmalloc_proxy/proxy.cpp
 | ||||||
|  | @@ -24,7 +24,8 @@
 | ||||||
|  |  // of aligned_alloc as required by new C++ standard, this makes it hard to | ||||||
|  |  // redefine aligned_alloc here. However, running on systems with new libc | ||||||
|  |  // version, it still needs it to be redefined, thus tricking system headers | ||||||
|  | -#if defined(__GLIBC_PREREQ) && !__GLIBC_PREREQ(2, 16) && _GLIBCXX_HAVE_ALIGNED_ALLOC
 | ||||||
|  | +#if defined(__GLIBC_PREREQ)
 | ||||||
|  | +#if !__GLIBC_PREREQ(2, 16) && _GLIBCXX_HAVE_ALIGNED_ALLOC
 | ||||||
|  |  // tell <cstdlib> that there is no aligned_alloc | ||||||
|  |  #undef _GLIBCXX_HAVE_ALIGNED_ALLOC | ||||||
|  |  // trick <stdlib.h> to define another symbol instead | ||||||
|  | @@ -33,6 +34,7 @@
 | ||||||
|  |  #include <cstdlib> | ||||||
|  |  #undef aligned_alloc | ||||||
|  |  #endif // defined(__GLIBC_PREREQ)&&!__GLIBC_PREREQ(2, 16)&&_GLIBCXX_HAVE_ALIGNED_ALLOC | ||||||
|  | +#endif // defined(__GLIBC_PREREQ)
 | ||||||
|  |  #endif // __linux__ && !__ANDROID__ | ||||||
|  |   | ||||||
|  |  #include "proxy.h" | ||||||
|  | @@ -256,6 +258,7 @@ int mallopt(int /*param*/, int /*value*/) __THROW
 | ||||||
|  |      return 1; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +#ifdef __GLIBC__
 | ||||||
|  |  struct mallinfo mallinfo() __THROW | ||||||
|  |  { | ||||||
|  |      struct mallinfo m; | ||||||
|  | @@ -263,6 +266,7 @@ struct mallinfo mallinfo() __THROW
 | ||||||
|  |   | ||||||
|  |      return m; | ||||||
|  |  } | ||||||
|  | +#endif
 | ||||||
|  |   | ||||||
|  |  #if __ANDROID__ | ||||||
|  |  // Android doesn't have malloc_usable_size, provide it to be compatible | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue