On Mon, Nov 15, 2010 at 12:20:37AM +0300, Anonymous wrote: > Konstantin Belousov <[email protected]> writes: > > > Author: kib > > Date: Sun Nov 14 18:24:12 2010 > > New Revision: 215309 > > URL: http://svn.freebsd.org/changeset/base/215309 > > > > Log: > > Use symbolic names instead of hardcoding values for magic p_osrel > > constants. > > > > MFC after: 1 week > [...] > > Modified: head/sys/sys/param.h > > ============================================================================== > > --- head/sys/sys/param.h Sun Nov 14 18:05:03 2010 (r215308) > > +++ head/sys/sys/param.h Sun Nov 14 18:24:12 2010 (r215309) > > @@ -60,6 +60,11 @@ > > #undef __FreeBSD_version > > #define __FreeBSD_version 900025 /* Master, propagated to newvers */ > > > > +#ifdef _KERNEL > > +#define __FreeBSD_version_SIGSEGV 700004 > > +#define __FreeBSD_version_MAP_ANON 800104 > > +#endif > > + > > This breaks bsd.port.mk regexp to determine OSVERSION. > > # Get __FreeBSD_version > .if !defined(OSVERSION) > .if exists(/usr/include/sys/param.h) > OSVERSION!= ${AWK} '/^\#define[[:blank:]]__FreeBSD_version/ {print $$3}' < > /usr/include/sys/param.h > .elif exists(/usr/src/sys/sys/param.h) > OSVERSION!= ${AWK} '/^\#define[[:blank::]]__FreeBSD_version/ {print $$3}' < > /usr/src/sys/sys/param.h > .else > OSVERSION!= ${SYSCTL} -n kern.osreldate > .endif > .endif > > $ make -V OSVERSION > 900025 700004 800104 > > And every port chokes on it. > > $ make -C devel/libpthread-stubs > "Makefile", line 26: warning: String comparison operator should be either > == or != > "Makefile", line 26: Malformed conditional (${OSVERSION} < 700000) > "Makefile", line 28: if-less endif > "/usr/ports/Mk/bsd.port.mk", line 1739: warning: String comparison operator > should be either == or != > "/usr/ports/Mk/bsd.port.mk", line 1739: Malformed conditional > (defined(USE_XZ) && ( (${OSVERSION} >= 900000 && ${OSVERSION} < 900012) || > ${OSVERSION} < 800505 )) > "/usr/ports/Mk/bsd.port.mk", line 6394: if-less endif > make: fatal errors encountered -- cannot continue > > %% > Index: Mk/bsd.port.mk > =================================================================== > RCS file: /a/.cvsup/ports/Mk/bsd.port.mk,v > retrieving revision 1.654 > diff -u -p -r1.654 bsd.port.mk > --- Mk/bsd.port.mk 8 Nov 2010 16:07:03 -0000 1.654 > +++ Mk/bsd.port.mk 14 Nov 2010 21:18:32 -0000 > @@ -1219,9 +1219,9 @@ OSREL!= ${UNAME} -r | ${SED} -e 's/[-(]. > # Get __FreeBSD_version > .if !defined(OSVERSION) > .if exists(/usr/include/sys/param.h) > -OSVERSION!= ${AWK} '/^\#define[[:blank:]]__FreeBSD_version/ {print $$3}' < > /usr/include/sys/param.h > +OSVERSION!= ${AWK} '/^\#define[[:blank:]]__FreeBSD_version[[:blank:]]/ > {print $$3}' < /usr/include/sys/param.h > .elif exists(/usr/src/sys/sys/param.h) > -OSVERSION!= ${AWK} '/^\#define[[:blank::]]__FreeBSD_version/ {print $$3}' < > /usr/src/sys/sys/param.h > +OSVERSION!= ${AWK} '/^\#define[[:blank::]]__FreeBSD_version[[:blank:]]/ > {print $$3}' < /usr/src/sys/sys/param.h > .else > OSVERSION!= ${SYSCTL} -n kern.osreldate > .endif > %%
I think it is better to select different namespace for the special versions.
Can you confirm that the following patch fixes the ports mk for you ?
It is enough to cd /usr/src/include && make install after patching.
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index a1a3ebc..e5184a6 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -416,8 +416,7 @@ trap(struct trapframe *frame)
* without the ABI-tag ELF note.
*/
if (SV_CURPROC_ABI() == SV_ABI_FREEBSD
- && p->p_osrel >=
- __FreeBSD_version_SIGSEGV) {
+ && p->p_osrel >= P_OSREL_SIGSEGV) {
i = SIGSEGV;
ucode = SEGV_ACCERR;
} else {
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index b6f843a..026ba9d 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -462,8 +462,7 @@ trap(struct trapframe *frame)
* without the ABI-tag ELF note.
*/
if (SV_CURPROC_ABI() == SV_ABI_FREEBSD
- && p->p_osrel >=
- __FreeBSD_version_SIGSEGV) {
+ && p->p_osrel >= P_OSREL_SIGSEGV) {
i = SIGSEGV;
ucode = SEGV_ACCERR;
} else {
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 3e4cdf6..ea90308 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -61,8 +61,8 @@
#define __FreeBSD_version 900025 /* Master, propagated to newvers */
#ifdef _KERNEL
-#define __FreeBSD_version_SIGSEGV 700004
-#define __FreeBSD_version_MAP_ANON 800104
+#define P_OSREL_SIGSEGV 700004
+#define P_OSREL_MAP_ANON 800104
#endif
#ifndef LOCORE
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 4d92573..a6decc3 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -232,7 +232,7 @@ mmap(td, uap)
/* Make sure mapping fits into numeric range, etc. */
if ((uap->len == 0 && !SV_CURPROC_FLAG(SV_AOUT) &&
- curproc->p_osrel >= __FreeBSD_version_MAP_ANON) ||
+ curproc->p_osrel >= P_OSREL_MAP_ANON) ||
((flags & MAP_ANON) && (uap->fd != -1 || pos != 0)))
return (EINVAL);
pgp23pTqIOVQV.pgp
Description: PGP signature
