[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 1/3] xen/arm: add support for run_in_exception_handler()
On 21.01.2021 10:50, Julien Grall wrote: > Hi Jan, > > On 21/01/2021 07:55, Jan Beulich wrote: >> On 20.01.2021 19:20, Julien Grall wrote: >>> On 16/01/2021 10:33, Juergen Gross wrote: >>>> Add support to run a function in an exception handler for Arm. Do it >>>> as on x86 via a bug_frame, but pass the function pointer via a >>>> register (this needs to be done that way, because inline asm support >>>> for 32-bit Arm lacks the needed functionality to reference an >>>> arbitrary function via the bugframe). >>> >>> I was going to commit the series, but then realized the commit message >>> and comment needs some tweaking because technically GCC is supporting >>> 'i' (I managed to get it working with -fno-pie). >>> >>> So how about: >>> >>> "This is needed to be done that way because GCC complains about invalid >>> constraint when using a function pointer with "i" and PIE is enabled >>> (default on most of GCC shipped with distro). Clang happily accepts it, >>> so it may be a bug in GCC." >> >> May I ask why you think it's a bug in gcc? I'd rather consider it >> a bug in clang. Taking the address of a symbol doesn't yield a >> constant in PIC or PIE code, aiui. > > I consider it a bug because we were using it as: > > .pushsection .bug.frame > 2b: > .long (%0 - 2b) > > So I expect the compiler to be able to find the displacement in both > cases as we don't need to know the exact address. > > I think Clang is just clever enough to figure out we want a displacement. If they take apart the contents of the asm(), this may be possible, yes. (Did you try with -no-integrated-as, btw?) But taking apart the asm() is a very risky game a compiler would play, as it may easily break the programmer's intentions (or still fail to recognize whether the use is okay, for the containing construct being too complex). > Do you have a suggestion of constraint that could resolve the issue? No. Don't use -fpie (but I guess that's not an option for other reasons). Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |