Python-ELMO is a Python library which offers an encapsulation of the binary tool ELMO, in order to manipulate it easily in Python and SageMath script.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

project.ld 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /*
  2. * University of Bristol – Open Access Software Licence
  3. * Copyright (c) 2016, The University of Bristol, a chartered
  4. * corporation having Royal Charter number RC000648 and a charity
  5. * (number X1121) and its place of administration being at Senate
  6. * House, Tyndall Avenue, Bristol, BS8 1TH, United Kingdom.
  7. * All rights reserved
  8. *
  9. * Redistribution and use in source and binary forms, with or without
  10. * modification, are permitted provided that the following conditions
  11. * are met:
  12. *
  13. * 1. Redistributions of source code must retain the above copyright
  14. * notice, this list of conditions and the following disclaimer.
  15. *
  16. * 2. Redistributions in binary form must reproduce the above
  17. * copyright notice, this list of conditions and the following
  18. * disclaimer in the documentation and/or other materials provided
  19. * with the distribution.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  24. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  25. * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  26. * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  27. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  28. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  30. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  31. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  32. * OF THE POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. * Any use of the software for scientific publications or commercial
  35. * purposes should be reported to the University of Bristol
  36. * (OSI-notifications@bristol.ac.uk and quote reference 2668). This is
  37. * for impact and usage monitoring purposes only.
  38. *
  39. * Enquiries about further applications and development opportunities
  40. * are welcome. Please contact elisabeth.oswald@bristol.ac.uk
  41. */
  42. /*
  43. * This file was based on files that are part of the libopencm3 project.
  44. * See below for licecning information.
  45. *
  46. * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
  47. * Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com>
  48. *
  49. * This library is free software: you can redistribute it and/or modify
  50. * it under the terms of the GNU Lesser General Public License as published by
  51. * the Free Software Foundation, either version 3 of the License, or
  52. * (at your option) any later version.
  53. *
  54. * This library is distributed in the hope that it will be useful,
  55. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  56. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  57. * GNU Lesser General Public License for more details.
  58. *
  59. * You should have received a copy of the GNU Lesser General Public License
  60. * along with this library. If not, see <http://www.gnu.org/licenses/>.
  61. */
  62. /* Linker script for ST STM32F0DISCOVERY (STM32F051R8T6, 64K flash, 8K RAM). */
  63. /* Define memory regions. */
  64. MEMORY
  65. {
  66. rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K
  67. ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K
  68. }
  69. /* Generic linker script for STM32 targets using libopencm3. */
  70. /* Memory regions must be defined in the ld script which includes this one. */
  71. /* Enforce emmition of the vector table. */
  72. EXTERN (vector_table)
  73. /* Define the entry point of the output file. */
  74. ENTRY(reset_handler)
  75. /* Define sections. */
  76. SECTIONS
  77. {
  78. .text : {
  79. *(.vectors) /* Vector table */
  80. *(.text*) /* Program code */
  81. . = ALIGN(4);
  82. *(.rodata*) /* Read-only data */
  83. . = ALIGN(4);
  84. } >rom
  85. /* C++ Static constructors/destructors, also used for __attribute__
  86. * ((constructor)) and the likes */
  87. .preinit_array : {
  88. . = ALIGN(4);
  89. __preinit_array_start = .;
  90. KEEP (*(.preinit_array))
  91. __preinit_array_end = .;
  92. } >rom
  93. .init_array : {
  94. . = ALIGN(4);
  95. __init_array_start = .;
  96. KEEP (*(SORT(.init_array.*)))
  97. KEEP (*(.init_array))
  98. __init_array_end = .;
  99. } >rom
  100. .fini_array : {
  101. . = ALIGN(4);
  102. __fini_array_start = .;
  103. KEEP (*(.fini_array))
  104. KEEP (*(SORT(.fini_array.*)))
  105. __fini_array_end = .;
  106. } >rom
  107. /*
  108. * Another section used by C++ stuff, appears when using newlib with
  109. * 64bit (long long) printf support
  110. */
  111. .ARM.extab : {
  112. *(.ARM.extab*)
  113. } >rom
  114. .ARM.exidx : {
  115. __exidx_start = .;
  116. *(.ARM.exidx*)
  117. __exidx_end = .;
  118. } >rom
  119. . = ALIGN(4);
  120. _etext = .;
  121. .data : {
  122. _data = .;
  123. *(.data*) /* Read-write initialized data */
  124. . = ALIGN(4);
  125. _edata = .;
  126. } >ram AT >rom
  127. _data_loadaddr = LOADADDR(.data);
  128. .bss : {
  129. *(.bss*) /* Read-write zero initialized data */
  130. *(COMMON)
  131. . = ALIGN(4);
  132. _ebss = .;
  133. } >ram
  134. /*
  135. * The .eh_frame section appears to be used for C++ exception handling.
  136. * You may need to fix this if you're using C++.
  137. */
  138. /DISCARD/ : { *(.eh_frame) }
  139. . = ALIGN(4);
  140. end = .;
  141. }
  142. PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram));