Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide whitespace changes
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Text styles
Change appearance
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
FeatherM4CAN to TOOL1RR (linker debug)
Created
last year
Diff never expires
Clear
Export
Share
The two texts are identical
There is no difference to show between these two texts
0 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
188 lines
Copy
0 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
188 lines
Copy
/**
/**
* \file
* \file
*
*
* \brief Linker script for running in internal FLASH on the SAME51N19A
* \brief Linker script for running in internal FLASH on the SAME51N19A
*
*
* Copyright (c) 2017 Microchip Technology Inc.
* Copyright (c) 2017 Microchip Technology Inc.
*
*
* \asf_license_start
* \asf_license_start
*
*
* \page License
* \page License
*
*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: Apache-2.0
*
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
* You may obtain a copy of the Licence at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* See the License for the specific language governing permissions and
* limitations under the License.
* limitations under the License.
*
*
* \asf_license_stop
* \asf_license_stop
*
*
*/
*/
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
OUTPUT_ARCH(arm)
SEARCH_DIR(.)
SEARCH_DIR(.)
/* Memory Spaces Definitions */
/* Memory Spaces Definitions */
MEMORY
MEMORY
{
{
rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000
bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000
qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000
qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000
}
}
/* Section Definitions */
/* Section Definitions */
SECTIONS
SECTIONS
{
{
.text :
.text :
{
{
. = ALIGN(4);
. = ALIGN(4);
_sfixed = .;
_sfixed = .;
KEEP(*(.vectors .vectors.*))
KEEP(*(.vectors .vectors.*))
*(.text .text.* .gnu.linkonce.t.*)
*(.text .text.* .gnu.linkonce.t.*)
*(.glue_7t) *(.glue_7)
*(.glue_7t) *(.glue_7)
*(.rodata .rodata* .gnu.linkonce.r.*)
*(.rodata .rodata* .gnu.linkonce.r.*)
*(.ARM.extab* .gnu.linkonce.armextab.*)
*(.ARM.extab* .gnu.linkonce.armextab.*)
/* Support C constructors, and C destructors in both user code
/* Support C constructors, and C destructors in both user code
and the C library. This also provides support for C++ code. */
and the C library. This also provides support for C++ code. */
. = ALIGN(4);
. = ALIGN(4);
KEEP(*(.init))
KEEP(*(.init))
. = ALIGN(4);
. = ALIGN(4);
__preinit_array_start = .;
__preinit_array_start = .;
KEEP (*(.preinit_array))
KEEP (*(.preinit_array))
__preinit_array_end = .;
__preinit_array_end = .;
. = ALIGN(4);
. = ALIGN(4);
__init_array_start = .;
__init_array_start = .;
KEEP (*(SORT(.init_array.*)))
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
KEEP (*(.init_array))
__init_array_end = .;
__init_array_end = .;
. = ALIGN(4);
. = ALIGN(4);
KEEP (*crtbegin.o(.ctors))
KEEP (*crtbegin.o(.ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(SORT(.ctors.*)))
KEEP (*crtend.o(.ctors))
KEEP (*crtend.o(.ctors))
. = ALIGN(4);
. = ALIGN(4);
KEEP(*(.fini))
KEEP(*(.fini))
. = ALIGN(4);
. = ALIGN(4);
__fini_array_start = .;
__fini_array_start = .;
KEEP (*(.fini_array))
KEEP (*(.fini_array))
KEEP (*(SORT(.fini_array.*)))
KEEP (*(SORT(.fini_array.*)))
__fini_array_end = .;
__fini_array_end = .;
KEEP (*crtbegin.o(.dtors))
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(SORT(.dtors.*)))
KEEP (*crtend.o(.dtors))
KEEP (*crtend.o(.dtors))
. = ALIGN(4);
. = ALIGN(4);
_efixed = .; /* End of text section */
_efixed = .; /* End of text section */
} > rom
} > rom
/* .ARM.exidx is sorted, so has to go in its own output section. */
/* .ARM.exidx is sorted, so has to go in its own output section. */
PROVIDE_HIDDEN (__exidx_start = .);
PROVIDE_HIDDEN (__exidx_start = .);
.ARM.exidx :
.ARM.exidx :
{
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > rom
} > rom
PROVIDE_HIDDEN (__exidx_end = .);
PROVIDE_HIDDEN (__exidx_end = .);
. = ALIGN(4);
. = ALIGN(4);
_etext = .;
_etext = .;
/* CAN message buffers must be in the first 64K of RAM */
/* CAN message buffers must be in the first 64K of RAM */
.canMessage (NOLOAD) :
.canMessage (NOLOAD) :
{
{
. = ALIGN(4);
. = ALIGN(4);
_sCanMessage = . ;
_sCanMessage = . ;
*(.CanMessage .CanMessage.*)
*(.CanMessage .CanMessage.*)
. = ALIGN(4);
. = ALIGN(4);
_eCanMessage = . ;
_eCanMessage = . ;
} > ram
} > ram
/* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */
/* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */
.dmaBuffers (NOLOAD) :
.dmaBuffers (NOLOAD) :
{
{
. = ALIGN(16);
. = ALIGN(16);
_sDmaBuffers = . ;
_sDmaBuffers = . ;
*(.DmaBuffers .DmaBuffers.*)
*(.DmaBuffers .DmaBuffers.*)
. = ALIGN(4);
. = ALIGN(4);
_eDmaBuffers = . ;
_eDmaBuffers = . ;
} > ram
} > ram
.relocate : AT (_etext)
.relocate : AT (_etext)
{
{
. = ALIGN(4);
. = ALIGN(4);
_srelocate = .;
_srelocate = .;
*(.ramfunc .ramfunc.*);
*(.ramfunc .ramfunc.*);
*(.data .data.*);
*(.data .data.*);
. = ALIGN(4);
. = ALIGN(4);
_erelocate = .;
_erelocate = .;
} > ram
} > ram
_firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */
_firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */
.bkupram (NOLOAD):
.bkupram (NOLOAD):
{
{
. = ALIGN(8);
. = ALIGN(8);
_sbkupram = .;
_sbkupram = .;
*(.bkupram .bkupram.*);
*(.bkupram .bkupram.*);
. = ALIGN(8);
. = ALIGN(8);
_ebkupram = .;
_ebkupram = .;
} > bkupram
} > bkupram
.qspi (NOLOAD):
.qspi (NOLOAD):
{
{
. = ALIGN(8);
. = ALIGN(8);
_sqspi = .;
_sqspi = .;
*(.qspi .qspi.*);
*(.qspi .qspi.*);
. = ALIGN(8);
. = ALIGN(8);
_eqspi = .;
_eqspi = .;
} > qspi
} > qspi
/* .bss section which is used for uninitialized data */
/* .bss section which is used for uninitialized data */
.bss (NOLOAD) :
.bss (NOLOAD) :
{
{
. = ALIGN(4);
. = ALIGN(4);
_sbss = . ;
_sbss = . ;
_szero = .;
_szero = .;
*(.bss .bss.*)
*(.bss .bss.*)
*(COMMON)
*(COMMON)
. = ALIGN(4);
. = ALIGN(4);
_ebss = . ;
_ebss = . ;
_ezero = .;
_ezero = .;
} > ram
} > ram
. = ALIGN(4);
. = ALIGN(4);
_end = . ;
_end = . ;
/* .stack_dummy section doesn't contains any symbols. It is only
/* .stack_dummy section doesn't contains any symbols. It is only
used for linker to calculate size of stack sections, and assign
used for linker to calculate size of stack sections, and assign
values to stack symbols later */
values to stack symbols later */
.stack_dummy :
.stack_dummy :
{
{
*(.stack*)
*(.stack*)
} > ram
} > ram
/* Set stack top to end of ram, and stack limit move down by
/* Set stack top to end of ram, and stack limit move down by
* size of stack_dummy section */
* size of stack_dummy section */
__StackTop = ORIGIN(ram) + LENGTH(ram);
__StackTop = ORIGIN(ram) + LENGTH(ram);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(_sstack = __StackLimit);
PROVIDE(_sstack = __StackLimit);
PROVIDE(_estack = __StackTop);
PROVIDE(_estack = __StackTop);
}
}
Saved diffs
Original text
Open file
/** * \file * * \brief Linker script for running in internal FLASH on the SAME51N19A * * Copyright (c) 2017 Microchip Technology Inc. * * \asf_license_start * * \page License * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the Licence at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * \asf_license_stop * */ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) SEARCH_DIR(.) /* Memory Spaces Definitions */ MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000 ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000 bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 } /* Section Definitions */ SECTIONS { .text : { . = ALIGN(4); _sfixed = .; KEEP(*(.vectors .vectors.*)) *(.text .text.* .gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) *(.rodata .rodata* .gnu.linkonce.r.*) *(.ARM.extab* .gnu.linkonce.armextab.*) /* Support C constructors, and C destructors in both user code and the C library. This also provides support for C++ code. */ . = ALIGN(4); KEEP(*(.init)) . = ALIGN(4); __preinit_array_start = .; KEEP (*(.preinit_array)) __preinit_array_end = .; . = ALIGN(4); __init_array_start = .; KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) __init_array_end = .; . = ALIGN(4); KEEP (*crtbegin.o(.ctors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*crtend.o(.ctors)) . = ALIGN(4); KEEP(*(.fini)) . = ALIGN(4); __fini_array_start = .; KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) __fini_array_end = .; KEEP (*crtbegin.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*crtend.o(.dtors)) . = ALIGN(4); _efixed = .; /* End of text section */ } > rom /* .ARM.exidx is sorted, so has to go in its own output section. */ PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > rom PROVIDE_HIDDEN (__exidx_end = .); . = ALIGN(4); _etext = .; /* CAN message buffers must be in the first 64K of RAM */ .canMessage (NOLOAD) : { . = ALIGN(4); _sCanMessage = . ; *(.CanMessage .CanMessage.*) . = ALIGN(4); _eCanMessage = . ; } > ram /* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */ .dmaBuffers (NOLOAD) : { . = ALIGN(16); _sDmaBuffers = . ; *(.DmaBuffers .DmaBuffers.*) . = ALIGN(4); _eDmaBuffers = . ; } > ram .relocate : AT (_etext) { . = ALIGN(4); _srelocate = .; *(.ramfunc .ramfunc.*); *(.data .data.*); . = ALIGN(4); _erelocate = .; } > ram _firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */ .bkupram (NOLOAD): { . = ALIGN(8); _sbkupram = .; *(.bkupram .bkupram.*); . = ALIGN(8); _ebkupram = .; } > bkupram .qspi (NOLOAD): { . = ALIGN(8); _sqspi = .; *(.qspi .qspi.*); . = ALIGN(8); _eqspi = .; } > qspi /* .bss section which is used for uninitialized data */ .bss (NOLOAD) : { . = ALIGN(4); _sbss = . ; _szero = .; *(.bss .bss.*) *(COMMON) . = ALIGN(4); _ebss = . ; _ezero = .; } > ram . = ALIGN(4); _end = . ; /* .stack_dummy section doesn't contains any symbols. It is only used for linker to calculate size of stack sections, and assign values to stack symbols later */ .stack_dummy : { *(.stack*) } > ram /* Set stack top to end of ram, and stack limit move down by * size of stack_dummy section */ __StackTop = ORIGIN(ram) + LENGTH(ram); __StackLimit = __StackTop - SIZEOF(.stack_dummy); PROVIDE(_sstack = __StackLimit); PROVIDE(_estack = __StackTop); }
Changed text
Open file
/** * \file * * \brief Linker script for running in internal FLASH on the SAME51N19A * * Copyright (c) 2017 Microchip Technology Inc. * * \asf_license_start * * \page License * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the Licence at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * \asf_license_stop * */ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) SEARCH_DIR(.) /* Memory Spaces Definitions */ MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000 ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000 bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 } /* Section Definitions */ SECTIONS { .text : { . = ALIGN(4); _sfixed = .; KEEP(*(.vectors .vectors.*)) *(.text .text.* .gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) *(.rodata .rodata* .gnu.linkonce.r.*) *(.ARM.extab* .gnu.linkonce.armextab.*) /* Support C constructors, and C destructors in both user code and the C library. This also provides support for C++ code. */ . = ALIGN(4); KEEP(*(.init)) . = ALIGN(4); __preinit_array_start = .; KEEP (*(.preinit_array)) __preinit_array_end = .; . = ALIGN(4); __init_array_start = .; KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) __init_array_end = .; . = ALIGN(4); KEEP (*crtbegin.o(.ctors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*crtend.o(.ctors)) . = ALIGN(4); KEEP(*(.fini)) . = ALIGN(4); __fini_array_start = .; KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) __fini_array_end = .; KEEP (*crtbegin.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*crtend.o(.dtors)) . = ALIGN(4); _efixed = .; /* End of text section */ } > rom /* .ARM.exidx is sorted, so has to go in its own output section. */ PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > rom PROVIDE_HIDDEN (__exidx_end = .); . = ALIGN(4); _etext = .; /* CAN message buffers must be in the first 64K of RAM */ .canMessage (NOLOAD) : { . = ALIGN(4); _sCanMessage = . ; *(.CanMessage .CanMessage.*) . = ALIGN(4); _eCanMessage = . ; } > ram /* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */ .dmaBuffers (NOLOAD) : { . = ALIGN(16); _sDmaBuffers = . ; *(.DmaBuffers .DmaBuffers.*) . = ALIGN(4); _eDmaBuffers = . ; } > ram .relocate : AT (_etext) { . = ALIGN(4); _srelocate = .; *(.ramfunc .ramfunc.*); *(.data .data.*); . = ALIGN(4); _erelocate = .; } > ram _firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */ .bkupram (NOLOAD): { . = ALIGN(8); _sbkupram = .; *(.bkupram .bkupram.*); . = ALIGN(8); _ebkupram = .; } > bkupram .qspi (NOLOAD): { . = ALIGN(8); _sqspi = .; *(.qspi .qspi.*); . = ALIGN(8); _eqspi = .; } > qspi /* .bss section which is used for uninitialized data */ .bss (NOLOAD) : { . = ALIGN(4); _sbss = . ; _szero = .; *(.bss .bss.*) *(COMMON) . = ALIGN(4); _ebss = . ; _ezero = .; } > ram . = ALIGN(4); _end = . ; /* .stack_dummy section doesn't contains any symbols. It is only used for linker to calculate size of stack sections, and assign values to stack symbols later */ .stack_dummy : { *(.stack*) } > ram /* Set stack top to end of ram, and stack limit move down by * size of stack_dummy section */ __StackTop = ORIGIN(ram) + LENGTH(ram); __StackLimit = __StackTop - SIZEOF(.stack_dummy); PROVIDE(_sstack = __StackLimit); PROVIDE(_estack = __StackTop); }
Find difference