Well, your saying of _NETBSD_SOURCE is defined by default seems correct, I compiled a file in the benchmark separately which has the problem of accessing macro SA_ONSTACK <http://nxr.netbsd.org/source/s?refs=SA_ONSTACK&project=src> which lives in <signal.h>. There is no problem in executing. However, I am still not convinced why _NETBSD_SOURCE does not take effect in the benchmark execution? There is no #undef _NETBSD_SOURCE in the benchmark, also defining other macros will not affect _NETBSD_SOURCE (it will make multiple macros exist simultaneously). I am not quite clear why the default _NETBSD_SOURCE does not work in the benchmark.
this is from <signal.h>, benchmark using SA_ONSTACK reporting this macro not found. #*if* (*defined*(_XOPEN_SOURCE <http://nxr.netbsd.org/source/s?defs=_XOPEN_SOURCE&project=src>) && *defined*(_XOPEN_SOURCE_EXTENDED <http://nxr.netbsd.org/source/s?defs=_XOPEN_SOURCE_EXTENDED&project=src>)) || \ 146 <http://nxr.netbsd.org/xref/src/sys/sys/signal.h#146> (_XOPEN_SOURCE <http://nxr.netbsd.org/source/s?defs=_XOPEN_SOURCE&project=src> - 0) >= 500 || *defined*(_NETBSD_SOURCE <http://nxr.netbsd.org/source/s?defs=_NETBSD_SOURCE&project=src>) 147 <http://nxr.netbsd.org/xref/src/sys/sys/signal.h#147>#*define* SA_ONSTACK <http://nxr.netbsd.org/source/s?refs=SA_ONSTACK&project=src> 0x0001 /* take signal on signal stack */ 148 <http://nxr.netbsd.org/xref/src/sys/sys/signal.h#148>#*define* SA_RESTART <http://nxr.netbsd.org/source/s?refs=SA_RESTART&project=src> 0x0002 /* restart system call on signal return */ 149 <http://nxr.netbsd.org/xref/src/sys/sys/signal.h#149>#*define* SA_RESETHAND <http://nxr.netbsd.org/source/s?refs=SA_RESETHAND&project=src> 0x0004 /* reset to SIG_DFL when taking signal */ 150 <http://nxr.netbsd.org/xref/src/sys/sys/signal.h#150>#*define* SA_NODEFER <http://nxr.netbsd.org/source/s?refs=SA_NODEFER&project=src> 0x0010 /* don't mask the signal we're delivering */ 151 <http://nxr.netbsd.org/xref/src/sys/sys/signal.h#151>#*endif* /* _XOPEN_SOURCE_EXTENDED || XOPEN_SOURCE >= 500 || _NETBSD_SOURCE */ 2016-05-12 9:57 GMT-07:00 Christos Zoulas <chris...@zoulas.com>: > On May 12, 9:22am, charles.cui1...@gmail.com (Charles Cui) wrote: > -- Subject: Re: refine of the GSOC project > > | For the errors in the second list, I applied part of your change, which > is > | -lpthread -lrt -lm linked flags. > | I did not apply other changes in the patch, but if applied, most of > errors > | in the second list will disappear. > | Besides, I used -D_NETBSD_SOURCE to make some variables accessible. > | Why do you think we should not use it? Some kernel source has the code > of > | if defined _NETBSD_SOURCE || defined _XOPEN_SOURCE > | /// define some variable here, say it is called foo > | the benchmark reference foo, so we need to either enable _NETBSD_SOURCE > or > | _XOPEN_SOURCE, right? > | > | also, in the LDFLAGS files of the benchmark suite, there are two comments > | #Recommended flags: > | #-D_XOPEN_SOURCE=600 -lpthread -lrt -lm > | > | It seems benchmark authors think users should enable _XOPEN_SOURCE. > | Let me know if there are problems. > > In the standard environment, without any _FOO_SOURCE defined, > _NETBSD_SOURCE > is defined by default. If you need to add it, this means that something > else > is defining _FOO_SOURCE, thus changing the default compilation environment. > FOO in this case could be POSIX/XOPEN etc. > > christos >