)]}'
{
  "commit": "07a75dd579e82affded400a9f5edfa24ae4a3bc3",
  "tree": "15c3940eb931aeebef2d925743ea8bc0f9fc1042",
  "parents": [
    "c78f1484aeb6b35bf1ae905e664a45a0a33e2fde"
  ],
  "author": {
    "name": "Olivier Hainque",
    "email": "hainque@adacore.com",
    "time": "Sat Jun 13 16:56:59 2026 +0000"
  },
  "committer": {
    "name": "Marc Poulhiès",
    "email": "dkm@gcc.gnu.org",
    "time": "Mon Jun 29 13:17:09 2026 +0200"
  },
  "message": "ada: Implement __gnat_get_executable_load_address for Android\n\nEven though Android is a variant of Linux, it doesn\u0027t expose\na _r_debug struct so handily as with GLIBC.  Program headers\nfrom dl_iterate_phdr show name/addr sequences of pairs such as\n\n   dpli_name                                       dpli_addr\n   /system/bin/linker64                            0x720f3d3000\n   /data/data/com.arachnoid.sshelper/home/testone  0x64f217f000 (exe)\n   [vdso]                                          0x720f3d2000\n   /apex/com.android.runtime/lib64/bionic/libc.so  0x720de25000\n   /apex/com.android.runtime/lib64/bionic/libdl.so 0x720ddd6000\n   /system/lib64/libnetd_client.so                 0x720dc83000\n   /system/lib64/libc++.so                         0x720d30b000\n   /apex/com.android.runtime/lib64/bionic/libm.so  0x720dcc3000\n\nThe name is not empty for the executable and there\u0027s no documentation\nsaying it would always come second or so, so this provides no obvious\nreliable means to discriminate the exe load address.\n\nAs a variant of linux, the default link policy for Android authorizes\nundefined refs when creating shared libs, with resolution deferred at least\nuntil the lib is loaded. \"main\" will have to be available then, so resort\nto dladdr(\u0026main) to figure out the main module load address from here.\n\ngcc/ada/ChangeLog:\n\n\t* adaint.c (__gnat_get_executable_load_address): Provide\n\tan implementation based on dladdr(\u0026main) and use it for Android.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9e349d6907c7e00a357ff805b5c52af424f67a1c",
      "old_mode": 33188,
      "old_path": "gcc/ada/adaint.c",
      "new_id": "552b40af07fc8ad9dfc1bab8e4cbd57082e977f9",
      "new_mode": 33188,
      "new_path": "gcc/ada/adaint.c"
    }
  ]
}
