// Copyright 2022 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT

extern "C" int GetInt() {
  // Exercise some weirdness first to ensure that this module has been
  // properly loaded.
  static int data_location;
  static int* volatile data_address = &data_location;
  static int* const volatile relro_address = &data_location;

  // This makes absolutely sure the compiler doesn't think it knows how to
  // optimize away the fetches and tests.
  int* from_data;
  __asm__("" : "=g"(from_data) : "0"(data_address));

  // Since data_location has internal linkage, the references here will use
  // pure PC-relative address materialization.
  if (from_data != &data_location) {
    // Address in data not relocated properly.
    return -1;
  }

  int* from_relro;
  __asm__("" : "=g"(from_relro) : "0"(relro_address));
  if (from_relro != &data_location) {
    // Address in RELRO not relocated properly.
    return -2;
  }

  return 42;
}
