X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Flttng-elf.c;h=d6cef2fe8632fe08aa150e7816865e86fd3e79bc;hp=91afcfdea3d19ae0435d655e4b49465064832d07;hb=983a481e7516ab54b3697a28aa16a81f51573152;hpb=b7e59a889b23e90f483f1aec9ca591dd307d32cb diff --git a/src/common/lttng-elf.c b/src/common/lttng-elf.c index 91afcfdea..d6cef2fe8 100644 --- a/src/common/lttng-elf.c +++ b/src/common/lttng-elf.c @@ -1,21 +1,10 @@ /* - * Copyright (C) 2015 Antoine Busque - * Copyright (C) 2017 Francis Deslauriers - * Copyright (C) 2017 Erica Bugden + * Copyright (C) 2015 Antoine Busque + * Copyright (C) 2017 Francis Deslauriers + * Copyright (C) 2017 Erica Bugden * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. + * SPDX-License-Identifier: LGPL-2.1-or-later * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include @@ -144,8 +133,17 @@ dst_sym.st_size = src_sym.st_size; \ } while (0) -/* Both 32bit and 64bit use the same 1 byte field for type. (See elf.h) */ -#define ELF_ST_TYPE(val) ELF32_ST_TYPE(val) +#ifndef ELFCLASSNUM +#define ELFCLASSNUM 3 +#endif + +#ifndef ELFDATANUM +#define ELFDATANUM 3 +#endif + +#ifndef EV_NUM +#define EV_NUM 2 +#endif struct lttng_elf_ehdr { uint16_t e_type; @@ -646,13 +644,14 @@ char *lttng_elf_get_section_data(struct lttng_elf *elf, int ret; off_t section_offset; char *data; - const size_t max_alloc_size = min_t(size_t, MAX_SECTION_DATA_SIZE, - elf->file_size); + size_t max_alloc_size; if (!elf || !shdr) { goto error; } + max_alloc_size = min_t(size_t, MAX_SECTION_DATA_SIZE, elf->file_size); + section_offset = shdr->sh_offset; if (lseek(elf->fd, section_offset, SEEK_SET) < 0) { PERROR("Error seeking to section offset"); @@ -760,7 +759,7 @@ int lttng_elf_get_symbol_offset(int fd, char *symbol, uint64_t *offset) char *curr_sym_str = NULL; char *symbol_table_data = NULL; char *string_table_data = NULL; - char *string_table_name = NULL; + const char *string_table_name = NULL; struct lttng_elf_shdr symtab_hdr; struct lttng_elf_shdr strtab_hdr; struct lttng_elf *elf = NULL; @@ -856,7 +855,8 @@ int lttng_elf_get_symbol_offset(int fd, char *symbol, uint64_t *offset) /* * If the current symbol is not a function; skip to the next symbol. */ - if (ELF_ST_TYPE(curr_sym.st_info) != STT_FUNC) { + /* Both 32bit and 64bit use the same 1 byte field for type. (See elf.h) */ + if (ELF32_ST_TYPE(curr_sym.st_info) != STT_FUNC) { continue; }