[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 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? Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |