svn commit: r315701 - in head/sys: amd64/cloudabi32 amd64/cloudabi64 arm/cloudabi32 arm64/cloudabi64 i386/cloudabi32

Ed Schouten ed at nuxi.nl
Thu Mar 23 07:43:52 UTC 2017


Hi Kostik,

2017-03-23 0:00 GMT+01:00 Konstantin Belousov <kostikbel at gmail.com>:
> On Wed, Mar 22, 2017 at 03:16:24PM +0100, Ed Schouten wrote:
>> Similarly, I seem to remember CloudABI's brandinfos set compat_3_brand
>> for a similar reason: it seems to be required by imgact_elf.c. Would
>> we also want to change that?
>
> Could you please try this ?

Thanks! I just gave the patch a try, but the comparison added to
imgact_elf.c now causes the brandinfo to be skipped entirely. Attached
is a patch that does work for me.

-- 
Ed Schouten <ed at nuxi.nl>
Nuxi, 's-Hertogenbosch, the Netherlands
KvK-nr.: 62051717
-------------- next part --------------
Index: sys/amd64/cloudabi32/cloudabi32_sysvec.c
===================================================================
--- sys/amd64/cloudabi32/cloudabi32_sysvec.c	(revision 315828)
+++ sys/amd64/cloudabi32/cloudabi32_sysvec.c	(working copy)
@@ -227,6 +227,5 @@
 	.brand		= ELFOSABI_CLOUDABI,
 	.machine	= EM_386,
 	.sysvec		= &cloudabi32_elf_sysvec,
-	.compat_3_brand	= "CloudABI",
 	.flags		= BI_BRAND_ONLY_STATIC,
 };
Index: sys/amd64/cloudabi64/cloudabi64_sysvec.c
===================================================================
--- sys/amd64/cloudabi64/cloudabi64_sysvec.c	(revision 315828)
+++ sys/amd64/cloudabi64/cloudabi64_sysvec.c	(working copy)
@@ -213,5 +213,4 @@
 	.machine	= EM_X86_64,
 	.sysvec		= &cloudabi64_elf_sysvec,
 	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_ONLY_STATIC,
-	.compat_3_brand	= "CloudABI",
 };
Index: sys/arm/cloudabi32/cloudabi32_sysvec.c
===================================================================
--- sys/arm/cloudabi32/cloudabi32_sysvec.c	(revision 315828)
+++ sys/arm/cloudabi32/cloudabi32_sysvec.c	(working copy)
@@ -189,6 +189,5 @@
 	.brand		= ELFOSABI_CLOUDABI,
 	.machine	= EM_ARM,
 	.sysvec		= &cloudabi32_elf_sysvec,
-	.compat_3_brand	= "CloudABI",
 	.flags		= BI_BRAND_ONLY_STATIC,
 };
Index: sys/arm64/cloudabi64/cloudabi64_sysvec.c
===================================================================
--- sys/arm64/cloudabi64/cloudabi64_sysvec.c	(revision 315828)
+++ sys/arm64/cloudabi64/cloudabi64_sysvec.c	(working copy)
@@ -182,5 +182,4 @@
 	.machine	= EM_AARCH64,
 	.sysvec		= &cloudabi64_elf_sysvec,
 	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_ONLY_STATIC,
-	.compat_3_brand	= "CloudABI",
 };
Index: sys/i386/cloudabi32/cloudabi32_sysvec.c
===================================================================
--- sys/i386/cloudabi32/cloudabi32_sysvec.c	(revision 315828)
+++ sys/i386/cloudabi32/cloudabi32_sysvec.c	(working copy)
@@ -200,6 +200,5 @@
 	.brand		= ELFOSABI_CLOUDABI,
 	.machine	= EM_386,
 	.sysvec		= &cloudabi32_elf_sysvec,
-	.compat_3_brand	= "CloudABI",
 	.flags		= BI_BRAND_ONLY_STATIC,
 };
Index: sys/kern/imgact_elf.c
===================================================================
--- sys/kern/imgact_elf.c	(revision 315828)
+++ sys/kern/imgact_elf.c	(working copy)
@@ -312,8 +312,9 @@
 			continue;
 		if (hdr->e_machine == bi->machine &&
 		    (hdr->e_ident[EI_OSABI] == bi->brand ||
+		    (bi->compat_3_brand != NULL &&
 		    strcmp((const char *)&hdr->e_ident[OLD_EI_BRAND],
-		    bi->compat_3_brand) == 0)) {
+		    bi->compat_3_brand) == 0))) {
 			/* Looks good, but give brand a chance to veto */
 			if (!bi->header_supported ||
 			    bi->header_supported(imgp)) {


More information about the svn-src-all mailing list