Как Вы получаете указатель на раздел .text?

Спасибо, что нашли время, чтобы проверить мою проблему. Когда я добавил предложенный вами URL, я получил следующую ошибку

SQL Error [6783] [VP001]: [Vertica][VJDBC](6783) ERROR: Filesystem does not support glob s3://xxx-xx/test.csv
  [Vertica][VJDBC](6783) ERROR: Filesystem does not support glob s3://xxx-xx/test.csv
    com.vertica.util.ServerException: [Vertica][VJDBC](6783) ERROR: Filesystem does not support glob s3://xxx-xx/test.csv

Это помогло мне найти, что я должен смонтировать мое ведро s3 в vertica [ 114]

https://github.com/vertica/aws-lambda-vertica-loader#set-up-s3-bucket-mounts (шаги здесь)

Обсуждение ( https://forum.vertica.com/discussion/205657/load-data-from-amazon-s3-bucket-to-vertica )

6
задан NoMoreZealots 23 July 2009 в 14:42
поделиться

4 ответа

Необходимо поместить "переменные" в сценарий компоновщика.

В одном из моих проектов у меня есть это в одном из моих разделов:

  __FlashStart = .;

В программе C у меня есть это:

extern unsigned long int _FlashStart;
unsigned long int address = (unsigned long int)&_FlashStart;
4
ответ дан 10 December 2019 в 00:46
поделиться

Определенно было бы легче, если Вы могли бы изменить сценарий компоновщика. Так как Вы не можете, это быть возможными извлечь имена раздела, адреса и размеры от двоичного файла программы. Например, вот то, как можно было бы использовать libbfd для исследования всех секций кода.

#include <bfd.h>

bfd *abfd;
asection *p;
char *filename = "/path/to/my/file";

if ((abfd = bfd_openr(filename, NULL)) == NULL) {
    /* ... error handling */
}

if (!bfd_check_format (abfd, bfd_object)) {
    /* ... error handling */
}

for (p = abfd->sections; p != NULL; p = p->next) {
    bfd_vma  base_addr = bfd_section_vma(abfd, p);
    bfd_size_type size = bfd_section_size (abfd, p);
    const char   *name = bfd_section_name(abfd, p);
    flagword     flags = bfd_get_section_flags(abfd, p);

    if (flags & SEC_CODE) {
        printf("%s: addr=%p size=%d\n", name, base_addr, size);
    }
}

Если Вы только хотите посмотреть на .text сегмент, Вы были бы strcmp против имени раздела.

Оборотная сторона этого подхода? Libbfd лицензируют под GPL, таким образом, Ваш весь проект был бы обременен GPL. Для коммерческого проекта это могло бы быть обреченным на неудачу.

Если Ваш двоичный файл находится в формате ELF, Вы могли бы использовать libelf вместо этого. Я не знаком с тем, как libelf API работают, таким образом, я не могу предоставить код кода. Linux libelf является также GPL, но я полагаю, что проекты BSD имеют свой собственный libelf, который Вы могли использовать.

Править: поскольку Вы работаете над DSP в минимальной среде ОС в реальном времени, этот ответ не собирается работать. Извините, я попробовал.

4
ответ дан 10 December 2019 в 00:46
поделиться

Вы могли разъясниться, каким набором инструментальных средств и архитектурой Вы интересуетесь.

На компиляторе я использую прямо сейчас (IAR ARM C/C++) существуют операторы, встроенные в компилятор, которые возвращаются, сегмент начинают адрес __sfb(...), конечный адрес сегмента __sfe(...), и размер сегмента __sfs(...)

1
ответ дан 10 December 2019 в 00:46
поделиться

Символы, которые Вы ищете, __text__ и __etext__ которые указывают на запуск и конец .text раздел, соответственно.

Можно найти сгенерированный .map полезный файл, поскольку это перечисляет все символы и разделяет определенный в Вашем приложении.

1
ответ дан 10 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

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