import libffi-3.1-21.el8
This commit is contained in:
		
							parent
							
								
									f36ea9842a
								
							
						
					
					
						commit
						f5ff919fd6
					
				| @ -1,63 +0,0 @@ | |||||||
| Also flush the code alias mapping when creating a closure.  It seems |  | ||||||
| that this is necessary on some aarch64 implementations.  The existing |  | ||||||
| code only flashes the writable mapping. |  | ||||||
| 
 |  | ||||||
| diff -rup a/include/ffi_common.h b/include/ffi_common.h
 |  | ||||||
| --- a/include/ffi_common.h	2014-04-25 13:45:13.000000000 -0400
 |  | ||||||
| +++ b/include/ffi_common.h	2019-06-14 14:12:04.387499160 -0400
 |  | ||||||
| @@ -82,6 +82,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif
 |  | ||||||
|  ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, |  | ||||||
|  	 unsigned int nfixedargs, unsigned int ntotalargs); |  | ||||||
|   |  | ||||||
| +/* Translate a data pointer to a code pointer.  Needed for closures on
 |  | ||||||
| +   some targets.  */
 |  | ||||||
| +void *ffi_data_to_code_pointer (void *data) FFI_HIDDEN;
 |  | ||||||
| +
 |  | ||||||
|  /* Extended cif, used in callback from assembly routine */ |  | ||||||
|  typedef struct |  | ||||||
|  { |  | ||||||
| Only in b/include: ffi_common.h.orig |  | ||||||
| diff -rup a/src/aarch64/ffi.c b/src/aarch64/ffi.c
 |  | ||||||
| --- a/src/aarch64/ffi.c	2019-06-14 14:11:03.485469505 -0400
 |  | ||||||
| +++ b/src/aarch64/ffi.c	2019-06-14 14:12:04.392499162 -0400
 |  | ||||||
| @@ -926,6 +926,10 @@ ffi_prep_closure_loc (ffi_closure* closu
 |  | ||||||
|    FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, codeloc, |  | ||||||
|  		       cif->aarch64_flags); |  | ||||||
|   |  | ||||||
| +  /* Also clear the cache on the executable alias mapping.  */
 |  | ||||||
| +  unsigned char *code = ffi_data_to_code_pointer (&closure->tramp[0]);
 |  | ||||||
| +  ffi_clear_cache (code, code + FFI_TRAMPOLINE_SIZE);
 |  | ||||||
| +
 |  | ||||||
|    closure->cif  = cif; |  | ||||||
|    closure->user_data = user_data; |  | ||||||
|    closure->fun  = fun; |  | ||||||
| Only in b/src/aarch64: ffi.c.orig |  | ||||||
| diff -rup a/src/closures.c b/src/closures.c
 |  | ||||||
| --- a/src/closures.c	2014-05-11 09:54:19.000000000 -0400
 |  | ||||||
| +++ b/src/closures.c	2019-06-14 14:12:04.396499164 -0400
 |  | ||||||
| @@ -597,6 +597,13 @@ ffi_closure_alloc (size_t size, void **c
 |  | ||||||
|    return ptr; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| +void *
 |  | ||||||
| +ffi_data_to_code_pointer (void *data)
 |  | ||||||
| +{
 |  | ||||||
| +  msegmentptr seg = segment_holding (gm, data);
 |  | ||||||
| +  return add_segment_exec_offset (data, seg);
 |  | ||||||
| +}
 |  | ||||||
| +
 |  | ||||||
|  /* Release a chunk of memory allocated with ffi_closure_alloc.  If |  | ||||||
|     FFI_CLOSURE_FREE_CODE is nonzero, the given address can be the |  | ||||||
|     writable or the executable address given.  Otherwise, only the |  | ||||||
| @@ -656,5 +663,11 @@ ffi_closure_free (void *ptr)
 |  | ||||||
|    free (ptr); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| +void *
 |  | ||||||
| +ffi_data_to_code_pointer (void *data)
 |  | ||||||
| +{
 |  | ||||||
| +  return data;
 |  | ||||||
| +}
 |  | ||||||
| +
 |  | ||||||
|  # endif /* ! FFI_MMAP_EXEC_WRIT */ |  | ||||||
|  #endif /* FFI_CLOSURES */ |  | ||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| Name:		libffi | Name:		libffi | ||||||
| Version:	3.1 | Version:	3.1 | ||||||
| Release:	20%{?dist} | Release:	21%{?dist} | ||||||
| Summary:	A portable foreign function interface library | Summary:	A portable foreign function interface library | ||||||
| 
 | 
 | ||||||
| Group:		System Environment/Libraries | Group:		System Environment/Libraries | ||||||
| @ -15,7 +15,6 @@ Patch0:		libffi-3.1-fix-include-path.patch | |||||||
| Patch1:		libffi-3.1-fix-exec-stack.patch | Patch1:		libffi-3.1-fix-exec-stack.patch | ||||||
| Patch2:		libffi-aarch64-rhbz1174037.patch | Patch2:		libffi-aarch64-rhbz1174037.patch | ||||||
| Patch3:		libffi-3.1-aarch64-fix-exec-stack.patch | Patch3:		libffi-3.1-aarch64-fix-exec-stack.patch | ||||||
| Patch4:		libffi-rh1652930.patch |  | ||||||
| Patch5:		libffi-3.1-closures-Create-temporary-file-with-O_TMPFILE-and-O_.patch | Patch5:		libffi-3.1-closures-Create-temporary-file-with-O_TMPFILE-and-O_.patch | ||||||
| 
 | 
 | ||||||
| %description | %description | ||||||
| @ -65,7 +64,6 @@ developing applications that use %{name}. | |||||||
| %patch1 -p1 -b .execstack | %patch1 -p1 -b .execstack | ||||||
| %patch2 -p1 -b .aarch64 | %patch2 -p1 -b .aarch64 | ||||||
| %patch3 -p1 -b .aarch64execstack | %patch3 -p1 -b .aarch64execstack | ||||||
| %patch4 -p1 |  | ||||||
| %patch5 -p1 | %patch5 -p1 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -127,6 +125,9 @@ fi | |||||||
| %{_infodir}/libffi.info.gz | %{_infodir}/libffi.info.gz | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Thu Aug 1 2019 DJ Delorie <dj@redhat.com> - 3.1-21 | ||||||
|  | - Revert 1652930 until 1721569 can be fixed (#1652930) | ||||||
|  | 
 | ||||||
| * Fri Jun 14 2019 DJ Delorie <dj@redhat.com> - 3.1-20 | * Fri Jun 14 2019 DJ Delorie <dj@redhat.com> - 3.1-20 | ||||||
| - closures: Create temporary file with O_TMPFILE and O_CLOEXEC (#1720600) | - closures: Create temporary file with O_TMPFILE and O_CLOEXEC (#1720600) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user