<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.

</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/86a71bfc238cda8577a8abc4f16a1b6e010d7492">https://github.com/macports/macports-legacy-support/commit/86a71bfc238cda8577a8abc4f16a1b6e010d7492</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 86a71bfc238cda8577a8abc4f16a1b6e010d7492
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Wed Jun 19 16:32:25 2024 -0700

<span style='display:block; white-space:pre;color:#404040;'>    Makefile: Fix CC/CXX/LD flags issues.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This fixes three issues with specifying flag variables to the Makefile:
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    1) It attempted to insert ARCHFLAGS into CC and CXX, but it was using ?=,
</span><span style='display:block; white-space:pre;color:#404040;'>    which doesn't work for predefined variables.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    2) It never incorporated ARCHFLAGS into LDFLAGS.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    3) It provided some defaults in CFLAGS and CXXFLAGS, but any setting of
</span><span style='display:block; white-space:pre;color:#404040;'>    these variables removed those defaults.  The defaults are now in XCFLAGS
</span><span style='display:block; white-space:pre;color:#404040;'>    and XCXXFLAGS, which are added to C[XX]FLAGS, along with ARCHFLAGS, so
</span><span style='display:block; white-space:pre;color:#404040;'>    they normally are kept.  If removing the defaults is desired, then
</span><span style='display:block; white-space:pre;color:#404040;'>    XC[XX]FLAGS can be overridden.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Note that the port build procedure uses FORCE_ARCH, not ARCHFLAGS.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/69782
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'>    ARCHFLAGS is now respected, and setting CFLAGS doesn't remove
</span><span style='display:block; white-space:pre;color:#404040;'>    defaults.
</span>---
 Makefile | 64 +++++++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 35 insertions(+), 29 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Makefile b/Makefile
</span><span style='display:block; white-space:pre;color:#808080;'>index ced7189..c26c1d1 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -49,17 +49,23 @@ SYSREEXPORTFLAG  = -Wl,-reexport_library,/usr/lib/libSystem.B.dylib
</span> BUILDSLIBFLAGS   = -qs
 POSTINSTALL      = install_name_tool
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# The defaults for C[XX]FLAGS are defined as XC[XX]FLAGS, so that supplied
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# definitions of C[XX]FLAGS don't override them.  If overriding these defaults
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# is wanted, then override XC[XX]FLAGS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Note: Overriding CC or CXX with ?= doesn't work, since they're "defined".
</span> FORCE_ARCH      ?=
 ARCHFLAGS       ?=
 LIPO            ?= lipo
<span style='display:block; white-space:pre;background:#ffe0e0;'>-CC              ?= cc $(ARCHFLAGS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CFLAGS          ?= -Os -Wall -Wno-deprecated-declarations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+XCFLAGS         ?= -Os -Wall -Wno-deprecated-declarations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLCFLAGS       := $(ARCHFLAGS) $(XCFLAGS) $(CFLAGS)
</span> DLIBCFLAGS      ?= -fPIC
 SLIBCFLAGS      ?=
<span style='display:block; white-space:pre;background:#ffe0e0;'>-CXX             ?= c++ $(ARCHFLAGS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CXXFLAGS        ?= -Os -Wall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+XCXXFLAGS       ?= -Os -Wall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLCXXFLAGS     := $(ARCHFLAGS) $(XCXXFLAGS) $(CXXFLAGS)
</span> LD              ?= ld
 LDFLAGS         ?=
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLLDFLAGS      := $(ARCHFLAGS) $(LDFLAGS)
</span> AR              ?= ar
 
 UNAME           ?= uname
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -98,7 +104,7 @@ ADDOBJS         := $(patsubst %.c,%$(SLIBOBJEXT),$(ADDSRCS))
</span> TESTDIR          = test
 TESTNAMEPREFIX   = $(TESTDIR)/test_
 TESTRUNPREFIX    = run_
<span style='display:block; white-space:pre;background:#ffe0e0;'>-TESTLDFLAGS      = -L$(BUILDDLIBDIR) $(LDFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTLDFLAGS      = -L$(BUILDDLIBDIR) $(ALLLDFLAGS)
</span> TESTLIBS         = -l$(LIBNAME)
 TESTSRCS_C      := $(wildcard $(TESTNAMEPREFIX)*.c)
 TESTSRCS_CPP    := $(wildcard $(TESTNAMEPREFIX)*.cpp)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -112,7 +118,7 @@ TESTRUNS        := $(patsubst $(TESTNAMEPREFIX)%,$(TESTRUNPREFIX)%,$(TESTPRGS))
</span> MANTESTDIR       = manual_tests
 MANTESTPREFIX    = $(MANTESTDIR)/
 MANRUNPREFIX     = mantest_
<span style='display:block; white-space:pre;background:#ffe0e0;'>-MANTESTLDFLAGS   = $(LDFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MANTESTLDFLAGS   = $(ALLLDFLAGS)
</span> MANTESTSRCS_C   := $(wildcard $(MANTESTPREFIX)*.c)
 MANTESTOBJS_C   := $(patsubst %.c,%.o,$(MANTESTSRCS_C))
 MANTESTPRGS_C   := $(patsubst %.c,%,$(MANTESTSRCS_C))
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -231,45 +237,45 @@ syslib: dlib $(BUILDSYSLIBPATH)
</span> # inode-based one.
 $(MULTIDLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
        # Generate possibly multi-architecture object files ...
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64unix2003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64unix2003
</span>   # ... and split them up, because ld can only generate single-architecture files ...
        $(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
 
 $(MULTISLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
        # Generate possibly multi-architecture object files ...
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64unix2003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64unix2003
</span>   # ... and split them up, because ld can only generate single-architecture files ...
        $(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
 
 # Generously marking all header files as potential dependencies
 $(DLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) $< -o $@
</span> 
 $(SLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) $< -o $@
</span> 
 $(ADDOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) $< -o $@
</span> 
 $(TESTOBJS_C): %.o: %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) -c -std=c99 -I$(SRCINCDIR) $(CFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -std=c99 -I$(SRCINCDIR) $(ALLCFLAGS) $< -o $@
</span> 
 $(TESTOBJS_CPP): %.o: %.cpp $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CXX) -c -I$(SRCINCDIR) $(CXXFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CXX) -c -I$(SRCINCDIR) $(ALLCXXFLAGS) $< -o $@
</span> 
 $(BUILDDLIBPATH): $(DLIBOBJS) $(MULTIDLIBOBJS)
        $(MKINSTALLDIRS) $(BUILDDLIBDIR)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) $(BUILDDLIBFLAGS) $(LDFLAGS) $^ -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) $(BUILDDLIBFLAGS) $(ALLLDFLAGS) $^ -o $@
</span> 
 $(BUILDSYSLIBPATH): $(DLIBOBJS) $(MULTIDLIBOBJS) $(ADDOBJS)
        $(MKINSTALLDIRS) $(BUILDDLIBDIR)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(CC) $(BUILDSYSLIBFLAGS) $(LDFLAGS) $(SYSREEXPORTFLAG) $^ -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) $(BUILDSYSLIBFLAGS) $(ALLLDFLAGS) $(SYSREEXPORTFLAG) $^ -o $@
</span> 
 $(BUILDSLIBPATH): $(SLIBOBJS) $(MULTISLIBOBJS)
        $(MKINSTALLDIRS) $(BUILDSLIBDIR)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -303,17 +309,17 @@ tiger-bins:
</span> # succeeds using c++11 -- as desired.
 test_cmath: test/test_cmath.cc $(ALLHEADERS)
        $(info 1: testing compiler '$(CXX)' for non-legacy cmath using c++03; the build should fail, regardless of the compiler or OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(info 1: $(CXX) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   @-$(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "1: c++03 no legacy cmath build success (test failed)!" || echo "1: c++03 no legacy cmath build failure (test succeeded)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(info 1: $(CXX) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   @-$(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "1: c++03 no legacy cmath build success (test failed)!" || echo "1: c++03 no legacy cmath build failure (test succeeded)!"
</span>   $(info 2: testing compiler '$(CXX)' for non-legacy cmath using c++03; the build should fail, regardless of the compiler or OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(info 2: $(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   @-$(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "2: c++03 legacy cmath build success (test failed)!" || echo "2: c++03 legacy cmath build failure (test succeeded)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(info 2: $(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   @-$(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "2: c++03 legacy cmath build success (test failed)!" || echo "2: c++03 legacy cmath build failure (test succeeded)!"
</span>   $(info 3: testing compiler '$(CXX)' for non-legacy cmath using c++11; if the compiler supports this standard, then the build should succeed regardless of OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(info 3: $(CXX) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   @-$(CXX) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "3: c++11 no legacy cmath build success (test failed)!" || echo "3: c++11 no legacy cmath build failure (test succeeded)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(info 3: $(CXX) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   @-$(CXX) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "3: c++11 no legacy cmath build success (test failed)!" || echo "3: c++11 no legacy cmath build failure (test succeeded)!"
</span>   $(info 4: testing compiler '$(CXX)' for legacy cmath using c++11; if the compiler supports this standard, then the build should succeed regardless of OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        $(info 4: $(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   @-$(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "4: c++11 legacy cmath build success (test succeeded)!" || echo "4: c++11 legacy cmath build failure (test failed)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(info 4: $(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   @-$(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "4: c++11 legacy cmath build success (test succeeded)!" || echo "4: c++11 legacy cmath build failure (test failed)!"
</span> 
 # Special clause for testing faccessat in a setuid program.
 # Must be run by root.
</pre><pre style='margin:0'>

</pre>