Hi, Jian-Xin:
Yes, it support.
I am afraid the comment need to update. We only support last field
variant-length firstly as the comment says, but after some regression test
for kernel build and debugging, we finally add any field variant-length
support.
Ling Kun
2012/1/3 Jian-Xin Lai <laij...@gmail.com>
> From the comments, this patch only supports the case of the last field
> is variant-length? Does this patch work for the following case:
> int foo(int x, int y) {
> struct {
> int arr1[x];
> int arr2[0];
> int arr3[y];
> } st;
> st.arr1[0] = st.arr2[0] = st.arr3[0] = 1;
> printf("%d, %d, %d\n", st.arr1[0], st.arr2[0], st.arr3[0]);
> }
>
> 2012/1/3 Ling Kun <erlv5...@gmail.com>:
> > Hi, Gang and Sun:
> > I have merged ICT's VLAS patch to open64, the code can work for a
> > minimal testcase. Please see the attachment. More testcase following the
> > standard is needed, and I am working on it.
> >
> > To make things done quickly, I modified some of the code, the patch
> in
> > the attachment is only a draft version. I also need more information
> about
> > the x86 kernel building environment to go on. And the patch itself need
> some
> > modification to satisfy the svn trunck commit rules.
> >
> > My team mate Zhao Hongjian is working on the document. It will take
> him
> > some times to finish.
> >
> >
> > Gang, would you please give me some details about your compile
> command
> > and the .i file after preprocessor. Thanks.
> >
> > Ling Kun.
> >
> > The testcase :
> > #include <assert.h>
> > int f2(int i2){ return i2; }
> > static void f1(int i1) {
> > struct VLS{ int ary1[f2(i1)]; } st1;
> > st1.ary1[1] = i1 + 1;
> > assert( st1.ary1[1] == 3);
> > }
> >
> > int main () {
> > f1(2);
> > return 0;
> >
> > }
> >
> >
> > On Sun, Jan 1, 2012 at 9:02 PM, Gang Yu <yugang...@gmail.com> wrote:
> >>
> >> Hi, Ling Kun:
> >>
> >> Glad to hear loongson team has solved this issue! I googled this
> >> feature on gnu site, I do not find the relevant documents. Could you
> please
> >> write some documents or elaborate more on your patch?
> >>
> >> Thanks a lot!
> >>
> >> Regards
> >> Gang
> >>
> >>
> >>
> >> 2012/1/1 凌坤 <erlv5...@gmail.com>
> >>>
> >>> Hi, Sun:
> >>> I am glad to do that. And now I am trying to merge this patch to
> >>> Open64 svn trunck, it is a little complex to try to pick it from the
> >>> Loongson branch :)
> >>> Hoping that a patch that can pass some testcase can be submit in 1-2
> >>> days :)
> >>>
> >>> Happy New year.
> >>>
> >>> Ling Kun
> >>>
> >>>
> >>> ------------------ Original ------------------
> >>> From: "Sun Chan"<sun.c...@gmail.com>;
> >>> Date: Sun, Jan 1, 2012 02:25 PM
> >>> To: "Ling Kun"<lkun.e...@gmail.com>;
> >>> Cc: "open64-devel"<open64-devel@lists.sourceforge.net>;
> >>> Subject: Re: [Open64-devel] Current build status for linux kernel on
> >>> open64
> >>>
> >>> LingKun,
> >>>
> >>> can you send the changes for VLS (or VLA) to this alias (or send to me
> >>> and Yugang privately and we can help review and test out on x86) for
> >>> review?
> >>> Sun
> >>>
> >>> On Sun, Jan 1, 2012 at 10:14 AM, Ling Kun <lkun.e...@gmail.com> wrote:
> >>> > hi, Gang Yu:
> >>> > Loongson compiler(based on Open64) team have successfully build
> MIPS
> >>> > Linux kernel 2.6.35, and make it run on Qemu. And we have solved the
> >>> > VLA
> >>> > issue, the debug record and patches (based on the Open64 trunck svn
> >>> > r28xx)
> >>> > of Loongson teams' work have be sent to Zhu qing.
> >>> > If it is possible, we are glad to merge our VLA work to Open64
> >>> > current
> >>> > SVN trunck version.
> >>> >
> >>> > Ling Kun.
> >>> >
> >>> >
> >>> >
> >>> > On Sat, Dec 31, 2011 at 10:45 AM, Gang Yu <yugang...@gmail.com>
> wrote:
> >>> >>
> >>> >> Thanks. we also wish could get input from the original wgen authors,
> >>> >> it is
> >>> >> leaving an unsupported feature for VLA and then compiler asserts. In
> >>> >> order
> >>> >> to avoid duplication of effort, we wish learn from the seniors and
> >>> >> then we
> >>> >> can go ahead or make workaround.
> >>> >>
> >>> >>
> >>> >> Regards
> >>> >> Gang
> >>> >>
> >>> >>
> >>> >>
> >>> >> On Sat, Dec 31, 2011 at 10:42 AM, Sun Chan <sun.c...@gmail.com>
> wrote:
> >>> >>>
> >>> >>> Let me try to understand. You are asking for opinions on whether
> >>> >>> ope64
> >>> >>> should ignore the VLA problem until there is further documentation
> >>> >>> and/or evidence of more VLA usage? Until then, workaround that by
> >>> >>> changing kernel source?
> >>> >>> Sun
> >>> >>>
> >>> >>> On Sat, Dec 31, 2011 at 10:36 AM, Gang Yu <yugang...@gmail.com>
> >>> >>> wrote:
> >>> >>> > Hi, list:
> >>> >>> >
> >>> >>> > We have some efforts on building and tuning linux kernel on
> >>> >>> > open64,
> >>> >>> > we
> >>> >>> > have fixed several bugs and now we have only two building issues
> >>> >>> > and
> >>> >>> > several running issues at x86_64 target, O2 level.
> >>> >>> >
> >>> >>> > linux 2.6.32 as an example, the two building issues are:
> >>> >>> >
> >>> >>> > A). bug787, Rao Shivarama has submitted a patch, but due to the
> >>> >>> > regression
> >>> >>> > filed as bug882, the patch is backed out. This is still a pending
> >>> >>> > issue. My
> >>> >>> > personally investigation shows Rao's approach is on the right
> >>> >>> > track,
> >>> >>> > the
> >>> >>> > bug882 shows the fix triggers the SSA version verification issues
> >>> >>> > which
> >>> >>> > are
> >>> >>> > already known in open64, filed as bug889/891/892. We will
> continue
> >>> >>> > work
> >>> >>> > on
> >>> >>> > it.
> >>> >>> >
> >>> >>> > B). the Variable Length Array in Structs (VLAS), this is a common
> >>> >>> > issue
> >>> >>> > for
> >>> >>> > non-gnu compilers.
> >>> >>> >
> >>> >>> > clang documents the issue below:
> >>> >>> >
> >>> >>> > Intentionally unsupported GCC extensions
> >>> >>> >
> >>> >>> > clang does not support the gcc extension that allows
> >>> >>> > variable-length
> >>> >>> > arrays
> >>> >>> > in structures. This is for a few reasons: one, it is tricky to
> >>> >>> > implement,
> >>> >>> > two, the extension is completely undocumented, and three, the
> >>> >>> > extension
> >>> >>> > appears to be rarely used. Note that clang does support flexible
> >>> >>> > array
> >>> >>> > members (arrays with a zero or unspecified size at the end of a
> >>> >>> > structure).
> >>> >>> >
> >>> >>> >
> >>> >>> > I review the failure case of kernel build, the VLAS are not the
> >>> >>> > flexible
> >>> >>> > array members(case like this : struct A { int a; int b; char
> >>> >>> > ctx[]} is
> >>> >>> > called Flexible array menbers. It is a newly introduced feature
> c99
> >>> >>> > or
> >>> >>> > later, open64 supports it well.)
> >>> >>> >
> >>> >>> > VLAS does not appear in linux kernel source code frequently:
> >>> >>> >
> >>> >>> > lib/libcrc32c.c
> >>> >>> > u32 crc32c(u32 crc, const void *address, unsigned int length)
> >>> >>> > 43{
> >>> >>> > 44 struct {
> >>> >>> > 45 struct shash_desc shash;
> >>> >>> > 46 char ctx[crypto_shash_descsize(tfm)];
> >>> >>> > 47 } desc;
> >>> >>> > crypto/testmgr.c
> >>> >>> > struct {
> >>> >>> > 1432 struct shash_desc shash;
> >>> >>> > 1433 char ctx[crypto_shash_descsize(tfm)];
> >>> >>> > 1434 } sdesc;
> >>> >>> > crypo/hmac.c
> >>> >>> > struct {
> >>> >>> > 1432 struct shash_desc shash;
> >>> >>> > 1433 char ctx[crypto_shash_descsize(tfm)
> >>> >>> > ];
> >>> >>> > 1434 } sdesc;
> >>> >>> >
> >>> >>> >
> >>> >>> > I just speculate that clang will support kernel build by
> flexible
> >>> >>> > array
> >>> >>> > members. It is not the case,
> >>> >>> >
> >>> >>> > http://llvm.org/bugs/show_bug.cgi?id=4071
> >>> >>> >
> >>> >>> > and people claim that they build up kernel with clang, but it is
> >>> >>> > not
> >>> >>> > fully
> >>> >>> > functional.
> >>> >>> >
> >>> >>> >
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html
> >>> >>> >
> >>> >>> > as this guy pointed out,
> >>> >>> >
> >>> >>> > * SELinux, Posix ACLs, IPSec, eCrypt, anything that uses the
> >>> >>> > crypto
> >>> >>> > API -
> >>> >>> > None
> >>> >>> > of these will compile, due to either an ICE or variable-length
> >>> >>> > arrays in
> >>> >>> > structures (don't remember which, it's in my notes somewhere).
> If
> >>> >>> > it's
> >>> >>> > variable-length arrays or another intentionally unsupported
> >>> >>> > GNUtension,
> >>> >>> > I'm
> >>> >>> > hoping it's just used in some isolated implementation detail
> (or
> >>> >>> > details),
> >>> >>> > and not a fundamental part of the crypto API (honestly just
> >>> >>> > haven't
> >>> >>> > had
> >>> >>> > a
> >>> >>> > chance to dive into the crypto source yet). I'm really hoping
> >>> >>> > it's
> >>> >>> > an
> >>> >>> > issue
> >>> >>> > in Clang, though, as it's easier for me to hack Clang and I'm
> >>> >>> > trying to
> >>> >>> > avoid kernel patches as much as possible.
> >>> >>> >
> >>> >>> >
> >>> >>> > We meet the problem and post it out, we wish we could get input
> >>> >>> > from
> >>> >>> > community and go on the kernel building/tuning work to broaden
> the
> >>> >>> > open64's
> >>> >>> > application and improve the code quality.
> >>> >>> >
> >>> >>> > Thanks.
> >>> >>> >
> >>> >>> > Regards
> >>> >>> > Gang
> >>> >>> >
> >>> >>> >
> >>> >>> >
> >>> >>> >
> ------------------------------------------------------------------------------
> >>> >>> > Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a
> >>> >>> > complex
> >>> >>> > infrastructure or vast IT resources to deliver seamless, secure
> >>> >>> > access
> >>> >>> > to
> >>> >>> > virtual desktops. With this all-in-one solution, easily deploy
> >>> >>> > virtual
> >>> >>> > desktops for less than the cost of PCs and save 60% on VDI
> >>> >>> > infrastructure
> >>> >>> > costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> >>> >>> > _______________________________________________
> >>> >>> > Open64-devel mailing list
> >>> >>> > Open64-devel@lists.sourceforge.net
> >>> >>> > https://lists.sourceforge.net/lists/listinfo/open64-devel
> >>> >>> >
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> ------------------------------------------------------------------------------
> >>> >> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a
> >>> >> complex
> >>> >> infrastructure or vast IT resources to deliver seamless, secure
> access
> >>> >> to
> >>> >> virtual desktops. With this all-in-one solution, easily deploy
> virtual
> >>> >> desktops for less than the cost of PCs and save 60% on VDI
> >>> >> infrastructure
> >>> >> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> >>> >> _______________________________________________
> >>> >> Open64-devel mailing list
> >>> >> Open64-devel@lists.sourceforge.net
> >>> >> https://lists.sourceforge.net/lists/listinfo/open64-devel
> >>> >>
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > http://www.lingcc.com
> >>> >
> >>> >
> >>> >
> ------------------------------------------------------------------------------
> >>> > Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a
> >>> > complex
> >>> > infrastructure or vast IT resources to deliver seamless, secure
> access
> >>> > to
> >>> > virtual desktops. With this all-in-one solution, easily deploy
> virtual
> >>> > desktops for less than the cost of PCs and save 60% on VDI
> >>> > infrastructure
> >>> > costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> >>> > _______________________________________________
> >>> > Open64-devel mailing list
> >>> > Open64-devel@lists.sourceforge.net
> >>> > https://lists.sourceforge.net/lists/listinfo/open64-devel
> >>> >
> >>>
> >>>
> >>>
> ------------------------------------------------------------------------------
> >>> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a
> complex
> >>> infrastructure or vast IT resources to deliver seamless, secure access
> to
> >>> virtual desktops. With this all-in-one solution, easily deploy virtual
> >>> desktops for less than the cost of PCs and save 60% on VDI
> infrastructure
> >>> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> >>> _______________________________________________
> >>> Open64-devel mailing list
> >>> Open64-devel@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/open64-devel
> >>>
> >>>
> >>>
> ------------------------------------------------------------------------------
> >>> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a
> complex
> >>> infrastructure or vast IT resources to deliver seamless, secure access
> to
> >>> virtual desktops. With this all-in-one solution, easily deploy virtual
> >>> desktops for less than the cost of PCs and save 60% on VDI
> infrastructure
> >>> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> >>> _______________________________________________
> >>> Open64-devel mailing list
> >>> Open64-devel@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/open64-devel
> >>>
> >>
> >
> >
> >
> > --
> > http://www.lingcc.com
> >
> >
> ------------------------------------------------------------------------------
> > Write once. Port to many.
> > Get the SDK and tools to simplify cross-platform app development. Create
> > new or port existing apps to sell to consumers worldwide. Explore the
> > Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
> > http://p.sf.net/sfu/intel-appdev
> > _______________________________________________
> > Open64-devel mailing list
> > Open64-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/open64-devel
> >
>
>
>
> --
> Regards,
> Lai Jian-Xin
>
--
http://www.lingcc.com
------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create
new or port existing apps to sell to consumers worldwide. Explore the
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel