Существует ли способ осмотреть текущий rpath на Linux?

Я знаю, что возможно использовать readelf -d <elf> | grep RPATH для осмотра данного двоичного файла от оболочки но действительно ли возможно сделать это в рамках процесса?

Что-то как (мой полностью составил системный вызов):

  /* get a copy of current rpath into buffer */
  sys_get_current_rpath(&buffer);

Я пытаюсь диагностировать некоторого подозреваемого НАСТОЛЬКО связывающиеся проблемы в нашей кодовой базе и хотел бы осмотреть RPATH этот путь, если возможный (я не должен буду скорее порождать внешний сценарий).

68
задан Piotr Dobrogost 14 August 2018 в 14:59
поделиться

1 ответ

#include <stdio.h>
#include <elf.h>
#include <link.h>

int main()
{
  const ElfW(Dyn) *dyn = _DYNAMIC;
  const ElfW(Dyn) *rpath = NULL;
  const char *strtab = NULL;
  for (; dyn->d_tag != DT_NULL; ++dyn) {
    if (dyn->d_tag == DT_RPATH) {
      rpath = dyn;
    } else if (dyn->d_tag == DT_STRTAB) {
      strtab = (const char *)dyn->d_un.d_val;
    }
  }

  if (strtab != NULL && rpath != NULL) {
    printf("RPATH: %s\n", strtab + rpath->d_un.d_val);
  }
  return 0;
}
46
ответ дан 24 November 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: