#include "reloc.h"

enum relocated_enum_signed_32_checked_variants {
#ifndef TARGET
  S32_VAL_A = -0x7AAAAAAA,
#endif
  S32_VAL_B = -0x7BBBBBBB,
#ifdef TARGET
  S32_VAL_C = -0x7CCCCCCC
#endif
};

__noinline int enum_signed_32_checked_variants_global() {
#ifndef TARGET
  if (bpf_core_enum_value_exists(enum relocated_enum_signed_32_checked_variants,
                                 S32_VAL_A)) {
    return set_output(bpf_core_enum_value(
        enum relocated_enum_signed_32_checked_variants, S32_VAL_A));
#else
  if (bpf_core_enum_value_exists(enum relocated_enum_signed_32_checked_variants,
                                 S32_VAL_C)) {
    return set_output(bpf_core_enum_value(
        enum relocated_enum_signed_32_checked_variants, S32_VAL_C));
#endif
  } else {
    return set_output(bpf_core_enum_value(
        enum relocated_enum_signed_32_checked_variants, S32_VAL_B));
  }
}

SEC("uprobe") int program(void *ctx) {
  return enum_signed_32_checked_variants_global();
}