Partially Revert "flash/stm32l4x: introduce flash programming without loader"
[fw/openocd] / src / target / image.h
index 53c27d8129e06431f60e3969df70a390ca9dcb07..5b5d11f6b94485220e9e131ad156df5d9b3bd375 100644 (file)
@@ -8,6 +8,9 @@
  *   Copyright (C) 2008 by Spencer Oliver                                  *
  *   spen@spen-soft.co.uk                                                  *
  *                                                                         *
+ *   Copyright (C) 2018 by Advantest                                       *
+ *   florian.meister@advantest.com                                         *
+ *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
@@ -26,6 +29,7 @@
 #define OPENOCD_TARGET_IMAGE_H
 
 #include <helper/fileio.h>
+#include <helper/replacements.h>
 
 #ifdef HAVE_ELF_H
 #include <elf.h>
@@ -80,8 +84,15 @@ struct image_memory {
 
 struct image_elf {
        struct fileio *fileio;
-       Elf32_Ehdr *header;
-       Elf32_Phdr *segments;
+       bool is_64_bit;
+       union {
+               Elf32_Ehdr *header32;
+               Elf64_Ehdr *header64;
+       };
+       union {
+               Elf32_Phdr *segments32;
+               Elf64_Phdr *segments64;
+       };
        uint32_t segment_count;
        uint8_t endianness;
 };
@@ -92,11 +103,11 @@ struct image_mot {
 };
 
 int image_open(struct image *image, const char *url, const char *type_string);
-int image_read_section(struct image *image, int section, uint32_t offset,
+int image_read_section(struct image *image, int section, target_addr_t offset,
                uint32_t size, uint8_t *buffer, size_t *size_read);
 void image_close(struct image *image);
 
-int image_add_section(struct image *image, uint32_t base, uint32_t size,
+int image_add_section(struct image *image, target_addr_t base, uint32_t size,
                int flags, uint8_t const *data);
 
 int image_calculate_checksum(const uint8_t *buffer, uint32_t nbytes,