[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 0/2] hvmloader: drop usage of system headers
On 24.02.2021 21:08, Andrew Cooper wrote: > On 24/02/2021 10:26, Roger Pau Monne wrote: >> Hello, >> >> Following two patches aim to make hvmloader standalone, so that it don't >> try to use system headers. It shouldn't result in any functional >> change. >> >> Thanks, Roger. > > After some experimentation in the arch container > > Given foo.c as: > > #include <stdint.h> > > extern uint64_t bar; > uint64_t foo(void) > { > return bar; > } > > int main(void) > { > return 0; > } > > The preprocessed form with `gcc -m32 -E` is: > > # 1 "foo.c" > # 1 "<built-in>" > # 1 "<command-line>" > # 31 "<command-line>" > # 1 "/usr/include/stdc-predef.h" 1 3 4 > # 32 "<command-line>" 2 > # 1 "foo.c" > # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint.h" 1 3 4 > # 9 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint.h" 3 4 > # 1 "/usr/include/stdint.h" 1 3 4 > # 26 "/usr/include/stdint.h" 3 4 > # 1 "/usr/include/bits/libc-header-start.h" 1 3 4 > # 33 "/usr/include/bits/libc-header-start.h" 3 4 > # 1 "/usr/include/features.h" 1 3 4 > # 450 "/usr/include/features.h" 3 4 > # 1 "/usr/include/sys/cdefs.h" 1 3 4 > # 452 "/usr/include/sys/cdefs.h" 3 4 > # 1 "/usr/include/bits/wordsize.h" 1 3 4 > # 453 "/usr/include/sys/cdefs.h" 2 3 4 > # 1 "/usr/include/bits/long-double.h" 1 3 4 > # 454 "/usr/include/sys/cdefs.h" 2 3 4 > # 451 "/usr/include/features.h" 2 3 4 > # 474 "/usr/include/features.h" 3 4 > # 1 "/usr/include/gnu/stubs.h" 1 3 4 > > # 1 "/usr/include/gnu/stubs-32.h" 1 3 4 > # 8 "/usr/include/gnu/stubs.h" 2 3 4 > # 475 "/usr/include/features.h" 2 3 4 > # 34 "/usr/include/bits/libc-header-start.h" 2 3 4 > # 27 "/usr/include/stdint.h" 2 3 4 > # 1 "/usr/include/bits/types.h" 1 3 4 > # 27 "/usr/include/bits/types.h" 3 4 > # 1 "/usr/include/bits/wordsize.h" 1 3 4 > # 28 "/usr/include/bits/types.h" 2 3 4 > # 1 "/usr/include/bits/timesize.h" 1 3 4 > # 29 "/usr/include/bits/types.h" 2 3 4 > > # 31 "/usr/include/bits/types.h" 3 4 > typedef unsigned char __u_char; > ... > > while the freestanding form with `gcc -ffreestanding -m32 -E` is: > > # 1 "foo.c" > # 1 "<built-in>" > # 1 "<command-line>" > # 1 "foo.c" > # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint.h" 1 3 4 > # 11 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint.h" 3 4 > # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint-gcc.h" 1 3 4 > # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint-gcc.h" 3 4 > > # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/stdint-gcc.h" 3 4 > typedef signed char int8_t; > ... > > > I can compile and link trivial programs using -m32 and stdint.h without > any issue. > > Clearly something more subtle is going on with our choice of options > when compiling hvmloader, but it certainly looks like stdint.h is fine > to use in the way we want to use it. Why "more subtle"? All we're lacking is -ffreestanding. The question is whether it is an acceptably risky thing to do at this point in the release cycle to add the option. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |