Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Aug 2021 09:25:54 GMT
From:      Alex Richardson <arichardson@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 85c76b41178c - stable/13 - tools/build: Don't redefine open() for the linux bootstrap
Message-ID:  <202108050925.1759Ps4T006761@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by arichardson:

URL: https://cgit.FreeBSD.org/src/commit/?id=85c76b41178c69ad8262523bc19fe53d69110d92

commit 85c76b41178c69ad8262523bc19fe53d69110d92
Author:     Alex Richardson <arichardson@FreeBSD.org>
AuthorDate: 2021-08-02 08:45:05 +0000
Commit:     Alex Richardson <arichardson@FreeBSD.org>
CommitDate: 2021-08-05 09:00:45 +0000

    tools/build: Don't redefine open() for the linux bootstrap
    
    This is needed to bootstrap llvm-tblgen on Linux since LLVM calls
    `::open(...)` which does not work if open is a statement macro.
    Also stop defining O_SHLOCK/O_EXLOCK and update the only bootstrap tools
    user of those flags to deal with missing definitions.
    
    Reviewed By:    jrtc27
    MFC after:      1 week
    Differential Revision: https://reviews.freebsd.org/D31226
    
    (cherry picked from commit 5f6c8ce2452da2da233e37bf4c2b6fccde8594b1)
---
 lib/libc/db/db/db.c                           |  6 ++++++
 tools/build/cross-build/include/linux/fcntl.h | 25 ++++---------------------
 2 files changed, 10 insertions(+), 21 deletions(-)

diff --git a/lib/libc/db/db/db.c b/lib/libc/db/db/db.c
index a9a5b060da62..7158cc80e44e 100644
--- a/lib/libc/db/db/db.c
+++ b/lib/libc/db/db/db.c
@@ -49,6 +49,12 @@ static int __dberr(void);
 #ifndef O_CLOEXEC
 #define O_CLOEXEC 0
 #endif
+#ifndef O_EXLOCK
+#define O_EXLOCK 0
+#endif
+#ifndef O_SHLOCK
+#define O_SHLOCK 0
+#endif
 
 DB *
 dbopen(const char *fname, int flags, int mode, DBTYPE type, const void *openinfo)
diff --git a/tools/build/cross-build/include/linux/fcntl.h b/tools/build/cross-build/include/linux/fcntl.h
index 94662befddad..4fa169d4ed4c 100644
--- a/tools/build/cross-build/include/linux/fcntl.h
+++ b/tools/build/cross-build/include/linux/fcntl.h
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause
  *
- * Copyright 2018-2020 Alex Richardson <arichardson@FreeBSD.org>
+ * Copyright 2018-2021 Alex Richardson <arichardson@FreeBSD.org>
  *
  * This software was developed by SRI International and the University of
  * Cambridge Computer Laboratory (Department of Computer Science and
@@ -12,6 +12,9 @@
  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
  * ("CTSRD"), as part of the DARPA CRASH research programme.
  *
+ * This work was supported by Innovate UK project 105694, "Digital Security by
+ * Design (DSbD) Technology Platform Prototype".
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -37,29 +40,9 @@
  */
 #pragma once
 
-
 /* <bits/fcntl.h> includes <bits/stat.h> which contains a member __unused */
 #include "__unused_workaround_start.h"
 #include_next <fcntl.h>
 #include "__unused_workaround_end.h"
 
-#ifdef __unused_undefd
-#undef __unused_undefd
-#define __unused __attribute__((unused))
-#endif
-
 #include <sys/file.h>
-
-#ifndef O_EXLOCK
-#define O_EXLOCK (1 << 30)
-#endif
-#ifndef O_SHLOCK
-#define O_SHLOCK (1 << 31)
-#endif
-
-#undef open
-#define open(path, flags, ...) ({ \
-    int __fd = (open)(path, flags, ##__VA_ARGS__); \
-    if (flags & O_EXLOCK) flock(__fd, LOCK_EX); \
-    if (flags & O_SHLOCK) flock(__fd, LOCK_SH); \
-    __fd; })



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202108050925.1759Ps4T006761>