[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 6/8] RISC-V: annotate entry points with type and size
On Wed, 2023-07-26 at 17:43 +0200, Jan Beulich wrote: > On 26.07.2023 17:28, Oleksii wrote: > > On Mon, 2023-07-10 at 10:58 +0200, Jan Beulich wrote: > > > On 10.07.2023 10:56, Jan Beulich wrote: > > > > Use the generic framework in xen/linkage.h. No change in > > > > generated > > > > code > > > > except of course the converted symbols change to be hidden ones > > > > and > > > > gain > > > > a valid size. > > > > > > > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > > > > > I'm sorry, the Cc list was incomplete here. Adding back the > > > remaining > > > REST > > > maintainers. > > > > > > Jan > > > > > > > --- > > > > Probably count_args_exp() should move to macros.h, but I first > > > > wanted to > > > > see whether anyone can suggest any better approach for checking > > > > whether > > > > a defined macro expands to nothing. > > What about introduction of conditional macros ? > > Something similar to: > > #include <stdio.h> > > > > #define CONDITIONAL_RETURN(arg1, arg2) > > CONDITIONAL_RETURN_IMPL(arg1, > > arg2, EMPTY) > > > > #define EMPTY(...) "" > > > > #define CONDITIONAL_RETURN_IMPL(arg1, arg2, empty_check) \ > > CONDITIONAL_RETURN_##empty_check(arg1, arg2) > > > > #define CONDITIONAL_RETURN_EMPTY(arg1, arg2) \ > > CONDITIONAL_RETURN_ARG1(arg1, arg2) > > > > #define CONDITIONAL_RETURN_ARG1(arg1, arg2) arg1, arg2 > > > > #define CONDITIONAL_RETURN_ARG2(arg1, arg2) arg1 > > I don't see how this would be used in your scheme. It ... > > > int main() { > > int a = 42; > > const char* b = "hello"; > > > > // Second argument is not empty, both arguments are returned > > printf("Case 1: %d, %s\n", CONDITIONAL_RETURN(a, b)); // > > Prints: > > Case 1: 42, hello > > > > // Second argument is empty, only the first argument is > > returned > > printf("Case 2: %d, %s\n", CONDITIONAL_RETURN(a, "")); // > > Prints: > > Case 2: 42, > > ... certainly isn't here, or this likely would cause at least a > warning > from the compiler (for there being too few arguments to printf()) and > then a runtime UB for interpreting something as a pointer to a string > which likely isn't. > > > return 0; > > } > > > > and then define DO_CODE_ALIGN using CONDITIONAL_RETURN? > > Afaict instead of getting rid of the comma, you'd actually add "" > after it. What am I missing? You are right. I missed that actually it returns "". ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |