port: ELF_ST_TYPE is defined in elf.h on FreeBSD
[lttng-tools.git] / src / common / lttng-elf.c
index 91afcfdea3d19ae0435d655e4b49465064832d07..d6cef2fe8632fe08aa150e7816865e86fd3e79bc 100644 (file)
@@ -1,21 +1,10 @@
 /*
- * Copyright (C) 2015  Antoine Busque <abusque@efficios.com>
- * Copyright (C) 2017  Francis Deslauriers <francis.deslauriers@efficios.com>
- * Copyright (C) 2017  Erica Bugden <erica.bugden@efficios.com>
+ * Copyright (C) 2015 Antoine Busque <abusque@efficios.com>
+ * Copyright (C) 2017 Francis Deslauriers <francis.deslauriers@efficios.com>
+ * Copyright (C) 2017 Erica Bugden <erica.bugden@efficios.com>
  *
- * 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 <common/compat/endian.h>
                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;
                }
 
This page took 0.023636 seconds and 4 git commands to generate.