================
@@ -0,0 +1,66 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// Test unwinding through a frame whose return address points to the VAPI
+// glue for the Live Library Update feature.
+
+// REQUIRES: target={{.+}}-aix{{.*}}
+
+#include <stdlib.h>
+#include <stdio.h>
+
+// VAPI glue addresses
+constexpr uintptr_t vapi_glue_addr_ext_32 = 0x8B80;
+constexpr uintptr_t vapi_addr_64 = 0x8e00;
+constexpr uintptr_t vapi_size_64 = 0x0200;
+constexpr uintptr_t vapi_glue_addr_begin = vapi_glue_addr_ext_32;     // Start 
address in 32-bit
+constexpr uintptr_t vapi_glue_addr_end = vapi_addr_64 + vapi_size_64; // End 
address in 64-bit
+
+struct FunctionDescriptor {
+  uintptr_t entry;
+  uintptr_t toc;
+  uintptr_t env;
+};
+
+struct Tracker {
+  const char* name;
+  Tracker(const char* n) : name(n) { printf("Construct %s\n", name); }
+  ~Tracker() { printf("Destruct %s\n", name); }
+};
+
+int comp(const void*, const void*) {
+  printf("comp()\n");
+  throw 42;
+}
+
+static void do_search() {
+  Tracker t("do_search-local");
+  char buf[1];
+  char key = 0;
+  printf("calling bsearch()\n");
+  // bsearch uses VAPI and sets the return address to the VAPI glue when LLU
+  // is on.
+  bsearch(&key, buf, 1, 1, comp);
+  printf("after bsearch\n");
+}
+
+int main() {
+  FunctionDescriptor* fd = reinterpret_cast<FunctionDescriptor*>(bsearch);
+
+  if (vapi_glue_addr_begin <= fd->entry && fd->entry < vapi_glue_addr_end) {
+    printf("!!! Live Library Update is enabled !!!\n");
----------------
jroelofs wrote:

These logs should be `fprintf(stderr`, otherwise the buffered stdout output may 
get swallowed by the python test harness if the test crashes.

https://github.com/llvm/llvm-project/pull/209280
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to